31char base_val_theta_funct_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Base_val/base_val_theta_funct.C,v 1.9 2014/10/13 08:52:39 j_novak Exp $" ;
86#include "type_parite.h"
91void theta_funct_pas_prevu(
int,
double*) ;
92void theta_funct_cos(
int,
double*) ;
93void theta_funct_sin(
int,
double*) ;
94void theta_funct_cos_p(
int,
double*) ;
95void theta_funct_cos_i(
int,
double*) ;
96void theta_funct_sin_p(
int,
double*) ;
97void theta_funct_sin_i(
int,
double*) ;
98void theta_funct_cossin_cp(
int,
double*) ;
99void theta_funct_cossin_ci(
int,
double*) ;
100void theta_funct_cossin_sp(
int,
double*) ;
101void theta_funct_cossin_si(
int,
double*) ;
102void theta_funct_cossin_c(
int,
double*) ;
103void theta_funct_cossin_s(
int,
double*) ;
111 const int nmax = 20 ;
112 static int nb_done = 0 ;
113 static int base_t_done[nmax] ;
114 static int nt_done[nmax] ;
115 static Tbl* tab[nmax] ;
117 static void(*vbasecol[
MAX_BASE])(int,
double*) ;
120 static int premier_appel = 1 ;
124 if (premier_appel == 1) {
129 vbasecol[i] = theta_funct_pas_prevu ;
169 for (
int i=0; i<nb_done; i++) {
170 if ( (base_t_done[i] == base_t) && (nt_done[i] == nt) ) {
178 if ( nb_done >= nmax ) {
179 cout <<
"Base_val::theta_functions : nb_done >= nmax ! " << endl ;
185 tab[index] =
new Tbl( dim2[base_t], nt, nt ) ;
186 (tab[index])->set_etat_qcq() ;
188 vbasecol[base_t](nt, (tab[index])->t ) ;
190 base_t_done[index] = base_t ;
191 nt_done[index] = nt ;
197 return *(tab[index]) ;
210void theta_funct_pas_prevu(
int,
double*) {
212 cout <<
"Base_val::theta_functions : theta basis not implemented !"
222void theta_funct_cos(
int nt,
double* ff) {
224 double xx = ( nt > 1 ? M_PI / double(nt-1) : 0.) ;
226 for (
int i = 0; i < nt ; i++ ) {
227 for (
int j = 0; j < nt ; j++ ) {
228 double theta = xx*j ;
229 ff[nt*i+ j] =
cos(i * theta);
239void theta_funct_sin(
int nt,
double* ff) {
241 double xx = ( nt > 1 ? M_PI / double(nt-1) : 0.) ;
243 for (
int i = 0; i < nt ; i++ ) {
244 for (
int j = 0; j < nt ; j++ ) {
245 double theta = xx*j ;
246 ff[nt*i+ j] =
sin(i * theta);
256void theta_funct_cos_p(
int nt,
double* ff) {
258 double xx = ( nt > 1 ? M_PI / double(2*(nt-1)) : 0.) ;
260 for (
int i = 0; i < nt ; i++ ) {
261 for (
int j = 0; j < nt ; j++ ) {
262 double theta = xx*j ;
263 ff[nt*i+ j] =
cos(2*i * theta);
273void theta_funct_cos_i(
int nt,
double* ff) {
275 double xx = ( nt > 1 ? M_PI / double(2*(nt-1)) : 0.) ;
277 for (
int i = 0; i < nt ; i++ ) {
278 for (
int j = 0; j < nt ; j++ ) {
279 double theta = xx*j ;
280 ff[nt*i+ j] =
cos((2*i+1) * theta);
290void theta_funct_sin_p(
int nt,
double* ff) {
292 double xx = ( nt > 1 ? M_PI / double(2*(nt-1)) : 0.) ;
294 for (
int i = 0; i < nt ; i++ ) {
295 for (
int j = 0; j < nt ; j++ ) {
296 double theta = xx*j ;
297 ff[nt*i+ j] =
sin(2*i * theta);
307void theta_funct_sin_i(
int nt,
double* ff) {
309 double xx = ( nt > 1 ? M_PI / double(2*(nt-1)) : 0.) ;
311 for (
int i = 0; i < nt ; i++ ) {
312 for (
int j = 0; j < nt ; j++ ) {
313 double theta = xx*j ;
314 ff[nt*i+ j] =
sin((2*i+1) * theta);
324void theta_funct_cossin_cp(
int nt,
double* ff) {
328 double xx = ( nt > 1 ? M_PI / double(2*(nt-1)) : 0.) ;
332 for (
int i = 0; i < nt ; i++ ) {
333 for (
int j = 0; j < nt ; j++ ) {
334 double theta = xx*j ;
335 ff[nt*i+ j] =
cos(2*i * theta);
342 for (
int i = 0; i < nt-1 ; i++ ) {
343 for (
int j = 0; j < nt ; j++ ) {
344 double theta = xx*j ;
345 ff[nt2+nt*i+ j] =
sin((2*i+1) * theta);
349 for (
int j = 0; j < nt ; j++ ) {
350 ff[nt2+nt*(nt-1) + j] = 0 ;
360void theta_funct_cossin_ci(
int nt,
double* ff) {
364 double xx = ( nt > 1 ? M_PI / double(2*(nt-1)) : 0.) ;
368 for (
int i = 0; i < nt ; i++ ) {
369 for (
int j = 0; j < nt ; j++ ) {
370 double theta = xx*j ;
371 ff[nt*i+ j] =
cos((2*i+1) * theta);
378 for (
int i = 0; i < nt-1 ; i++ ) {
379 for (
int j = 0; j < nt ; j++ ) {
380 double theta = xx*j ;
381 ff[nt2+nt*i+ j] =
sin(2*i * theta);
385 for (
int j = 0; j < nt ; j++ ) {
386 ff[nt2+nt*(nt-1) + j] = 0 ;
397void theta_funct_cossin_sp(
int nt,
double* ff) {
401 double xx = ( nt > 1 ? M_PI / double(2*(nt-1)) : 0.) ;
405 for (
int i = 0; i < nt ; i++ ) {
406 for (
int j = 0; j < nt ; j++ ) {
407 double theta = xx*j ;
408 ff[nt*i+ j] =
sin(2*i * theta);
415 for (
int i = 0; i < nt-1 ; i++ ) {
416 for (
int j = 0; j < nt ; j++ ) {
417 double theta = xx*j ;
418 ff[nt2+nt*i+ j] =
cos((2*i+1) * theta);
422 for (
int j = 0; j < nt ; j++ ) {
423 ff[nt2+nt*(nt-1) + j] = 0 ;
433void theta_funct_cossin_si(
int nt,
double* ff) {
437 double xx = ( nt > 1 ? M_PI / double(2*(nt-1)) : 0.) ;
441 for (
int i = 0; i < nt ; i++ ) {
442 for (
int j = 0; j < nt ; j++ ) {
443 double theta = xx*j ;
444 ff[nt*i+ j] =
sin((2*i+1) * theta);
451 for (
int i = 0; i < nt-1 ; i++ ) {
452 for (
int j = 0; j < nt ; j++ ) {
453 double theta = xx*j ;
454 ff[nt2+nt*i+ j] =
cos(2*i * theta);
458 for (
int j = 0; j < nt ; j++ ) {
459 ff[nt2+nt*(nt-1) + j] = 0 ;
469void theta_funct_cossin_c(
int nt,
double* ff) {
473 double xx = ( nt > 1 ? M_PI / double(nt-1) : 0.) ;
477 for (
int i = 0; i < nt ; i++ ) {
478 for (
int j = 0; j < nt ; j++ ) {
479 double theta = xx*j ;
480 ff[nt*i+ j] =
cos(i * theta);
487 for (
int i = 0; i < nt-1 ; i++ ) {
488 for (
int j = 0; j < nt ; j++ ) {
489 double theta = xx*j ;
490 ff[nt2+nt*i+ j] =
sin(i * theta);
494 for (
int j = 0; j < nt ; j++ ) {
495 ff[nt2+nt*(nt-1) + j] = 0 ;
505void theta_funct_cossin_s(
int nt,
double* ff) {
509 double xx = ( nt > 1 ? M_PI / double(nt-1) : 0.) ;
513 for (
int i = 0; i < nt-1 ; i++ ) {
514 for (
int j = 0; j < nt ; j++ ) {
515 double theta = xx*j ;
516 ff[nt*i+ j] =
sin(i * theta);
520 for (
int j = 0; j < nt ; j++ ) {
521 ff[nt*(nt-1) + j] = 0 ;
527 for (
int i = 0; i < nt ; i++ ) {
528 for (
int j = 0; j < nt ; j++ ) {
529 double theta = xx*j ;
530 ff[nt2+nt*i+ j] =
cos(i * theta);
int * b
Array (size: nzone ) of the spectral basis in each domain.
const Tbl & theta_functions(int l, int nt) const
Values of the theta basis functions at the theta collocation points.
Cmp sin(const Cmp &)
Sine.
Cmp cos(const Cmp &)
Cosine.
#define TRA_T
Translation en Theta, used for a bitwise shift (in hex)
#define MAX_BASE
Nombre max. de bases differentes.
#define T_COSSIN_SP
sin pair-cos impair alternes, sin pour m=0
#define T_SIN_P
dev. sin seulement, harmoniques paires
#define T_COSSIN_S
dev. cos-sin alternes, sin pour m=0
#define T_COSSIN_SI
sin impair-cos pair alternes, sin pour m=0
#define T_COS_P
dev. cos seulement, harmoniques paires
#define T_COSSIN_CI
cos impair-sin pair alternes, cos pour m=0
#define MSQ_T
Extraction de l'info sur Theta.
#define T_COSSIN_CP
cos pair-sin impair alternes, cos pour m=0
#define T_SIN_I
dev. sin seulement, harmoniques impaires
#define T_COS
dev. cos seulement
#define T_SIN
dev. sin seulement
#define T_COS_I
dev. cos seulement, harmoniques impaires
#define T_COSSIN_C
dev. cos-sin alternes, cos pour m=0