101 assert (ci.
get_etat() != ETATNONDEF) ;
110 val_lx (rayon, 0, 0, l, xi) ;
112 if (l ==
get_mg()->get_nzone()-1) {
125 double* coef =
new double [nr] ;
126 double* auxi =
new double[1] ;
128 bool odd_theta = false ;
140 cout <<
"base_t cas non prevu dans Map_af::integrale_surface" << endl ;
146 for (
int j=0 ; j<nt ; j++) {
147 for (
int i=0 ; i<nr ; i++)
148 coef[i] = (*ci.
va.
c_cf)(l, 0, j, i) ;
153 som_r_cheb (coef, nr, 1, 1, xi, auxi) ;
156 som_r_chebp (coef, nr, 1, 1, xi, auxi) ;
159 som_r_chebi (coef, nr, 1, 1, xi, auxi) ;
162 som_r_chebu (coef, nr, 1, 1, xi, auxi) ;
165 som_r_chebpi_p (coef, nr, 1, 1, xi, auxi) ;
168 som_r_chebpi_i (coef, nr, 1, 1, xi, auxi) ;
171 som_r_chebpim_p (coef, nr, 1, 1, xi, auxi) ;
174 som_r_chebpim_i (coef, nr, 1, 1, xi, auxi) ;
177 som_r_leg (coef, nr, 1, 1, xi, auxi) ;
180 som_r_legp (coef, nr, 1, 1, xi, auxi) ;
183 som_r_legi (coef, nr, 1, 1, xi, auxi) ;
186 som_r_pas_prevu (coef, nr, 1, 1, xi, auxi) ;
189 result += 2 * (*auxi)/(1-c_cos*c_cos*j*j) ;
190 if (c_cos == 1.) j++ ;
198 result *= 2*rayon*rayon*M_PI ;
201 result *= 2*rayon*rayon*M_PI ;
204 cout <<
"base_p cas non prevu dans Map_af::integrale_surface" << endl ;
216 assert (ci.
get_etat() != ETATNONDEF) ;
235 double* coef =
new double [nr] ;
236 double* auxi =
new double[1] ;
238 bool odd_theta = false ;
250 cout <<
"base_t cas non prevu dans Map_af::integrale_surface" << endl ;
256 for (
int j=0 ; j<nt ; j++) {
257 for (
int i=0 ; i<nr ; i++)
258 coef[i] = (*ci.
va.
c_cf)(nz-1, 0, j, i) ;
262 som_r_chebu (coef, nr, 1, 1, 1, auxi) ;
265 som_r_pas_prevu (coef, nr, 1, 1, 1, auxi) ;
268 result += 2 * (*auxi)/(1-c_cos*c_cos*j*j) ;
269 if (c_cos == 1.) j++ ;
283 cout <<
"base_p cas non prevu dans Map_af::integrale_surface_infini" << endl ;
297 assert (ci.
get_etat() != ETATNONDEF) ;
306 val_lx (rayon, 0, 0, l, xi) ;
308 if (l ==
get_mg()->get_nzone()-1) {
321 double* coef =
new double [nr] ;
322 double* auxi =
new double[1] ;
324 bool odd_theta = false ;
337 cout <<
"base_t cas non prevu dans Map_af::integrale_surface" << endl ;
343 for (
int j=0 ; j<nt ; j++) {
344 for (
int i=0 ; i<nr ; i++)
350 som_r_cheb (coef, nr, 1, 1, xi, auxi) ;
353 som_r_chebp (coef, nr, 1, 1, xi, auxi) ;
356 som_r_chebi (coef, nr, 1, 1, xi, auxi) ;
359 som_r_chebu (coef, nr, 1, 1, xi, auxi) ;
362 som_r_chebpi_p (coef, nr, 1, 1, xi, auxi) ;
365 som_r_chebpi_i (coef, nr, 1, 1, xi, auxi) ;
368 som_r_chebpim_p (coef, nr, 1, 1, xi, auxi) ;
371 som_r_chebpim_i (coef, nr, 1, 1, xi, auxi) ;
374 som_r_leg (coef, nr, 1, 1, xi, auxi) ;
377 som_r_legp (coef, nr, 1, 1, xi, auxi) ;
380 som_r_legi (coef, nr, 1, 1, xi, auxi) ;
383 som_r_pas_prevu (coef, nr, 1, 1, xi, auxi) ;
386 result += 2 * (*auxi)/(1-c_cos*c_cos*j*j) ;
387 if (c_cos == 1.) j++ ;
396 result *= 2*rayon*rayon*M_PI ;
399 result *= 2*rayon*rayon*M_PI ;
402 cout <<
"base_p cas non prevu dans Map_af::integrale_surface" << endl ;
414 assert (ci.
get_etat() != ETATNONDEF) ;
433 double* coef =
new double [nr] ;
434 double* auxi =
new double[1] ;
436 bool odd_theta = false ;
449 cout <<
"base_t cas non prevu dans Map_af::integrale_surface" << endl ;
455 for (
int j=0 ; j<nt ; j++) {
456 for (
int i=0 ; i<nr ; i++)
461 som_r_chebu (coef, nr, 1, 1, 1, auxi) ;
464 som_r_pas_prevu (coef, nr, 1, 1, 1, auxi) ;
467 result += 2 * (*auxi)/(1-c_cos*c_cos*j*j) ;
468 if (c_cos == 1.) j++ ;
483 cout <<
"base_p cas non prevu dans Map_af::integrale_surface_infini" << endl ;
const Map * get_mp() const
Returns the mapping.
Mtbl_cf * c_cf
Coefficients of the spectral expansion of the function.
Component of a tensorial field *** DEPRECATED : use class Scalar instead ***.
double integrale_surface(const Cmp &ci, double rayon) const
Performs the surface integration of ci on the sphere of radius rayon .
#define P_COSSIN
dev. standart
void coef() const
Computes the coeffcients of *this.
double integrale_surface_infini(const Cmp &ci) const
Performs the surface integration of ci at infinity.
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
int get_base_t(int l) const
Returns the expansion basis for functions in the domain of index l (e.g.
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
int get_etat() const
Returns the logical state.
Tensor field of valence 0 (or component of a tensorial field).
#define T_COS
dev. cos seulement
#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
int get_base_r(int l) const
Returns the expansion basis for r ( ) functions in the domain of index l (e.g.
#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 T_COSSIN_C
dev. cos-sin alternes, cos pour m=0
Base_val base
Bases on which the spectral expansion is performed.
int get_nzone() const
Returns the number of domains.
int get_base_p(int l) const
Returns the expansion basis for functions in the domain of index l (e.g.
virtual void val_lx(double rr, double theta, double pphi, int &l, double &xi) const
Computes the domain index l and the value of corresponding to a point given by its physical coordina...
#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.
int get_nr(int l) const
Returns the number of points in the radial direction ( ) in domain no. l.
#define R_CHEBPI_P
Cheb. pair-impair suivant l pair pour l=0.
#define T_COSSIN_CI
cos impair-sin pair alternes, cos pour m=0
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...
int get_nt(int l) const
Returns the number of points in the co-latitude direction ( ) in domain no. l.
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
#define P_COSSIN_P
dev. sur Phi = 2*phi, freq. paires
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...
#define T_COSSIN_CP
cos pair-sin impair alternes, cos pour m=0
const Map & get_mp() const
Returns the mapping.
Valeur va
The numerical value of the Cmp.
const Valeur & get_spectral_va() const
Returns va (read only version)
#define R_LEG
base de Legendre ordinaire (fin)
#define R_CHEB
base de Chebychev ordinaire (fin)