27char valeur_coef_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Valeur/valeur_coef.C,v 1.18 2014/10/13 08:53:49 j_novak Exp $" ;
138void pasprevu_r(
const int*,
const int*,
double*,
const int*,
double*) ;
139void pasprevu_t(
const int*,
const int*,
double*,
const int*,
double*) ;
140void pasprevu_p(
const int* ,
const int* ,
double* ) ;
142void base_non_def_r(
const int*,
const int*,
double*,
const int*,
double*) ;
143void base_non_def_t(
const int*,
const int*,
double*,
const int*,
double*) ;
144void base_non_def_p(
const int* ,
const int* ,
double* ) ;
146bool admissible_fft(
int ) ;
151 static void (*
coef_r[
MAX_BASE])(
const int*,
const int*,
double*,
const int*,
double*) ;
152 static void (*
coef_t[
MAX_BASE])(
const int*,
const int*,
double*,
const int*,
double*) ;
218 if (
etat == ETATZERO) {
236 int nz =
mg->get_nzone() ;
237 for (
int l=0;
l<nz;
l++) {
243 if (
f->get_etat() == ETATZERO) {
244 cf->set_etat_zero() ;
250 int np =
f->get_dim(2) ;
251 int nt =
f->get_dim(1) ;
252 int nr =
f->get_dim(0) ;
254 int np_c =
cf->get_dim(2) ;
255 int nt_c =
cf->get_dim(1) ;
256 int nr_c =
cf->get_dim(0) ;
272 for (
int i=0;
i<np ;
i++) {
273 for (
int j=0;
j<nt ;
j++) {
274 for (
int k=0;
k<nr ;
k++) {
275 int index =
nrnt *
i + nr *
j +
k ;
296 assert( admissible_fft(np) ) ;
310 assert( admissible_fft(nt-1) ) ;
318 pasprevu_t(
deg, dim, (
cf->t), dim, (
cf->t) ) ;
337 assert( admissible_fft(nr-1) || (
mg->get_colloc_r(
l) != BASE_CHEB) ) ;
349void pasprevu_r(
const int*,
const int*,
double*,
const int*,
double*) {
350 cout <<
"Valeur::coef: the required expansion basis in r " <<
endl ;
351 cout <<
" is not implemented !" <<
endl ;
355void pasprevu_t(
const int*,
const int*,
double*,
const int*,
double*) {
356 cout <<
"Valeur::coef: the required expansion basis in theta " << endl ;
357 cout <<
" is not implemented !" << endl ;
361void pasprevu_p(
const int*,
const int*,
double*) {
362 cout <<
"Valeur::coef: the required expansion basis in phi " << endl ;
363 cout <<
" is not implemented !" << endl ;
367void base_non_def_r(
const int*,
const int*,
double*,
const int*,
double*) {
368 cout <<
"Valeur::coef: the expansion basis in r is undefined !" << endl ;
372void base_non_def_t(
const int*,
const int*,
double*,
const int*,
double*) {
373 cout <<
"Valeur::coef: the expansion basis in theta is undefined !" << endl ;
377void base_non_def_p(
const int*,
const int*,
double*) {
378 cout <<
"Valeur::coef: the expansion basis in phi is undefined !" << endl ;
int * b
Array (size: nzone ) of the spectral basis in each domain.
Time evolution with partial storage (*** under development ***).
Coefficients storage for the multi-domain spectral method.
Tbl ** t
Array (size nzone ) of pointers on the Tbl 's which contain the spectral coefficients in each domain.
void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
Tbl ** t
Array (size nzone ) of pointers on the Tbl 's.
Mtbl * c
Values of the function at the points of the multi-grid
const Mg3d * mg
Multi-grid Mgd3 on which this is defined.
Mtbl_cf * c_cf
Coefficients of the spectral expansion of the function.
void coef() const
Computes the coeffcients of *this.
Base_val base
Bases on which the spectral expansion is performed.
int etat
Logical state (ETATNONDEF , ETATQCQ or ETATZERO ).
Cmp sqrt(const Cmp &)
Square root.
#define MAX_BASE_2
Smaller maximum bases used for phi (and higher dimensions for now)
#define TRA_T
Translation en Theta, used for a bitwise shift (in hex)
#define T_LEG_MP
fct. de Legendre associees avec m pair
#define P_COSSIN_P
dev. sur Phi = 2*phi, freq. paires
#define R_LEGP
base de Legendre paire (rare) seulement
#define MAX_BASE
Nombre max. de bases differentes.
#define T_LEG_PI
fct. de Legendre associees paires avec m impair
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
#define R_JACO02
base de Jacobi(0,2) ordinaire (finjac)
#define T_COSSIN_SP
sin pair-cos impair alternes, sin pour m=0
#define R_LEGI
base de Legendre impaire (rare) seulement
#define R_CHEBI
base de Cheb. impaire (rare) seulement
#define T_LEG
fct. de Legendre associees
#define T_SIN_P
dev. sin seulement, harmoniques paires
#define MSQ_R
Extraction de l'info sur R.
#define T_COSSIN_S
dev. cos-sin alternes, sin pour m=0
#define R_CHEBPIM_I
Cheb. pair-impair suivant m, impair pour m=0.
#define T_COSSIN_SI
sin impair-cos pair alternes, sin pour m=0
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#define R_LEG
base de Legendre ordinaire (fin)
#define T_LEG_P
fct. de Legendre associees paires
#define T_LEG_IP
fct. de Legendre associees impaires avec m pair
#define NONDEF
base inconnue
#define T_COS_P
dev. cos seulement, harmoniques paires
#define T_COSSIN_CI
cos impair-sin pair alternes, cos pour m=0
#define P_COSSIN
dev. standart
#define P_COSSIN_I
dev. sur Phi = 2*phi, freq. impaires
#define R_CHEBPIM_P
Cheb. pair-impair suivant m, pair pour m=0.
#define TRA_R
Translation en R, used for a bitwise shift (in hex)
#define T_LEG_MI
fct. de Legendre associees avec m impair
#define MSQ_T
Extraction de l'info sur Theta.
#define T_COSSIN_CP
cos pair-sin impair alternes, cos pour m=0
#define T_LEG_II
fct. de Legendre associees impaires avec m impair
#define R_CHEB
base de Chebychev ordinaire (fin)
#define T_LEG_I
fct. de Legendre associees impaires
#define T_SIN_I
dev. sin seulement, harmoniques impaires
#define T_COS
dev. cos seulement
#define R_CHEBP
base de Cheb. paire (rare) seulement
#define MSQ_P
Extraction de l'info sur Phi.
#define T_SIN
dev. sin seulement
#define T_LEG_PP
fct. de Legendre associees paires avec m pair
#define T_COS_I
dev. cos seulement, harmoniques impaires
#define T_COSSIN_C
dev. cos-sin alternes, cos pour m=0
#define TRA_P
Translation en Phi, used for a bitwise shift (in hex)
#define R_CHEBPI_P
Cheb. pair-impair suivant l pair pour l=0.