90 const Map* mp_d = cm_d.
mp ;
124 cout <<
"Cmp::import : unexpected value of align_rel : " 125 << align_rel << endl ;
141 const Map* mp_d = cm_d.
mp ;
154 if (cm_d.
etat == ETATZERO) {
162 assert(cm_d.
etat != ETATNONDEF) ;
166 "Cmp::import : the dzpuis of the Cmp to be imported must be zero !" 174 assert(nzet <= nz_a) ;
179 assert(cm_d.
etat == ETATQCQ) ;
210 if ( (
mp->
r).c == 0x0 ) (
mp->
r).fait() ;
213 if ( (
mp->
xa).c == 0x0 ) (
mp->
xa).fait() ;
214 if ( (
mp->
ya).c == 0x0 ) (
mp->
ya).fait() ;
215 if ( (
mp->
za).c == 0x0 ) (
mp->
za).fait() ;
227 double precis = 1e-15 ;
236 for (
int l=0; l < nzet; l++) {
238 int nr = mg_a->
get_nr(l) ;
239 int nt = mg_a->
get_nt(l) ;
240 int np = mg_a->
get_np(l) ;
243 const double* pr_a = mr_a->
t[l]->
t ;
244 const double* ptet_a = mtet_a->
t[l]->
t ;
245 const double* pphi_a = mphi_a->
t[l]->
t ;
246 const double* pxa_a = mxa_a->
t[l]->
t ;
247 const double* pya_a = mya_a->
t[l]->
t ;
248 const double* pza_a = mza_a->
t[l]->
t ;
252 double* ptx = (
va.
c->
t[l])->t ;
257 for (
int k=0 ; k<np ; k++) {
258 for (
int j=0 ; j<nt ; j++) {
259 for (
int i=0 ; i<nr ; i++) {
262 double rd, tetd, phid ;
263 if (r == __infinity) {
266 phid = *pphi_a + rot_phi_a - rot_phi_d ;
267 if (phid < 0) phid += 2*M_PI ;
273 double xd = *pxa_a - xo_d ;
274 double yd = *pya_a - yo_d ;
275 double zd = *pza_a - zo_d ;
278 double rhod2 = xd*xd + yd*yd ;
279 double rhod =
sqrt( rhod2 ) ;
280 rd =
sqrt(rhod2 + zd*zd) ;
281 tetd = atan2(rhod, zd) ;
282 phid = atan2(yd, xd) - rot_phi_d ;
283 if (phid < 0) phid += 2*M_PI ;
296 mp_d->
val_lx(rd, tetd, phid, par_precis, ld, xxd) ;
343 if (cm_d.
etat == ETATZERO) {
348 const Map* mp_d = cm_d.
mp ;
356 assert(cm_d.
etat == ETATQCQ) ;
360 "Cmp::import : the dzpuis of the Cmp to be imported must be zero !" 368 assert(nzet <= nz_a) ;
388 double xx_a, yy_a, zz_a ;
403 if ( (
mp->
r).c == 0x0 ) (
mp->
r).fait() ;
406 if ( (
mp->
x).c == 0x0 ) (
mp->
x).fait() ;
407 if ( (
mp->
y).c == 0x0 ) (
mp->
y).fait() ;
408 if ( (
mp->
z).c == 0x0 ) (
mp->
z).fait() ;
420 double precis = 1e-15 ;
429 for (
int l=0; l < nzet; l++) {
431 int nr = mg_a->
get_nr(l) ;
432 int nt = mg_a->
get_nt(l) ;
433 int np = mg_a->
get_np(l) ;
436 const double* pr_a = mr_a->
t[l]->
t ;
437 const double* ptet_a = mtet_a->
t[l]->
t ;
438 const double* pphi_a = mphi_a->
t[l]->
t ;
439 const double* px_a = mx_a->
t[l]->
t ;
440 const double* py_a = my_a->
t[l]->
t ;
441 const double* pz_a = mz_a->
t[l]->
t ;
445 double* ptx = (
va.
c->
t[l])->t ;
450 for (
int k=0 ; k<np ; k++) {
451 for (
int j=0 ; j<nt ; j++) {
452 for (
int i=0 ; i<nr ; i++) {
455 double rd, tetd, phid ;
456 if (r == __infinity) {
459 phid = *pphi_a + M_PI ;
460 if (phid < 0) phid += 2*M_PI ;
465 double xd = - *px_a + xx_a ;
466 double yd = - *py_a + yy_a ;
467 double zd = *pz_a + zz_a ;
470 double rhod2 = xd*xd + yd*yd ;
471 double rhod =
sqrt( rhod2 ) ;
472 rd =
sqrt(rhod2 + zd*zd) ;
473 tetd = atan2(rhod, zd) ;
474 phid = atan2(yd, xd) ;
475 if (phid < 0) phid += 2*M_PI ;
488 mp_d->
val_lx(rd, tetd, phid, par_precis, ld, xxd) ;
535 if (cm_d.
etat == ETATZERO) {
540 const Map* mp_d = cm_d.
mp ;
548 assert(cm_d.
etat == ETATQCQ) ;
552 "Cmp::import : the dzpuis of the Cmp to be imported must be zero !" 560 assert(nzet <= nz_a) ;
580 double xx_a, yy_a, zz_a ;
595 if ( (
mp->
r).c == 0x0 ) (
mp->
r).fait() ;
598 if ( (
mp->
x).c == 0x0 ) (
mp->
x).fait() ;
599 if ( (
mp->
y).c == 0x0 ) (
mp->
y).fait() ;
600 if ( (
mp->
z).c == 0x0 ) (
mp->
z).fait() ;
612 double precis = 1e-15 ;
621 for (
int l=0; l < nzet; l++) {
623 int nr = mg_a->
get_nr(l) ;
624 int nt = mg_a->
get_nt(l) ;
625 int np = mg_a->
get_np(l) ;
628 const double* pr_a = mr_a->
t[l]->
t ;
629 const double* ptet_a = mtet_a->
t[l]->
t ;
630 const double* pphi_a = mphi_a->
t[l]->
t ;
631 const double* px_a = mx_a->
t[l]->
t ;
632 const double* py_a = my_a->
t[l]->
t ;
633 const double* pz_a = mz_a->
t[l]->
t ;
637 double* ptx = (
va.
c->
t[l])->t ;
642 for (
int k=0 ; k<np ; k++) {
643 for (
int j=0 ; j<nt ; j++) {
644 for (
int i=0 ; i<nr ; i++) {
647 double rd, tetd, phid ;
648 if (r == __infinity) {
656 double xd = *px_a + xx_a ;
657 double yd = *py_a + yy_a ;
658 double zd = *pz_a + zz_a ;
661 double rhod2 = xd*xd + yd*yd ;
662 double rhod =
sqrt( rhod2 ) ;
663 rd =
sqrt(rhod2 + zd*zd) ;
664 tetd = atan2(rhod, zd) ;
665 phid = atan2(yd, xd) ;
666 if (phid < 0) phid += 2*M_PI ;
679 mp_d->
val_lx(rd, tetd, phid, par_precis, ld, xxd) ;
Coord xa
Absolute x coordinate.
void del_t()
Logical destructor.
Mtbl_cf * c_cf
Coefficients of the spectral expansion of the function.
Component of a tensorial field *** DEPRECATED : use class Scalar instead ***.
void add_int(const int &n, int position=0)
Adds the address of a new int to the list.
int get_np(int l) const
Returns the number of points in the azimuthal direction ( ) in domain no. l.
void coef() const
Computes the coeffcients of *this.
Cmp sqrt(const Cmp &)
Square root.
void import_align(int nzet, const Cmp &ci)
Assignment to another Cmp defined on a different mapping, when the two mappings have aligned Cartesia...
void annule(int l)
Sets the Cmp to zero in a given domain.
double get_ori_y() const
Returns the y coordinate of the origin.
const Mg3d * get_mg() const
Gives the Mg3d on which the mapping is defined.
void import_anti(int nzet, const Cmp &ci)
Assignment to another Cmp defined on a different mapping, when the two mappings have anti-aligned Car...
int etat
Logical state (ETATNONDEF , ETATQCQ or ETATZERO ).
Base class for coordinate mappings.
double get_ori_x() const
Returns the x coordinate of the origin.
Values and coefficients of a (real-value) function.
double get_rot_phi() const
Returns the angle between the x –axis and X –axis.
Coord tet
coordinate centered on the grid
Coord phi
coordinate centered on the grid
void set_etat_zero()
Sets the logical state to ETATZERO (zero).
int dzpuis
Power of r by which the quantity represented by this must be divided in the external compactified zo...
double * t
The array of double.
void import_gal(int nzet, const Cmp &ci)
Assignment to another Cmp defined on a different mapping, when the two mappings do not have a particu...
Mtbl * c
Values of the function at the points of the multi-grid.
int get_nzone() const
Returns the number of domains.
void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
double val_point(int l, double x, double theta, double phi) const
Computes the value of the field represented by *this at an arbitrary point, by means of the spectral ...
int get_nr(int l) const
Returns the number of points in the radial direction ( ) in domain no. l.
Coord ya
Absolute y coordinate.
const Map * mp
Reference mapping.
const Base_vect_cart & get_bvect_cart() const
Returns the Cartesian basis associated with the coordinates (x,y,z) of the mapping, i.e.
Coord y
y coordinate centered on the grid
Coord za
Absolute z coordinate.
void add_double(const double &x, int position=0)
Adds the the address of a new double to the list.
Coord x
x coordinate centered on the grid
void set_etat_c_qcq()
Sets the logical state to ETATQCQ (ordinary state) for values in the configuration space (Mtbl c )...
double get_ori_z() const
Returns the z coordinate of the origin.
void set_dzpuis(int)
Set a value to dzpuis.
int get_nt(int l) const
Returns the number of points in the co-latitude direction ( ) in domain no. l.
void import(const Cmp &ci)
Assignment to another Cmp defined on a different mapping.
Tbl ** t
Array (size nzone ) of pointers on the Tbl 's.
Coord z
z coordinate centered on the grid
Valeur va
The numerical value of the Cmp.
void add_int_mod(int &n, int position=0)
Adds the address of a new modifiable int to the list.
Coord r
r coordinate centered on the grid
virtual void val_lx(double rr, double theta, double pphi, int &l, double &xi) const =0
Computes the domain index l and the value of corresponding to a point given by its physical coordina...