29char base_val_phi_funct_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Base_val/base_val_phi_funct.C,v 1.7 2014/10/13 08:52:39 j_novak Exp $" ;
74#include "type_parite.h"
79void phi_funct_pas_prevu(
int,
double*) ;
80void phi_funct_cossin(
int,
double*) ;
81void phi_funct_cossin_p(
int,
double*) ;
82void phi_funct_cossin_i(
int,
double*) ;
91 static int nb_done = 0 ;
92 static int base_p_done[nmax] ;
93 static int np_done[nmax] ;
94 static Tbl* tab[nmax] ;
96 static void(*vbasecol[
MAX_BASE_2])(int,
double*) ;
98 static int premier_appel = 1 ;
102 if (premier_appel == 1) {
107 vbasecol[i] = phi_funct_pas_prevu ;
124 for (
int i=0; i<nb_done; i++) {
125 if ( (base_p_done[i] == base_p) && (np_done[i] == np) ) {
133 if ( nb_done >= nmax ) {
134 cout <<
"Base_val::phi_functions : nb_done >= nmax ! " << endl ;
140 tab[index] =
new Tbl( np+1, np ) ;
141 (tab[index])->set_etat_qcq() ;
143 vbasecol[base_p](np, (tab[index])->t ) ;
145 base_p_done[index] = base_p ;
146 np_done[index] = np ;
152 return *(tab[index]) ;
165void phi_funct_pas_prevu(
int,
double*) {
167 cout <<
"Base_val::phi_functions : phi basis not implemented !"
177void phi_funct_cossin(
int np,
double* ff) {
179 double xx = 2.*M_PI / double(np) ;
186 for (
int i = 0; i < np-1 ; i+=2 ) {
188 for (
int k = 0; k < np ; k++ ) {
190 ff[np*i + k] =
cos(m * phi) ;
191 ff[np*(i+1) + k] =
sin(m * phi) ;
195 for (
int k = 0; k < np ; k++ ) {
197 ff[np*np + k] =
cos(np/2 * phi) ;
207void phi_funct_cossin_p(
int np,
double* ff) {
209 double xx = M_PI/double(np) ;
211 for (
int i = 0; i < np+1 ; i+=2 ) {
212 for (
int k = 0; k < np ; k++ ) {
214 ff[np*i+ k] =
cos(i * phi);
218 for (
int i = 1; i < np ; i+=2 ) {
219 for (
int k = 0; k < np ; k++ ) {
221 ff[np*i+ k] =
sin((i-1) * phi);
232void phi_funct_cossin_i(
int np,
double* ff) {
234 double xx = M_PI/double(np) ;
236 for (
int i = 0; i < np+1 ; i+=2 ) {
237 for (
int k = 0; k < np ; k++ ) {
239 ff[np*i+ k] =
sin(i * phi);
243 for (
int i = 1; i < np ; i+=2 ) {
244 for (
int k = 0; k < np ; k++ ) {
246 ff[np*i+ k] =
cos((i-1) * phi);
int * b
Array (size: nzone ) of the spectral basis in each domain.
const Tbl & phi_functions(int l, int np) const
Values of the phi basis functions at the phi collocation points.
Cmp sin(const Cmp &)
Sine.
Cmp cos(const Cmp &)
Cosine.
#define MAX_BASE_2
Smaller maximum bases used for phi (and higher dimensions for now)
#define P_COSSIN_P
dev. sur Phi = 2*phi, freq. paires
#define P_COSSIN
dev. standart
#define P_COSSIN_I
dev. sur Phi = 2*phi, freq. impaires
#define MSQ_P
Extraction de l'info sur Phi.
#define TRA_P
Translation en Phi, used for a bitwise shift (in hex)