23char map_af_integ_surf_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Map/map_af_integ_surf.C,v 1.7 2014/10/13 08:53:02 j_novak Exp $" ;
92 assert (ci.
get_etat() != ETATNONDEF) ;
101 val_lx (rayon, 0, 0, l, xi) ;
103 if (l ==
get_mg()->get_nzone()-1) {
116 double* coef =
new double [nr] ;
117 double* auxi =
new double[1] ;
119 bool odd_theta = false ;
131 cout <<
"base_t cas non prevu dans Map_af::integrale_surface" << endl ;
137 for (
int j=0 ; j<nt ; j++) {
138 for (
int i=0 ; i<nr ; i++)
139 coef[i] = (*ci.
va.
c_cf)(l, 0, j, i) ;
144 som_r_cheb (coef, nr, 1, 1, xi, auxi) ;
147 som_r_chebp (coef, nr, 1, 1, xi, auxi) ;
150 som_r_chebi (coef, nr, 1, 1, xi, auxi) ;
153 som_r_chebu (coef, nr, 1, 1, xi, auxi) ;
156 som_r_chebpi_p (coef, nr, 1, 1, xi, auxi) ;
159 som_r_chebpi_i (coef, nr, 1, 1, xi, auxi) ;
162 som_r_chebpim_p (coef, nr, 1, 1, xi, auxi) ;
165 som_r_chebpim_i (coef, nr, 1, 1, xi, auxi) ;
168 som_r_pas_prevu (coef, nr, 1, 1, xi, auxi) ;
171 result += 2 * (*auxi)/(1-c_cos*c_cos*j*j) ;
172 if (c_cos == 1.) j++ ;
180 result *= 2*rayon*rayon*M_PI ;
183 result *= 2*rayon*rayon*M_PI ;
186 cout <<
"base_p cas non prevu dans Map_af::integrale_surface" << endl ;
198 assert (ci.
get_etat() != ETATNONDEF) ;
217 double* coef =
new double [nr] ;
218 double* auxi =
new double[1] ;
220 bool odd_theta = false ;
232 cout <<
"base_t cas non prevu dans Map_af::integrale_surface" << endl ;
238 for (
int j=0 ; j<nt ; j++) {
239 for (
int i=0 ; i<nr ; i++)
240 coef[i] = (*ci.
va.
c_cf)(nz-1, 0, j, i) ;
244 som_r_chebu (coef, nr, 1, 1, 1, auxi) ;
247 som_r_pas_prevu (coef, nr, 1, 1, 1, auxi) ;
250 result += 2 * (*auxi)/(1-c_cos*c_cos*j*j) ;
251 if (c_cos == 1.) j++ ;
265 cout <<
"base_p cas non prevu dans Map_af::integrale_surface_infini" << endl ;
279 assert (ci.
get_etat() != ETATNONDEF) ;
288 val_lx (rayon, 0, 0, l, xi) ;
290 if (l ==
get_mg()->get_nzone()-1) {
303 double* coef =
new double [nr] ;
304 double* auxi =
new double[1] ;
306 bool odd_theta = false ;
319 cout <<
"base_t cas non prevu dans Map_af::integrale_surface" << endl ;
325 for (
int j=0 ; j<nt ; j++) {
326 for (
int i=0 ; i<nr ; i++)
332 som_r_cheb (coef, nr, 1, 1, xi, auxi) ;
335 som_r_chebp (coef, nr, 1, 1, xi, auxi) ;
338 som_r_chebi (coef, nr, 1, 1, xi, auxi) ;
341 som_r_chebu (coef, nr, 1, 1, xi, auxi) ;
344 som_r_chebpi_p (coef, nr, 1, 1, xi, auxi) ;
347 som_r_chebpi_i (coef, nr, 1, 1, xi, auxi) ;
350 som_r_chebpim_p (coef, nr, 1, 1, xi, auxi) ;
353 som_r_chebpim_i (coef, nr, 1, 1, xi, auxi) ;
356 som_r_pas_prevu (coef, nr, 1, 1, xi, auxi) ;
359 result += 2 * (*auxi)/(1-c_cos*c_cos*j*j) ;
360 if (c_cos == 1.) j++ ;
369 result *= 2*rayon*rayon*M_PI ;
372 result *= 2*rayon*rayon*M_PI ;
375 cout <<
"base_p cas non prevu dans Map_af::integrale_surface" << endl ;
387 assert (ci.
get_etat() != ETATNONDEF) ;
406 double* coef =
new double [nr] ;
407 double* auxi =
new double[1] ;
409 bool odd_theta = false ;
422 cout <<
"base_t cas non prevu dans Map_af::integrale_surface" << endl ;
428 for (
int j=0 ; j<nt ; j++) {
429 for (
int i=0 ; i<nr ; i++)
434 som_r_chebu (coef, nr, 1, 1, 1, auxi) ;
437 som_r_pas_prevu (coef, nr, 1, 1, 1, auxi) ;
440 result += 2 * (*auxi)/(1-c_cos*c_cos*j*j) ;
441 if (c_cos == 1.) j++ ;
456 cout <<
"base_p cas non prevu dans Map_af::integrale_surface_infini" << endl ;
int get_base_p(int l) const
Returns the expansion basis for functions in the domain of index l (e.g.
int get_base_r(int l) const
Returns the expansion basis for r ( ) functions in the domain of index l (e.g.
int get_base_t(int l) const
Returns the expansion basis for functions in the domain of index l (e.g.
Component of a tensorial field *** DEPRECATED : use class Scalar instead ***.
int get_etat() const
Returns the logical state.
Valeur va
The numerical value of the Cmp
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.
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...
double integrale_surface_infini(const Cmp &ci) const
Performs the surface integration of ci at infinity.
double integrale_surface(const Cmp &ci, double rayon) const
Performs the surface integration of ci on the sphere of radius rayon .
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
int get_nt(int l) const
Returns the number of points in the co-latitude direction ( ) in domain no. l.
int get_nzone() const
Returns the number of domains.
int get_nr(int l) const
Returns the number of points in the radial direction ( ) in domain no. l.
Tensor field of valence 0 (or component of a tensorial field).
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 Valeur & get_spectral_va() const
Returns va (read only version)
int get_etat() const
Returns the logical state ETATNONDEF (undefined), ETATZERO (null) or ETATQCQ (ordinary).
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.
#define P_COSSIN_P
dev. sur Phi = 2*phi, freq. paires
#define R_CHEBU
base de Chebychev ordinaire (fin), dev. en 1/r
#define R_CHEBI
base de Cheb. impaire (rare) seulement
#define R_CHEBPIM_I
Cheb. pair-impair suivant m, impair pour m=0.
#define R_CHEBPI_I
Cheb. pair-impair suivant l impair pour l=0.
#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 R_CHEBPIM_P
Cheb. pair-impair suivant m, pair pour m=0.
#define T_COSSIN_CP
cos pair-sin impair alternes, cos pour m=0
#define R_CHEB
base de Chebychev ordinaire (fin)
#define T_COS
dev. cos seulement
#define R_CHEBP
base de Cheb. paire (rare) seulement
#define T_COS_I
dev. cos seulement, harmoniques impaires
#define T_COSSIN_C
dev. cos-sin alternes, cos pour m=0
#define R_CHEBPI_P
Cheb. pair-impair suivant l pair pour l=0.
const Map & get_mp() const
Returns the mapping.