75 void _primr_pas_prevu(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
76 void _primr_r_cheb(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
77 void _primr_r_chebp(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
78 void _primr_r_chebi(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
79 void _primr_r_leg(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
80 void _primr_r_legp(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
81 void _primr_r_legi(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
82 void _primr_r_chebpim_p(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
83 void _primr_r_chebpim_i(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
84 void _primr_r_jaco02(
const Tbl&,
int,
const Tbl&, Tbl&,
int&, Tbl&) ;
88 static void (*prim_domain[
MAX_BASE])(
const Tbl&,
int bin,
const Tbl&,
90 static bool first_call = true ;
96 for (
int i=0 ; i<
MAX_BASE ; i++) prim_domain[i] = _primr_pas_prevu ;
115 assert(uu.
get_etat() != ETATNONDEF) ;
134 for (
int l=1; l<nz; l++) {
144 assert(cuu.
t != 0x0) ;
158 Tbl val_rmin(np+2,nt) ;
160 Tbl val_rmax(np+2,nt) ;
164 int lmax = (
mg->
get_type_r(nzm1) == UNSURR) ? nz-2 : nzm1 ;
166 for (
int l=0; l<=lmax; l++) {
167 assert(cuu.
t[l] != 0x0) ;
168 assert(cprim.
t[l] != 0x0) ;
169 const Tbl& cfuu = *(cuu.
t[l]) ;
170 Tbl& cfprim = *(cprim.
t[l]) ;
172 int buu_dom = buu.
get_b(l) ;
175 prim_domain[base_r](cfuu, buu_dom, val_rmin, cfprim, bprim.
b[l],
186 val_rmin = - val_rmin ;
187 const Tbl& cfuu = *(cuu.
t[nzm1]) ;
188 Tbl& cfprim = *(cprim.
t[nzm1]) ;
190 int buu_dom = buu.
get_b(nzm1) ;
194 prim_domain[base_r](cfuu, buu_dom, val_rmin, cfprim, bprim.
b[nzm1],
197 cfprim *= -
alpha[nzm1] ;
201 for (
int k=0; k<np; k++)
202 for(
int j=0; j<nt; j++)
209 for (
int l=0; l<nz; l++)
210 for (
int k=0; k<np; k++)
211 for(
int j=0; j<nt; j++)
213 vprim.
set(l, k, j, i) -= val_rmax(k,j) ;
Mtbl_cf * c_cf
Coefficients of the spectral expansion of the function.
virtual void primr(const Scalar &uu, Scalar &resu, bool null_infty) const
Computes the radial primitive which vanishes for .
int get_np(int l) const
Returns the number of points in the azimuthal direction ( ) in domain no. l.
void set_etat_cf_qcq()
Sets the logical state to ETATQCQ (ordinary state) for values in the configuration space (Mtbl_cf c_c...
void coef() const
Computes the coeffcients of *this.
virtual void set_etat_zero()
Sets the logical state to ETATZERO (zero).
double * alpha
Array (size: mg->nzone ) of the values of in each domain.
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
double & set(int i)
Read/write of a particular element (index i) (1D case)
Tensor field of valence 0 (or component of a tensorial field).
Values and coefficients of a (real-value) function.
#define R_LEGP
base de Legendre paire (rare) seulement
int get_etat() const
Returns the logical state ETATNONDEF (undefined), ETATZERO (null) or ETATQCQ (ordinary).
#define R_LEGI
base de Legendre impaire (rare) seulement
virtual void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
void set_base(const Base_val &)
Sets the bases for spectral expansions (member base )
#define R_JACO02
base de Jacobi(0,2) ordinaire (finjac)
double val_out_bound_jk(int l, int j, int k) const
Computes the angular coefficient of index j,k of the field represented by *this at by means of the s...
#define TRA_R
Translation en R, used for a bitwise shift (in hex)
#define R_CHEBI
base de Cheb. impaire (rare) seulement
#define R_CHEBP
base de Cheb. paire (rare) seulement
int * b
Array (size: nzone ) of the spectral basis in each domain.
#define MSQ_R
Extraction de l'info sur R.
int get_nzone() const
Returns the number of domains.
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).
int get_nr(int l) const
Returns the number of points in the radial direction ( ) in domain no. l.
const Mg3d * mg
Pointer on the multi-grid Mgd3 on which this is defined.
Bases of the spectral expansions.
int get_b(int l) const
Returns the code for the expansion basis in domain no. l.
Coefficients storage for the multi-domain spectral method.
Base_val base
Bases of the spectral expansions.
int get_nt(int l) const
Returns the number of points in the co-latitude direction ( ) in domain no. l.
Valeur & set_spectral_va()
Returns va (read/write version)
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
int get_type_r(int l) const
Returns the type of sampling in the radial direction in domain no.
bool check_dzpuis(int dzi) const
Returns false if the last domain is compactified and *this is not zero in this domain and dzpuis is n...
const Map & get_mp() const
Returns the mapping.
#define MAX_BASE
Nombre max. de bases differentes.
Tbl ** t
Array (size nzone ) of pointers on the Tbl 's which contain the spectral coefficients in each domain...
const Valeur & get_spectral_va() const
Returns va (read only version)
const Base_val & get_base() const
Return the bases for spectral expansions (member base )
Tbl & set(int l)
Read/write of the value in a given domain (configuration space).
#define R_LEG
base de Legendre ordinaire (fin)
#define R_CHEB
base de Chebychev ordinaire (fin)