47 const Mg3d* mg = cv->get_mg() ;
56 const Valeur& beta = cv->get_beta() ;
59 for (
int l=0 ; l<nz ; l++) {
64 Tbl* tb = (mti->
t)[l] ;
70 for (k=0 ; k<ip ; k++) {
71 for (j=0 ; j<it ; j++) {
72 for (i=0 ; i<ir ; i++) {
73 *p_r =
alpha(l,k,j,0) * (g->
x)[i] + beta(l,k,j,0) ;
87 for (k=0 ; k<ip ; k++) {
88 for (j=0 ; j<it ; j++) {
89 for (i=0 ; i<ir ; i++) {
90 cout <<
"map_star_fait_r: Warning ! No compactified zone allowed !" << endl;
98 cout <<
"map_star_fait_r: unknown type_r !\n" ;
113Mtbl* map_star_fait_tet(
const Map* cvi) {
117 const Mg3d* mg = cv->get_mg() ;
125 for (
int l=0 ; l<nz ; l++) {
130 Tbl* tb = (mti->
t)[l] ;
132 double* p_r = tb->
t ;
133 for (k=0 ; k<ip ; k++) {
134 for (j=0 ; j<it ; j++) {
135 for (i=0 ; i<ir ; i++) {
151Mtbl* map_star_fait_phi(
const Map* cvi) {
155 const Mg3d* mg = cv->get_mg() ;
160 mti->set_etat_qcq() ;
163 for (
int l=0 ; l<nz ; l++) {
164 int ir = mg->get_nr(l);
165 int it = mg->get_nt(l);
166 int ip = mg->get_np(l);
167 const Grille3d* g = mg->get_grille3d(l) ;
168 Tbl* tb = (mti->t)[l] ;
170 double* p_r = tb->t ;
171 for (k=0 ; k<ip ; k++) {
172 for (j=0 ; j<it ; j++) {
173 for (i=0 ; i<ir ; i++) {
189Mtbl* map_star_fait_x(
const Map* cvi) {
192 const Mg3d* mg = cvi->get_mg() ;
197 *mti = (cvi->r) * (cvi->sint) * (cvi->cosp) ;
207Mtbl* map_star_fait_y(
const Map* cvi) {
210 const Mg3d* mg = cvi->get_mg() ;
215 *mti = (cvi->r) * (cvi->sint) * (cvi->sinp) ;
225Mtbl* map_star_fait_z(
const Map* cvi) {
228 const Mg3d* mg = cvi->get_mg() ;
233 *mti = (cvi->r) * (cvi->cost) ;
243Mtbl* map_star_fait_xa(
const Map* cvi) {
246 const Mg3d* mg = cvi->get_mg() ;
251 double r_phi = cvi->get_rot_phi() ;
252 double t_x = cvi->get_ori_x() ;
254 if ( fabs(r_phi) < 1.e-14 ) {
255 *mti = (cvi->x) + t_x ;
257 else if ( fabs(r_phi - M_PI) < 1.e-14 ) {
258 *mti = - (cvi->x) + t_x ;
262 *mti = (cvi->r) * (cvi->sint) *
cos(
phi) + t_x ;
273Mtbl* map_star_fait_ya(
const Map* cvi) {
276 const Mg3d* mg = cvi->get_mg() ;
281 double r_phi = cvi->get_rot_phi() ;
282 double t_y = cvi->get_ori_y() ;
284 if ( fabs(r_phi) < 1.e-14 ) {
285 *mti = (cvi->y) + t_y ;
287 else if ( fabs(r_phi - M_PI) < 1.e-14 ) {
288 *mti = - (cvi->y) + t_y ;
292 *mti = (cvi->r) * (cvi->sint) *
sin(
phi) + t_y ;
303Mtbl* map_star_fait_za(
const Map* cvi) {
306 const Mg3d* mg = cvi->get_mg() ;
308 double t_z = cvi->get_ori_z() ;
313 *mti = (cvi->r) * (cvi->cost) + t_z ;
323Mtbl* map_star_fait_sint(
const Map* cvi) {
327 const Mg3d* mg = cv->get_mg() ;
332 mti->set_etat_qcq() ;
335 for (
int l=0 ; l<nz ; l++) {
336 int ir = mg->get_nr(l);
337 int it = mg->get_nt(l);
338 int ip = mg->get_np(l);
339 const Grille3d* g = mg->get_grille3d(l) ;
340 Tbl* tb = (mti->t)[l] ;
342 double* p_r = tb->t ;
343 for (k=0 ; k<ip ; k++) {
344 for (j=0 ; j<it ; j++) {
345 for (i=0 ; i<ir ; i++) {
346 *p_r =
sin(g->tet[j]) ;
357Mtbl* map_star_fait_cost(
const Map* cvi) {
361 const Mg3d* mg = cv->get_mg() ;
366 mti->set_etat_qcq() ;
369 for (
int l=0 ; l<nz ; l++) {
370 int ir = mg->get_nr(l);
371 int it = mg->get_nt(l);
372 int ip = mg->get_np(l);
373 const Grille3d* g = mg->get_grille3d(l) ;
374 Tbl* tb = (mti->t)[l] ;
376 double* p_r = tb->t ;
377 for (k=0 ; k<ip ; k++) {
378 for (j=0 ; j<it ; j++) {
379 for (i=0 ; i<ir ; i++) {
380 *p_r =
cos(g->tet[j]) ;
391Mtbl* map_star_fait_sinp(
const Map* cvi) {
395 const Mg3d* mg = cv->get_mg() ;
400 mti->set_etat_qcq() ;
403 for (
int l=0 ; l<nz ; l++) {
404 int ir = mg->get_nr(l);
405 int it = mg->get_nt(l);
406 int ip = mg->get_np(l);
407 const Grille3d* g = mg->get_grille3d(l) ;
408 Tbl* tb = (mti->t)[l] ;
410 double* p_r = tb->t ;
411 for (k=0 ; k<ip ; k++) {
412 for (j=0 ; j<it ; j++) {
413 for (i=0 ; i<ir ; i++) {
414 *p_r =
sin(g->phi[k]) ;
425Mtbl* map_star_fait_cosp(
const Map* cvi) {
429 const Mg3d* mg = cv->get_mg() ;
434 mti->set_etat_qcq() ;
437 for (
int l=0 ; l<nz ; l++) {
438 int ir = mg->get_nr(l);
439 int it = mg->get_nt(l);
440 int ip = mg->get_np(l);
441 const Grille3d* g = mg->get_grille3d(l) ;
442 Tbl* tb = (mti->t)[l] ;
444 double* p_r = tb->t ;
445 for (k=0 ; k<ip ; k++) {
446 for (j=0 ; j<it ; j++) {
447 for (i=0 ; i<ir ; i++) {
448 *p_r =
cos(g->phi[k]) ;
465Mtbl* map_star_fait_xsr(
const Map* cvi) {
469 const Mg3d* mg = cv->get_mg() ;
474 mti->set_etat_qcq() ;
477 const Valeur& alpha = cv->get_alpha() ;
478 const Valeur& beta = cv->get_beta() ;
481 for (
int l=0 ; l<nz ; l++) {
482 int ir = mg->get_nr(l);
483 int it = mg->get_nt(l) ;
484 int ip = mg->get_np(l) ;
485 const Grille3d* g = mg->get_grille3d(l) ;
486 Tbl* tb = (mti->t)[l] ;
488 double* p_r = tb->t ;
490 switch(mg->get_type_r(l)) {
493 assert(beta(l).get_etat()==ETATZERO) ;
494 for (k=0 ; k<ip ; k++) {
495 for (j=0 ; j<it ; j++) {
496 for (i=0 ; i<ir ; i++) {
497 *p_r = 1. / alpha(l,k,j,0) ;
505 for (k=0 ; k<ip ; k++) {
506 for (j=0 ; j<it ; j++) {
508 *p_r = 1. / beta(l,k,j,0) ;
512 for (i=0 ; i<ir ; i++) {
513 *p_r = 1. / ( alpha(l,k,j,0) * (g->x)[i] + beta(l,k,j,0) ) ;
521 cout <<
"map_star_fait_xsr: Compactified domain not allowed !" << endl;
526 cout <<
"map_star_fait_xsr: unknown type_r !" << endl ;
543Mtbl* map_star_fait_dxdr(
const Map* cvi) {
547 const Mg3d* mg = cv->get_mg() ;
552 mti->set_etat_qcq() ;
555 const Valeur& alpha = cv->get_alpha() ;
558 for (
int l=0 ; l<nz ; l++) {
559 int ir = mg->get_nr(l);
560 int it = mg->get_nt(l) ;
561 int ip = mg->get_np(l) ;
562 Tbl* tb = (mti->t)[l] ;
564 double* p_r = tb->t ;
566 switch(mg->get_type_r(l)) {
569 for (k=0 ; k<ip ; k++) {
570 for (j=0 ; j<it ; j++) {
571 for (i=0 ; i<ir ; i++) {
572 *p_r = 1. / alpha(l,k,j,0) ;
586 cout <<
"map_star_fait_dxdr: Compactified domain not allowed !" << endl;
592 cout <<
"map_star_fait_dxdr: unknown type_r !" << endl ;
607Mtbl* map_star_fait_drdt(
const Map* cvi) {
611 const Mg3d* mg = cv->get_mg() ;
616 mti->set_etat_qcq() ;
619 const Valeur& alpha = cv->get_alpha() ;
621 const Valeur& beta = cv->get_beta() ;
625 for (
int l=0 ; l<nz ; l++) {
627 int nr = mg->get_nr(l);
628 int nt = mg->get_nt(l) ;
629 int np = mg->get_np(l) ;
630 const Grille3d* g = mg->get_grille3d(l) ;
631 Tbl* tb = (mti->t)[l] ;
633 double* p_r = tb->t ;
635 switch(mg->get_type_r(l)) {
638 case RARE:
case FIN: {
639 for (
int k=0 ; k<np ; k++) {
640 for (
int j=0 ; j<nt ; j++) {
641 for (
int i=0 ; i<nr ; i++) {
642 *p_r = dalphadt(l,k,j,0) * (g->x)[i] + dbetadt(l,k,j,0) ;
656 cout <<
"map_star_fait_drdt: Compactified domain not allowed !" << endl;
662 cout <<
"map_star_fait_drdt: unknown type_r !" << endl ;
679Mtbl* map_star_fait_stdrdp(
const Map* cvi) {
683 const Mg3d* mg = cv->get_mg() ;
688 mti->set_etat_qcq() ;
691 const Valeur& alpha = cv->get_alpha() ;
693 const Valeur& beta = cv->get_beta() ;
697 for (
int l=0 ; l<nz ; l++) {
699 int nr = mg->get_nr(l);
700 int nt = mg->get_nt(l) ;
701 int np = mg->get_np(l) ;
702 const Grille3d* g = mg->get_grille3d(l) ;
703 Tbl* tb = (mti->t)[l] ;
705 double* p_r = tb->t ;
707 switch(mg->get_type_r(l)) {
710 case RARE:
case FIN: {
711 for (
int k=0 ; k<np ; k++) {
712 for (
int j=0 ; j<nt ; j++) {
713 for (
int i=0 ; i<nr ; i++) {
714 *p_r = stalphadp(l,k,j,0) * (g->x)[i] + stbetadp(l,k,j,0) ;
729 cout <<
"map_star_fait_stdrdp: Compactified domain not allowed !" << endl;
735 cout <<
"map_star_fait_stdrdp: unknown type_r !" << endl ;
752Mtbl* map_star_fait_srdrdt(
const Map* cvi) {
756 const Mg3d* mg = cv->get_mg() ;
761 mti->set_etat_qcq() ;
764 const Valeur& alpha = cv->get_alpha() ;
766 const Valeur& beta = cv->get_beta() ;
770 for (
int l=0 ; l<nz ; l++) {
772 int nr = mg->get_nr(l);
773 int nt = mg->get_nt(l) ;
774 int np = mg->get_np(l) ;
775 const Grille3d* g = mg->get_grille3d(l) ;
776 Tbl* tb = (mti->t)[l] ;
778 double* p_r = tb->t ;
780 switch(mg->get_type_r(l)) {
784 for (
int k=0 ; k<np ; k++) {
785 for (
int j=0 ; j<nt ; j++) {
786 for (
int i=0 ; i<nr ; i++) {
787 *p_r = dalphadt(l,k,j,0) / alpha(l,k,j,0) ;
796 for (
int k=0 ; k<np ; k++) {
797 for (
int j=0 ; j<nt ; j++) {
798 for (
int i=0 ; i<nr ; i++) {
799 *p_r = (dalphadt(l,k,j,0)*(g->x)[i] + dbetadt(l,k,j,0)) / (alpha(l,k,j,0)*(g->x)[i] + beta(l,k,j,0)) ;
808 cout <<
"map_star_fait_srdrdt: Compactified domain not allowed !" << endl;
814 cout <<
"map_star_fait_srdrdt: unknown type_r !" << endl ;
831Mtbl* map_star_fait_srstdrdp(
const Map* cvi) {
835 const Mg3d* mg = cv->get_mg() ;
840 mti->set_etat_qcq() ;
843 const Valeur& alpha = cv->get_alpha() ;
845 const Valeur& beta = cv->get_beta() ;
849 for (
int l=0 ; l<nz ; l++) {
851 int nr = mg->get_nr(l);
852 int nt = mg->get_nt(l) ;
853 int np = mg->get_np(l) ;
854 const Grille3d* g = mg->get_grille3d(l) ;
855 Tbl* tb = (mti->t)[l] ;
857 double* p_r = tb->t ;
859 switch(mg->get_type_r(l)) {
863 for (
int k=0 ; k<np ; k++) {
864 for (
int j=0 ; j<nt ; j++) {
865 for (
int i=0 ; i<nr ; i++) {
866 *p_r = stalphadp(l,k,j,0) / alpha(l,k,j,0) ;
875 for (
int k=0 ; k<np ; k++) {
876 for (
int j=0 ; j<nt ; j++) {
877 for (
int i=0 ; i<nr ; i++) {
878 *p_r = (stalphadp(l,k,j,0)*(g->x)[i] + stbetadp(l,k,j,0)) / (alpha(l,k,j,0)*(g->x)[i] + beta(l,k,j,0)) ;
887 cout <<
"map_star_fait_srstdrdp: Compactified domain not allowed !" << endl;
893 cout <<
"map_star_fait_srstdrdp: unknown type_r !" << endl ;
910Mtbl* map_star_fait_sr2drdt(
const Map* cvi) {
914 const Mg3d* mg = cv->get_mg() ;
919 mti->set_etat_qcq() ;
922 const Valeur& alpha = cv->get_alpha() ;
926 for (
int l=0 ; l<nz ; l++) {
928 int nr = mg->get_nr(l);
929 int nt = mg->get_nt(l) ;
930 int np = mg->get_np(l) ;
931 const Grille3d* g = mg->get_grille3d(l) ;
932 Tbl* tb = (mti->t)[l] ;
934 double* p_r = tb->t ;
936 switch(mg->get_type_r(l)) {
940 for (
int k=0 ; k<np ; k++) {
941 for (
int j=0 ; j<nt ; j++) {
942 for (
int i=0 ; i<nr ; i++) {
943 double ww = alpha(l,k,j,0) ;
944 *p_r = dalphadt(l,k,j,0) / (ww*ww * (g->x)[i]) ;
953 cout <<
"map_star_fait_sr2drdt: Shells not implemented yet..." << endl;
959 cout <<
"map_star_fait_sr2drdt: Compactified domain not allowed !" << endl;
965 cout <<
"map_star_fait_sr2drdt: unknown type_r !" << endl ;
982Mtbl* map_star_fait_sr2stdrdp(
const Map* cvi) {
986 const Mg3d* mg = cv->get_mg() ;
991 mti->set_etat_qcq() ;
994 const Valeur& alpha = cv->get_alpha() ;
998 for (
int l=0 ; l<nz ; l++) {
1000 int nr = mg->get_nr(l);
1001 int nt = mg->get_nt(l) ;
1002 int np = mg->get_np(l) ;
1003 const Grille3d* g = mg->get_grille3d(l) ;
1004 Tbl* tb = (mti->t)[l] ;
1006 double* p_r = tb->t ;
1008 switch(mg->get_type_r(l)) {
1012 for (
int k=0 ; k<np ; k++) {
1013 for (
int j=0 ; j<nt ; j++) {
1014 for (
int i=0 ; i<nr ; i++) {
1015 double ww = alpha(l,k,j,0) ;
1016 *p_r = stalphadp(l,k,j,0) / (ww*ww * (g->x)[i]) ;
1025 cout <<
"map_star_fait_sr2stdrdp: Shells not implemented yet..." << endl;
1031 cout <<
"map_star_fait_sr2stdrdp: Compactified domain not allowed !" << endl;
1037 cout <<
"map_star_fait_sr2stdrdp: unknown type_r !" << endl ;
1054Mtbl* map_star_fait_d2rdx2(
const Map* cvi) {
1057 const Mg3d* mg = cvi->get_mg() ;
1061 mti->set_etat_zero() ;
1072Mtbl* map_star_fait_lapr_tp(
const Map* cvi) {
1076 const Mg3d* mg = cv->get_mg() ;
1081 mti->set_etat_qcq() ;
1084 const Valeur& alpha = cv->get_alpha() ;
1086 Valeur alpha_tmp = alpha ;
1091 for (
int l=0 ; l<nz ; l++) {
1093 const Grille3d* g = mg->get_grille3d(l) ;
1096 int nt = mg->get_nt(l) ;
1097 int np = mg->get_np(l) ;
1099 Tbl* tb = (mti->t)[l] ;
1101 double* p_r = tb->t ;
1103 switch(mg->get_type_r(l)) {
1107 for (
int k=0 ; k<np ; k++) {
1108 for (
int j=0 ; j<nt ; j++) {
1109 for (
int i=0 ; i<nr ; i++) {
1110 *p_r = (g->x)[i]*lapalpha(l,k,j,0) ;
1119 cout <<
"map_star_fait_lapr_tp: Shells not implemented yet..." << endl;
1125 cout <<
"map_star_fait_lapr_tp: Compactified domain not allowed !" << endl;
1131 cout <<
"map_star_fait_lapr_tp: unknown type_r !" << endl ;
1148Mtbl* map_star_fait_d2rdtdx(
const Map* cvi) {
1152 const Mg3d* mg = cv->get_mg() ;
1157 mti->set_etat_qcq() ;
1160 const Valeur& alpha = cv->get_alpha() ;
1164 for (
int l=0 ; l<nz ; l++) {
1166 int nr = mg->get_nr(l);
1167 int nt = mg->get_nt(l) ;
1168 int np = mg->get_np(l) ;
1170 Tbl* tb = (mti->t)[l] ;
1172 double* p_r = tb->t ;
1174 switch(mg->get_type_r(l)) {
1178 for (
int k=0 ; k<np ; k++) {
1179 for (
int j=0 ; j<nt ; j++) {
1180 for (
int i=0 ; i<nr ; i++) {
1181 *p_r = d2alphadxdt(l,k,j,0)/alpha(l,k,j,0) ;
1189 cout <<
"map_star_fait_d2rdtdx: Shells not implemented yet..." << endl;
1195 cout <<
"map_star_fait_d2rdtdx: Compactified domain not allowed !" << endl;
1201 cout <<
"map_star_fait_d2rdtdx: unknown type_r !" << endl ;
1218Mtbl* map_star_fait_sstd2rdpdx(
const Map* cvi) {
1222 const Mg3d* mg = cv->get_mg() ;
1227 mti->set_etat_qcq() ;
1230 const Valeur& alpha = cv->get_alpha() ;
1234 for (
int l=0 ; l<nz ; l++) {
1236 int nr = mg->get_nr(l);
1237 int nt = mg->get_nt(l) ;
1238 int np = mg->get_np(l) ;
1239 const Grille3d* g = mg->get_grille3d(l) ;
1240 Tbl* tb = (mti->t)[l] ;
1242 double* p_r = tb->t ;
1244 switch(mg->get_type_r(l)) {
1248 for (
int k=0 ; k<np ; k++) {
1249 for (
int j=0 ; j<nt ; j++) {
1250 for (
int i=0 ; i<nr ; i++) {
1251 *p_r = stalphadp(l,k,j,0) ;
1260 cout <<
"map_star_fait_sstd2rdpdx: Shells not implemented yet..." << endl;
1266 cout <<
"map_star_fait_sstd2rdpdx: Compactified domain not allowed !" << endl;
1272 cout <<
"map_star_fait_sstd2rdpdx: unknown type_r !" << endl ;
1290Mtbl* map_star_fait_sr2d2rdt2(
const Map* cvi) {
1294 const Mg3d* mg = cv->get_mg() ;
1299 mti->set_etat_qcq() ;
1302 const Valeur& alpha = cv->get_alpha() ;
1306 for (
int l=0 ; l<nz ; l++) {
1308 int nr = mg->get_nr(l);
1309 int nt = mg->get_nt(l) ;
1310 int np = mg->get_np(l) ;
1311 const Grille3d* g = mg->get_grille3d(l) ;
1312 Tbl* tb = (mti->t)[l] ;
1314 double* p_r = tb->t ;
1316 switch(mg->get_type_r(l)) {
1320 for (
int k=0 ; k<np ; k++) {
1321 for (
int j=0 ; j<nt ; j++) {
1322 for (
int i=0 ; i<nr ; i++) {
1323 double ww = alpha(l,k,j,0) ;
1324 *p_r = d2alphadt2(l,k,j,0) / (ww*ww * (g->x)[i]) ;
1332 cout <<
"map_star_fait_drdt: Shells not implemented yet..." << endl;
1338 cout <<
"map_star_fait_drdt: Compactified domain not allowed !" << endl;
1344 cout <<
"map_star_fait_drdt: unknown type_r !" << endl ;
3D grid class in one domain.
double * x
Array of values of at the nr collocation points.
double * tet
Array of values of at the nt collocation points.
int get_nr() const
Returns nr.
const Valeur & get_alpha() const
Returns the reference on the Tbl alpha.
Map_star(const Mg3d &mgrille, const double *r_limits)
Standard Constructor.
friend Mtbl * map_star_fait_r(const Map *)
< Not implemented
Valeur alpha
Array (size: mg->nzone*Nt*Np ) of the values of in each domain.
const Grille3d * get_grille3d(int l) const
Returns a pointer on the 3D mono-grid for domain no. l.
int get_np(int l) const
Returns the number of points in the azimuthal direction ( ) in domain no. l.
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.
int get_type_r(int l) const
Returns the type of sampling in the radial direction in domain no.
Tbl ** t
Array (size nzone ) of pointers on the Tbl 's.
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 * t
The array of double.
Values and coefficients of a (real-value) function.
const Valeur & d2sdt2() const
Returns of *this.
const Valeur & stdsdp() const
Returns of *this.
void ylm()
Computes the coefficients of *this.
const Valeur & dsdt() const
Returns of *this.
const Valeur & dsdx() const
Returns of *this.
const Valeur & lapang() const
Returns the angular Laplacian of *this.
Cmp sin(const Cmp &)
Sine.
Cmp cos(const Cmp &)
Cosine.
Map(const Mg3d &)
Constructor from a multi-domain 3D grid.
Coord phi
coordinate centered on the grid