136 void ipasprevu_r(
const int*,
const int*,
double*,
const int*,
double*) ;
137 void ipasprevu_t(
const int*,
const int*,
double*,
const int*,
double*) ;
138 void ipasprevu_p(
const int* ,
const int* ,
const int* ,
double* ,
double* ) ;
139 void ibase_non_def_r(
const int*,
const int*,
double*,
const int*,
double*) ;
140 void ibase_non_def_t(
const int*,
const int*,
double*,
const int*,
double*) ;
141 void ibase_non_def_p(
const int* ,
const int* ,
const int* ,
double* ,
double* ) ;
146 static void (*invcf_r[
MAX_BASE])(
const int*,
const int*,
double*,
const int*,
double*) ;
147 static void (*invcf_t[
MAX_BASE])(
const int*,
const int*,
double*,
const int*,
double*) ;
148 static void (*invcf_p[
MAX_BASE_2])(
const int* ,
const int* ,
const int*,
double* ,
double* ) ;
149 static int premier_appel = 1 ;
156 invcf_r[i] = ipasprevu_r ;
157 invcf_t[i] = ipasprevu_t ;
159 invcf_p[i/2] = ipasprevu_p ;
163 invcf_r[
NONDEF] = ibase_non_def_r ;
177 invcf_t[
NONDEF] = ibase_non_def_t ;
200 invcf_p[
NONDEF] = ibase_non_def_p ;
212 if (
etat == ETATZERO) {
217 assert(
etat != ETATNONDEF) ;
225 assert(
c_cf != 0x0) ;
233 for (
int l=0; l<nz; l++) {
267 double* trav =
new double[ntot] ;
282 for (
int i=0; i<ntot; i++) {
287 invcf_r[base_r]( deg, dimc, (cf->
t), dimc, trav ) ;
299 (vbase_t ==
T_LEG) ) {
313 ipasprevu_t(deg, dimc, trav, deg, (f->
t) ) ;
315 invcf_t[base_t]( deg, dimc, trav, deg, (f->
t) ) ;
328 ipasprevu_t(deg, dimc, trav, dimc, trav ) ;
330 invcf_t[base_t]( deg, dimc, trav, dimc, trav ) ;
332 invcf_p[base_p]( deg, dimc, deg, trav, (f->
t) ) ;
344 void ipasprevu_r(
const int*,
const int*,
double*,
const int*,
double*) {
345 cout <<
"Valeur::coef_i: the required expansion basis in r " << endl ;
346 cout <<
" is not implemented !" << endl ;
350 void ipasprevu_t(
const int*,
const int*,
double*,
const int*,
double* ) {
351 cout <<
"Valeur::coef_i: the required expansion basis in theta " << endl ;
352 cout <<
" is not implemented !" << endl ;
356 void ipasprevu_p(
const int*,
const int*,
const int*,
double*,
double* ) {
357 cout <<
"Valeur::coef_i: the required expansion basis in phi " << endl ;
358 cout <<
" is not implemented !" << endl ;
362 void ibase_non_def_r(
const int*,
const int*,
double*,
const int*,
double*) {
363 cout <<
"Valeur::coef_i: the expansion basis in r is undefined !" << endl ;
367 void ibase_non_def_t(
const int*,
const int*,
double*,
const int*,
double*) {
368 cout <<
"Valeur::coef_i: the expansion basis in theta is undefined !" 373 void ibase_non_def_p(
const int*,
const int*,
const int*,
double*,
double*) {
374 cout <<
"Valeur::coef_i: the expansion basis in phi is undefined !" << endl ;
#define T_LEG
fct. de Legendre associees
#define MAX_BASE_2
Smaller maximum bases used for phi (and higher dimensions for now)
Mtbl_cf * c_cf
Coefficients of the spectral expansion of the function.
#define T_LEG_MP
fct. de Legendre associees avec m pair
#define P_COSSIN
dev. standart
Cmp sqrt(const Cmp &)
Square root.
#define T_LEG_PI
fct. de Legendre associees paires avec m impair
#define TRA_P
Translation en Phi, used for a bitwise shift (in hex)
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define T_LEG_MI
fct. de Legendre associees avec m impair
#define TRA_T
Translation en Theta, used for a bitwise shift (in hex)
void coef_i() const
Computes the physical value of *this.
#define MSQ_P
Extraction de l'info sur Phi.
#define T_COS
dev. cos seulement
#define T_COSSIN_SP
sin pair-cos impair alternes, sin pour m=0
int get_etat() const
Gives the logical state.
#define R_LEGP
base de Legendre paire (rare) seulement
#define R_LEGI
base de Legendre impaire (rare) seulement
#define R_JACO02
base de Jacobi(0,2) ordinaire (finjac)
#define T_SIN
dev. sin seulement
void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
#define TRA_R
Translation en R, used for a bitwise shift (in hex)
const Mg3d * mg
Multi-grid Mgd3 on which this is defined.
#define T_LEG_I
fct. de Legendre associees impaires
#define T_COS_I
dev. cos seulement, harmoniques impaires
#define R_CHEBI
base de Cheb. impaire (rare) seulement
#define R_CHEBP
base de Cheb. paire (rare) seulement
#define T_COS_P
dev. cos seulement, harmoniques paires
#define MSQ_T
Extraction de l'info sur Theta.
#define T_COSSIN_C
dev. cos-sin alternes, cos pour m=0
Base_val base
Bases on which the spectral expansion is performed.
double * t
The array of double.
Mtbl * c
Values of the function at the points of the multi-grid.
int * b
Array (size: nzone ) of the spectral basis in each domain.
#define MSQ_R
Extraction de l'info sur R.
#define T_SIN_P
dev. sin seulement, harmoniques paires
int get_nzone() const
Returns the number of domains.
int get_dim(int i) const
Gives the i-th dimension (ie dim.dim[i])
#define T_COSSIN_SI
sin impair-cos pair alternes, sin pour m=0
#define T_LEG_IP
fct. de Legendre associees impaires avec m pair
void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
#define R_CHEBPIM_I
Cheb. pair-impair suivant m, impair pour m=0.
#define R_CHEBPIM_P
Cheb. pair-impair suivant m, pair pour m=0.
void set_etat_zero()
Sets the logical state to ETATZERO (zero).
#define T_LEG_P
fct. de Legendre associees paires
#define R_CHEBPI_P
Cheb. pair-impair suivant l pair pour l=0.
void c_est_pas_fait(const char *)
Helpful function to say something is not implemented yet.
#define NONDEF
base inconnue
#define T_COSSIN_CI
cos impair-sin pair alternes, cos pour m=0
int get_taille() const
Gives the total size (ie dim.taille)
Base_val base
Bases of the spectral expansions.
int etat
Logical state (ETATNONDEF , ETATQCQ or ETATZERO ).
#define P_COSSIN_I
dev. sur Phi = 2*phi, freq. impaires
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
#define P_COSSIN_P
dev. sur Phi = 2*phi, freq. paires
#define T_LEG_II
fct. de Legendre associees impaires avec m impair
Tbl ** t
Array (size nzone ) of pointers on the Tbl 's.
#define T_COSSIN_CP
cos pair-sin impair alternes, cos pour m=0
#define MAX_BASE
Nombre max. de bases differentes.
#define T_SIN_I
dev. sin seulement, harmoniques impaires
Tbl ** t
Array (size nzone ) of pointers on the Tbl 's which contain the spectral coefficients in each domain...
#define T_LEG_PP
fct. de Legendre associees paires avec m pair
#define T_COSSIN_S
dev. cos-sin alternes, sin pour m=0
#define R_LEG
base de Legendre ordinaire (fin)
#define R_CHEB
base de Chebychev ordinaire (fin)