20 #include "Kadath_point_h/kadath.hpp"
37 num_dom{so.num_dom}, ndim{so.ndim}, nbr_points{so.nbr_points}, nbr_coefs{so.nbr_coefs}, type_base{so.type_base},
38 coloc{ndim,do_not_initialize}, absol{ndim,do_not_initialize}, cart{ndim,do_not_initialize},
39 radius{so.radius ? new
Val_domain{*so.radius} : nullptr}, cart_surr{ndim,do_not_initialize}
49 num_dom(num), ndim{}, nbr_points(fd), nbr_coefs(fd), type_base{}, coloc{}, absol{}, cart{}, radius{nullptr},
52 fread_be (&
ndim,
sizeof(
int), 1, fd) ;
53 fread_be (&
type_base,
sizeof(
int), 1, fd) ;
57 for (
auto & x :
coloc) x =
nullptr;
59 for (
auto & x :
absol) x = nullptr ;
61 for (
auto & x :
cart) x = nullptr ;
71 fwrite_be (&
ndim,
sizeof(
int), 1, fd) ;
72 fwrite_be (&
type_base,
sizeof(
int), 1, fd) ;
78 for (
int l=0 ; l<
ndim ; l++) {
79 safe_delete(
coloc[l]);
80 safe_delete(
absol[l]);
90 cerr <<
"In the general case, Laplacian must be called with m=0" << endl ;
101 cerr <<
"laplacian2 not implemented for" << endl ;
102 cerr << *
this << endl ;
111 for (
int i=0 ; i<n_ope ; i++)
116 for (
int i=0 ; i<n_ope ; i++)
117 parts_val[i] = parts[i]->val_t ;
119 Tensor res_val (
import(numdom, bound, n_ope, zedoms, parts_val)) ;
120 delete [] parts_val ;
124 for (
int i=0 ; i<n_ope ; i++)
125 if (parts[i]->
der_t==
nullptr)
130 for (
int i=0 ; i<n_ope ; i++)
131 parts_der[i] = parts[i]->
der_t ;
132 Tensor res_der (
import(numdom, bound, n_ope, zedoms, parts_der)) ;
133 delete [] parts_der ;
134 return Term_eq (numdom, res_val, res_der) ;
137 return Term_eq (numdom, res_val) ;
180 if (so.
der_t!=
nullptr) {
191 cerr <<
"integ_term_eq only defined with respect for a tensor" << endl ;
196 cerr <<
"integ_term_eq only defined with respect to a scalar" << endl ;
210 resval =
integ(value, bound) ;
212 if (so.
der_t!=
nullptr) {
218 resder =
integ(value_der, bound) ;
239 Val_domain auxi ((this->*pfunc)(value, val)) ;
253 if (target.
der_t!=
nullptr) {
261 Val_domain auxi ((this->*pfunc)(value, val)) ;
308 if (target.
der_t!=
nullptr) {
342 type_ind.
set(0) = COV ;
343 for (
int i=1 ; i<val_res ; i++)
353 Index pos_auxi(auxi_val) ;
356 for (
int i=0 ; i<val_res-1 ; i++)
357 pos_so.
set(i) = pos_auxi(i+1) ;
358 auxi_val.
set(pos_auxi).
set_domain(dom) = (*so.
val_t)(pos_so)(dom).der_abs(pos_auxi(0)+1) ;
360 while (pos_auxi.
inc()) ;
362 if (so.
der_t==
nullptr) {
363 return Term_eq (dom, auxi_val) ;
371 Index pos_auxi_der(auxi_der) ;
373 for (
int i=0 ; i<val_res-1 ; i++)
374 pos_so.
set(i) = pos_auxi_der(i+1) ;
375 auxi_der.
set(pos_auxi_der).
set_domain(dom) = (*so.
der_t)(pos_so)(dom).der_abs(pos_auxi_der(0)+1) ;
377 while (pos_auxi_der.
inc()) ;
379 return Term_eq (dom, auxi_val, auxi_der) ;
390 type_ind.
set(0) = COV ;
391 for (
int i=1 ; i<val_res ; i++)
401 Index pos_auxi(auxi_val) ;
404 for (
int i=0 ; i<val_res-1 ; i++)
405 pos_so.
set(i) = pos_auxi(i+1) ;
406 switch (pos_auxi(0)) {
420 cerr <<
"Bad indice in Domain::derive_partial_spher" << endl ;
424 while (pos_auxi.
inc()) ;
426 if (so.
der_t==
nullptr) {
427 return Term_eq (dom, auxi_val) ;
435 Index pos_auxi_der(auxi_der) ;
437 for (
int i=0 ; i<val_res-1 ; i++)
438 pos_so.
set(i) = pos_auxi_der(i+1) ;
439 switch (pos_auxi_der(0)) {
453 cerr <<
"Bad indice in Domain::derive_partial_spher" << endl ;
457 while (pos_auxi_der.
inc()) ;
459 return Term_eq (dom, auxi_val, auxi_der) ;
470 type_ind.
set(0) = COV ;
471 for (
int i=1 ; i<val_res ; i++)
481 Index pos_auxi(auxi_val) ;
484 for (
int i=0 ; i<val_res-1 ; i++)
485 pos_so.
set(i) = pos_auxi(i+1) ;
486 switch (pos_auxi(0)) {
500 cerr <<
"Bad indice in Domain::derive_partial_mtz" << endl ;
504 while (pos_auxi.
inc()) ;
506 if (so.
der_t==
nullptr) {
507 return Term_eq (dom, auxi_val) ;
515 Index pos_auxi_der(auxi_der) ;
517 for (
int i=0 ; i<val_res-1 ; i++)
518 pos_so.
set(i) = pos_auxi_der(i+1) ;
519 switch (pos_auxi_der(0)) {
533 cerr <<
"Bad indice in Domain::derive_partial_mtz" << endl ;
537 while (pos_auxi_der.
inc()) ;
539 return Term_eq (dom, auxi_val, auxi_der) ;
553 type_ind.
set(0) = COV ;
554 for (
int i=1 ; i<val_res ; i++)
561 for (
int cmp=0 ; cmp<auxi_val.
get_n_comp() ; cmp ++)
564 for (
int ind_sum=0 ; ind_sum<valence ; ind_sum++) {
567 Index pos_auxi(auxi_val) ;
571 for (
int i=0 ; i<valence ; i++)
572 pos_so.
set(i) = pos_auxi(i+1) ;
574 switch (pos_auxi(0)) {
581 switch (pos_auxi(ind_sum+1)) {
584 pos_so.
set(ind_sum) = 1 ;
589 pos_so.
set(ind_sum) = 0 ;
596 cerr <<
"Bad indice in Domain::connection_spher" << endl ;
603 switch (pos_auxi(ind_sum+1)) {
606 pos_so.
set(ind_sum) = 2 ;
611 pos_so.
set(ind_sum) = 2 ;
616 pos_so.
set(ind_sum) = 0 ;
618 pos_so.
set(ind_sum) = 1 ;
622 cerr <<
"Bad indice in Domain::connection_spher" << endl ;
627 cerr <<
"Bad indice in Domain::connection_spher" << endl ;
631 while (pos_auxi.
inc()) ;
635 if (so.
der_t==
nullptr) {
637 return Term_eq (dom, auxi_val) ;
644 for (
int cmp=0 ; cmp<auxi_der.
get_n_comp() ; cmp ++)
648 for (
int ind_sum=0 ; ind_sum<valence ; ind_sum++) {
651 Index pos_auxi_der(auxi_der) ;
655 for (
int i=0 ; i<valence ; i++)
656 pos_so.
set(i) = pos_auxi_der(i+1) ;
658 switch (pos_auxi_der(0)) {
665 switch (pos_auxi_der(ind_sum+1)) {
668 pos_so.
set(ind_sum) = 1 ;
673 pos_so.
set(ind_sum) = 0 ;
680 cerr <<
"Bad indice in Domain::connection_spher" << endl ;
687 switch (pos_auxi_der(ind_sum+1)) {
690 pos_so.
set(ind_sum) = 2 ;
695 pos_so.
set(ind_sum) = 2 ;
700 pos_so.
set(ind_sum) = 0 ;
702 pos_so.
set(ind_sum) = 1 ;
706 cerr <<
"Bad indice in Domain::connection_spher" << endl ;
711 cerr <<
"Bad indice in Domain::connection_spher" << endl ;
715 while (pos_auxi_der.
inc()) ;
718 return Term_eq (dom, auxi_val, auxi_der) ;
731 type_ind.
set(0) = COV ;
732 for (
int i=1 ; i<val_res ; i++)
739 for (
int cmp=0 ; cmp<auxi_val.
get_n_comp() ; cmp ++)
742 for (
int ind_sum=0 ; ind_sum<valence ; ind_sum++) {
745 Index pos_auxi(auxi_val) ;
749 for (
int i=0 ; i<valence ; i++)
750 pos_so.
set(i) = pos_auxi(i+1) ;
752 switch (pos_auxi(0)) {
759 switch (pos_auxi(ind_sum+1)) {
762 pos_so.
set(ind_sum) = 1 ;
767 pos_so.
set(ind_sum) = 0 ;
774 cerr <<
"Bad indice in Domain::connection_mtz" << endl ;
781 switch (pos_auxi(ind_sum+1)) {
784 pos_so.
set(ind_sum) = 2 ;
789 pos_so.
set(ind_sum) = 2 ;
794 pos_so.
set(ind_sum) = 0 ;
796 pos_so.
set(ind_sum) = 1 ;
800 cerr <<
"Bad indice in Domain::connection_mtz" << endl ;
805 cerr <<
"Bad indice in Domain::connection_mtz" << endl ;
809 while (pos_auxi.
inc()) ;
813 if (so.
der_t==
nullptr) {
815 return Term_eq (dom, auxi_val) ;
822 for (
int cmp=0 ; cmp<auxi_der.
get_n_comp() ; cmp ++)
826 for (
int ind_sum=0 ; ind_sum<valence ; ind_sum++) {
829 Index pos_auxi_der(auxi_der) ;
833 for (
int i=0 ; i<valence ; i++)
834 pos_so.
set(i) = pos_auxi_der(i+1) ;
836 switch (pos_auxi_der(0)) {
843 switch (pos_auxi_der(ind_sum+1)) {
846 pos_so.
set(ind_sum) = 1 ;
851 pos_so.
set(ind_sum) = 0 ;
858 cerr <<
"Bad indice in Domain::connection_mtz" << endl ;
865 switch (pos_auxi_der(ind_sum+1)) {
868 pos_so.
set(ind_sum) = 2 ;
873 pos_so.
set(ind_sum) = 2 ;
878 pos_so.
set(ind_sum) = 0 ;
880 pos_so.
set(ind_sum) = 1 ;
884 cerr <<
"Bad indice in Domain::connection_mtz" << endl ;
889 cerr <<
"Bad indice in Domain::connection_mtz" << endl ;
893 while (pos_auxi_der.
inc()) ;
896 return Term_eq (dom, auxi_val, auxi_der) ;
907 cerr <<
"Ope_int_volume only defined with respect for a tensor" << endl ;
912 cerr <<
"Ope_int_volume only defined with respect to a scalar" << endl ;
925 if (target.
der_t!=
nullptr) {
932 Term_eq res (dom, resval, resder) ;
943 cerr <<
"is_in not implemented for" << endl ;
944 cerr << *
this << endl ;
949 cerr <<
"Absol_to_num not implemented for" << endl ;
950 cerr << *
this << endl ;
955 cerr <<
"Absol_to_num_bound not implemented for" << endl ;
956 cerr << *
this << endl ;
961 cerr <<
"do_der_abs_from_der_var not implemented for" << endl ;
962 cerr << *
this << endl ;
967 cerr <<
"mult not implemented for" << endl ;
968 cerr << *
this << endl ;
973 cerr <<
"do_coloc not implemented for" << endl ;
974 cerr << *
this << endl ;
979 cerr <<
"Symetric Chebyshev spectral base not implemented for" << endl ;
980 cerr << *
this << endl ;
984 cerr <<
"Symetric Legendre spectral base not implemented for" << endl ;
985 cerr << *
this << endl ;
990 cerr <<
"Chebyshev spectral base for r not implemented for" << endl ;
991 cerr << *
this << endl ;
996 cerr <<
"Legendre spectral base for r not implemented for" << endl ;
997 cerr << *
this << endl ;
1002 cerr <<
"Anti symetric Chebyshev spectral base not implemented for" << endl ;
1003 cerr << *
this << endl ;
1008 cerr <<
"Anti symetric Legendre spectral base not implemented for" << endl ;
1009 cerr << *
this << endl ;
1013 cerr <<
"Symetric Chebyshev spectral base not implemented for" << endl ;
1014 cerr << *
this << endl ;
1019 cerr <<
"Symetric Legendre spectral base not implemented for" << endl ;
1020 cerr << *
this << endl ;
1025 cerr <<
"Anti symetric Chebyshev spectral base not implemented for" << endl ;
1026 cerr << *
this << endl ;
1031 cerr <<
"Anti symetric Legendre spectral base not implemented for" << endl ;
1032 cerr << *
this << endl ;
1037 cerr <<
"Chebyshev with xodd spectral base not implemented for" << endl ;
1038 cerr << *
this << endl ;
1043 cerr <<
"Legendre with xodd spectral base not implemented for" << endl ;
1044 cerr << *
this << endl ;
1049 cerr <<
"Chebyshev with todd spectral base not implemented for" << endl ;
1050 cerr << *
this << endl ;
1055 cerr <<
"Legendre with todd spectral base not implemented for" << endl ;
1056 cerr << *
this << endl ;
1061 cerr <<
"Chebyshev with X and T odd spectral base not implemented for" << endl ;
1062 cerr << *
this << endl ;
1067 cerr <<
"Odd Legendre with X and T odd spectral base not implemented for" << endl ;
1068 cerr << *
this << endl ;
1073 cerr <<
"Cheb base r not implemented for " << endl ;
1074 cerr << *
this << endl ;
1079 cerr <<
"Cheb base t not implemented for " << endl ;
1080 cerr << *
this << endl ;
1085 cerr <<
"Cheb base p not implemented for " << endl ;
1086 cerr << *
this << endl ;
1090 cerr <<
"Cheb base r MTZ not implemented for " << endl ;
1091 cerr << *
this << endl ;
1096 cerr <<
"Cheb base t MTZ not implemented for " << endl ;
1097 cerr << *
this << endl ;
1102 cerr <<
"Cheb base p MTZ not implemented for " << endl ;
1103 cerr << *
this << endl ;
1107 cerr <<
"Cheb base rt not implemented for " << endl ;
1108 cerr << *
this << endl ;
1113 cerr <<
"Cheb base rp not implemented for " << endl ;
1114 cerr << *
this << endl ;
1119 cerr <<
"Cheb base tp not implemented for " << endl ;
1120 cerr << *
this << endl ;
1124 cerr <<
"Legendre base r not implemented for " << endl ;
1125 cerr << *
this << endl ;
1130 cerr <<
"Legendre base t not implemented for " << endl ;
1131 cerr << *
this << endl ;
1136 cerr <<
"Legendre base p not implemented for " << endl ;
1137 cerr << *
this << endl ;
1142 cerr <<
"Legendre base r MTZ not implemented for " << endl ;
1143 cerr << *
this << endl ;
1148 cerr <<
"Legendre base t MTZ not implemented for " << endl ;
1149 cerr << *
this << endl ;
1154 cerr <<
"Legendre base p MTZ not implemented for " << endl ;
1155 cerr << *
this << endl ;
1159 cerr <<
"Cheb base with odd cosines not implemented for " << endl ;
1160 cerr << *
this << endl ;
1165 cerr <<
"Legendre base with odd cosines not implemented for " << endl ;
1166 cerr << *
this << endl ;
1170 cerr <<
"Cheb base xy not implemented for " << endl ;
1171 cerr << *
this << endl ;
1177 cerr <<
"Cheb base xz not implemented for " << endl ;
1178 cerr << *
this << endl ;
1184 cerr <<
"Cheb base yz not implemented for " << endl ;
1185 cerr << *
this << endl ;
1225 cerr <<
"Multiplication by cos(theta) not implemented for" << endl ;
1226 cerr << *
this << endl ;
1231 cerr <<
"Multiplication by cos(phi) not implemented for" << endl ;
1232 cerr << *
this << endl ;
1237 cerr <<
"Multiplication by sin(theta) not implemented for" << endl ;
1238 cerr << *
this << endl ;
1243 cerr <<
"Multiplication by sin(phi) not implemented for this type of domain" << endl ;
1244 cerr << *
this << endl ;
1249 cerr <<
"Division by sin(theta) not implemented for" << endl ;
1250 cerr << *
this << endl ;
1255 cerr <<
"Division by cos(theta) not implemented for" << endl ;
1256 cerr << *
this << endl ;
1261 cerr <<
"Division by x not implemented for" << endl ;
1262 cerr << *
this << endl ;
1267 cerr <<
"set_val_inf not defined for" << endl ;
1268 cerr << *
this << endl ;
1273 cerr <<
"Division by (x-1) not implemented for" << endl ;
1274 cerr << *
this << endl ;
1279 cerr <<
"Division by (x+1) not implemented for" << endl ;
1280 cerr << *
this << endl ;
1285 cerr <<
"Division by 1 - r/L not implemented for" << endl ;
1286 cerr << *
this << endl ;
1292 cerr <<
"Multiplication by 1 - r/L not implemented for" << endl ;
1293 cerr << *
this << endl ;
1298 cerr <<
"Multiplication by (x-1) not implemented for" << endl ;
1299 cerr << *
this << endl ;
1304 cerr <<
"Multiplication by r not implemented for" << endl ;
1305 cerr << *
this << endl ;
1310 cerr <<
"Multiplication by x not implemented for" << endl ;
1311 cerr << *
this << endl ;
1316 cerr <<
"Multiplication by cos(time) not implemented for" << endl ;
1317 cerr << *
this << endl ;
1322 cerr <<
"Multiplication by sin(time) not implemented for" << endl ;
1323 cerr << *
this << endl ;
1328 cerr <<
"Divison by 1-x^2 not implemented for" << endl ;
1329 cerr << *
this << endl ;
1334 cerr <<
"srdr not implemented for" << endl ;
1335 cerr << *
this << endl ;
1340 cerr <<
"Division by r not implemented for" << endl ;
1341 cerr << *
this << endl ;
1346 cerr <<
"Division by sin(chi) not implemented for" << endl ;
1347 cerr << *
this << endl ;
1352 cerr <<
"Division by chi not implemented for" << endl ;
1353 cerr << *
this << endl ;
1358 cerr <<
"change_basis_cart_to_spher not implemented for" << endl ;
1359 cerr << *
this << endl ;
1364 cerr <<
"change_basis_spher_to_cart not implemented for" << endl ;
1365 cerr << *
this << endl ;
1370 cerr <<
"No rmax for" << endl ;
1371 cerr << *
this << endl ;
1376 cerr <<
"No rmin for" << endl ;
1377 cerr << *
this << endl ;
1382 cerr <<
"No center for" << endl ;
1383 cerr << *
this << endl ;
1388 cerr <<
"No chi for" << endl ;
1389 cerr << *
this << endl ;
1394 cerr <<
"No eta for" << endl ;
1395 cerr << *
this << endl ;
1400 cerr <<
"No X for" << endl ;
1401 cerr << *
this << endl ;
1406 cerr <<
"No T for" << endl ;
1407 cerr << *
this << endl ;
1412 cerr <<
"find_other_dom not implemented for" << endl ;
1413 cerr << *
this << endl ;
1418 cerr <<
"der_normal not implemented for" << endl ;
1419 cerr << *
this << endl ;
1424 cerr <<
"der_partial_var not implemented for" << endl ;
1425 cerr << *
this << endl ;
1430 cerr <<
"der_r not implemented for" << endl ;
1431 cerr << *
this << endl ;
1436 cerr <<
"der_t not implemented for" << endl ;
1437 cerr << *
this << endl ;
1441 cerr <<
"der_p not implemented for" << endl ;
1442 cerr << *
this << endl ;
1447 cerr <<
"der_r_rtwo not implemented for" << endl ;
1448 cerr << *
this << endl ;
1457 cerr <<
"ddp not implemented for" << endl ;
1458 cerr << *
this << endl ;
1463 cerr <<
"ddt not implemented for" << endl ;
1464 cerr << *
this << endl ;
1469 cerr <<
"dt not implemented for" << endl ;
1470 cerr << *
this << endl ;
1475 cerr <<
"dtime not implemented for" << endl ;
1476 cerr << *
this << endl ;
1481 cerr <<
"ddtime not implemented for" << endl ;
1482 cerr << *
this << endl ;
1487 cerr <<
"integ not implemented for" << endl ;
1488 cerr << *
this << endl ;
1493 cerr <<
"integrale not implemented for" << endl ;
1494 cerr << *
this << endl ;
1499 cerr <<
"nbr_unknowns not implemented for" << endl ;
1500 cerr << *
this << endl ;
1505 cerr <<
"nbr_conditions not implemented for" << endl ;
1506 cerr << *
this << endl ;
1511 cerr <<
"nbr_conditions (with array) not implemented for" << endl ;
1512 cerr << *
this << endl ;
1517 cerr <<
"nbr_conditions_boundary not implemented for" << endl ;
1518 cerr << *
this << endl ;
1523 cerr <<
"nbr_conditions_boundary (array version) not implemented for" << endl ;
1524 cerr << *
this << endl ;
1528 cerr <<
"nbr_conditions_boundary_one_side not implemented for" << endl ;
1529 cerr << *
this << endl ;
1534 cerr <<
"export_tau not implemented for" << endl ;
1535 cerr << *
this << endl ;
1540 cerr <<
"export_tau (with array) not implemented for" << endl ;
1541 cerr << *
this << endl ;
1546 cerr <<
"export_tau_boundary not implemented for" << endl ;
1547 cerr << *
this << endl ;
1552 cerr <<
"export_tau_boundary_exception not implemented for" << endl ;
1553 cerr << *
this << endl ;
1558 cerr <<
"export_tau_boundary (with array) not implemented for" << endl ;
1559 cerr << *
this << endl ;
1564 cerr <<
"export_tau_boundary_one_side not implemented for" << endl ;
1565 cerr << *
this << endl ;
1570 cerr <<
"affecte_tau not implemented for" << endl ;
1571 cerr << *
this << endl ;
1576 cerr <<
"affecte_tau_one_coef not implemented for" << endl ;
1577 cerr << *
this << endl ;
1582 cerr <<
"val_boundary not implemented for" << endl ;
1583 cerr << *
this << endl ;
1588 cerr <<
"nbr_points_boundary not implemented for" << endl ;
1589 cerr << *
this << endl ;
1594 cerr <<
"do_which_points_boundary not implemented for" << endl ;
1595 cerr << *
this << endl ;
1600 cerr <<
"do_absol not implemented for" << endl ;
1601 cerr << *
this << endl ;
1606 cerr <<
"do_cart not implemented for" << endl ;
1607 cerr << *
this << endl ;
1612 cerr <<
"do_cart_surr not implemented for" << endl ;
1613 cerr << *
this << endl ;
1618 cerr <<
"do_radius not implemented for" << endl ;
1619 cerr << *
this << endl ;
1624 cerr <<
"multipoles sym not implemented for" << endl ;
1625 cerr << *
this << endl ;
1630 cerr <<
"multipoles asym not implemented for" << endl ;
1631 cerr << *
this << endl ;
1636 cerr <<
"multipoles sym not implemented for" << endl ;
1637 cerr << *
this << endl ;
1642 cerr <<
"multipoles asym not implemented for" << endl ;
1643 cerr << *
this << endl ;
1648 cerr <<
"radial part sym not implemented for" << endl ;
1649 cerr << *
this << endl ;
1650 cerr <<
"and function " << f << endl ;
1655 cerr <<
"radial part asym not implemented for" << endl ;
1656 cerr << *
this << endl ;
1657 cerr <<
"and function " << f << endl ;
1662 cerr <<
"harmonics_sym not implemented for" << endl ;
1663 cerr << *
this << endl ;
1664 cerr <<
"and function " << f << endl ;
1669 cerr <<
"harmonics_asym not implemented for" << endl ;
1670 cerr << *
this << endl ;
1671 cerr <<
"and function " << f << endl ;
1676 cerr <<
"der multipoles sym not implemented for" << endl ;
1677 cerr << *
this << endl ;
1682 cerr <<
"der multipoles asym not implemented for" << endl ;
1683 cerr << *
this << endl ;
1688 cerr <<
"der radial part sym not implemented for" << endl ;
1689 cerr << *
this << endl ;
1690 cerr <<
"and function " << f << endl ;
1695 cerr <<
"der radial part asym not implemented for" << endl ;
1696 cerr << *
this << endl ;
1697 cerr <<
"and function " << f << endl ;
1702 cerr <<
"der_harmonics_sym not implemented for" << endl ;
1703 cerr << *
this << endl ;
1704 cerr <<
"and function " << f << endl ;
1709 cerr <<
"der harmonics_asym not implemented for" << endl ;
1710 cerr << *
this << endl ;
1711 cerr <<
"and function " << f << endl ;
1716 cerr <<
"give_normal not implemented for" << endl ;
1717 cerr << *
this << endl ;
1722 cerr <<
"derive_flat_spher not implemented for" << endl ;
1723 cerr << *
this << endl ;
1728 cerr <<
"derive_flat_mtz not implemented for" << endl ;
1729 cerr << *
this << endl ;
1734 cerr <<
"derive_flat_cart not implemented for" << endl ;
1735 cerr << *
this << endl ;
1744 cerr <<
"import not implemented for" << endl ;
1745 cerr << *
this << endl ;
1754 cerr <<
"Integ volume not implemented for " << endl ;
1755 cerr << *
this << endl ;
1760 cerr <<
"Filter not implemented for" << endl ;
1761 cerr << *
this << endl ;
reference set(const Index &pos)
Read/write of an element.
Class for storing the basis of decompositions of a field.
Describes the tensorial basis used by the various tensors.
int & set_basis(int nd)
Read/write the basis in a given domain.
int get_ndim() const
Returns the number of dimensions.
void save(FILE *) const
Save function.
Abstract class that implements the fonctionnalities common to all the type of domains.
virtual void del_deriv()
Destroys the derivated members (like coloc, cart and radius), when changing the type of colocation po...
virtual void export_tau_array(const Tensor &eq, int dom, const Array< int > &order, Array< double > &res, int &pos_res, const Array< int > &ncond, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to one tensorial one in the bulk.
Val_domain * radius
The generalized radius.
virtual Val_domain div_cos_theta(const Val_domain &) const
Division by .
virtual const Val_domain & get_T() const
Returns the variable .
virtual void set_legendre_base_odd(Base_spectral &so) const
Gives the base using odd Legendre polynomials$.
virtual Point get_center() const
Returns the center.
virtual void set_cheb_base_yz_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual Val_domain laplacian(const Val_domain &so, int m) const
Computes the ordinary flat Laplacian for a scalar field with an harmonic index m.
Term_eq import(int numdom, int bound, int n_ope, Term_eq **parts) const
Gets the value of a Term_eq by importing data from neighboring domains, on a boundary.
virtual Val_domain ddr(const Val_domain &so) const
Compute the second radial derivative w of a scalar field.
virtual void set_cheb_base_r_mtz(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the radial component of a vector in the MTZ setting.
virtual Term_eq derive_flat_spher(int tipe, char ind, const Term_eq &so, const Metric *manip) const
Computes the flat derivative of a Term_eq, in spherical orthonormal coordinates.
Memory_mapped_array< Val_domain * > cart
Cartesian coordinates.
virtual Term_eq partial_mtz(const Term_eq &so) const
Computes the part of the gradient containing the partial derivative of the field, in orthonormal coor...
virtual void set_val_inf(Val_domain &so, double xx) const
Sets the value at infinity of a Val_domain : not implemented for this type of Domain.
virtual void filter(Tensor &tt, int dom, double treshold) const
Puts to zero all the coefficients below a given treshold.
virtual void do_der_abs_from_der_var(const Val_domain *const *const der_var, Val_domain **const der_abs) const
Computes the derivative with respect to the absolute Cartesian coordinates from the derivative with r...
virtual Val_domain der_p(const Val_domain &so) const
Compute the derivative with respect to of a scalar field.
Memory_mapped_array< Val_domain * > absol
Asbolute coordinates (if defined ; usually Cartesian-like)
virtual void set_anti_legendre_base(Base_spectral &so) const
Gives the base using Legendre polynomials, for functions antisymetric with respect to .
int get_ndim() const
Returns the number of dimensions.
virtual Base_spectral mult(const Base_spectral &, const Base_spectral &) const
Method for the multiplication of two Base_spectral.
virtual Val_domain mult_sin_theta(const Val_domain &) const
Multiplication by .
int ndim
Number of dimensions.
virtual Term_eq radial_part_sym(const Space &space, int k, int j, const Term_eq &omega, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m) const
Gives some radial fit for a given multipole, intended for symmetric scalar function.
virtual Val_domain mult_cos_phi(const Val_domain &) const
Multiplication by .
virtual Val_domain div_xm1(const Val_domain &) const
Division by .
Term_eq do_comp_by_comp(const Term_eq &so, Val_domain(Domain::*pfunc)(const Val_domain &) const) const
Function used to apply the same operation to all the components of a tensor, in the current domain.
virtual Val_domain div_sin_chi(const Val_domain &) const
Division by .
virtual Val_domain div_1mrsL(const Val_domain &so) const
Division by .
virtual Val_domain mult_cos_time(const Val_domain &) const
Multiplication by .
virtual Term_eq integ_term_eq(const Term_eq &so, int bound) const
Surface integral of a Term_eq.
virtual double get_rmax() const
Returns the maximum radius.
virtual Array< int > nbr_conditions_array(const Tensor &eq, int dom, const Array< int > &order, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
virtual Val_domain ddp(const Val_domain &so) const
Compute the second derivative with respect to of a scalar field.
virtual Val_domain der_r(const Val_domain &so) const
Compute the radial derivative of a scalar field.
virtual Val_domain der_partial_var(const Val_domain &so, int ind) const
Partial derivative with respect to a coordinate.
virtual const Term_eq * give_normal(int bound, int tipe) const
Returns the vector normal to a surface.
Memory_mapped_array< Val_domain * > cart_surr
Cartesian coordinates divided by the radius.
virtual void update_term_eq(Term_eq *so) const
Update the value of a field, after the shape of the Domain has been changed by the system.
virtual void set_cheb_base_rt_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a 2-tensor.
virtual Val_domain dtime(const Val_domain &so) const
Computes the time derivative of a field.
virtual void set_legendre_base_t_mtz(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector in the MTZ context.
virtual Val_domain div_xp1(const Val_domain &) const
Division by .
virtual double val_boundary(int bound, const Val_domain &so, const Index &ind) const
Computes the value of a field at a boundary.
virtual Val_domain mult_xm1(const Val_domain &) const
Multiplication by .
virtual Term_eq div_r_term_eq(const Term_eq &) const
Division by of a Term_eq.
virtual void set_cheb_base_xz_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual Val_domain dt(const Val_domain &so) const
Compute the derivative with respect to of a scalar field.
virtual void set_cheb_xodd_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for odd functions in (critic space case)
virtual int nbr_unknowns(const Tensor &so, int dom) const
Computes the number of true unknowns of a Tensor, in a given domain.
virtual Val_domain div_r(const Val_domain &so) const
Division by .
virtual void do_cart_surr() const
Computes the Cartesian coordinates over the radius.
virtual void set_cheb_base_p_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual Val_domain der_r_rtwo(const Val_domain &so) const
Compute the radial derivative multiplied by of a scalar field.
virtual void set_cheb_base_t_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
Domain(int num, int ttype, const Dim_array &res)
Constructor from a number of points and a type of base.
virtual void export_tau(const Tensor &eq, int dom, int order, Array< double > &res, int &pos_res, const Array< int > &ncond, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one in the bulk.
virtual void set_legendre_base_r_spher(Base_spectral &so) const
Gives the base using Legendre polynomials, for the radial component of a vector.
virtual int nbr_points_boundary(int bound, const Base_spectral &base) const
Computes the number of relevant collocation points on a boundary.
int num_dom
Number of the current domain (used by the Space)
virtual void set_cheb_r_base(Base_spectral &so) const
Gives the base using odd Chebyshev polynomials$ for the radius.
virtual void set_cheb_base(Base_spectral &so) const
Gives the standard base for Chebyshev polynomials.
virtual bool is_in(const Point &xx, double prec=1e-13) const
Check whether a point lies inside Domain.
Term_eq do_comp_by_comp_with_int(const Term_eq &so, int val, Val_domain(Domain::*pfunc)(const Val_domain &, int) const) const
Function used to apply the same operation to all the components of a tensor, in the current domain.
virtual void set_cheb_base_z_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
Dim_array nbr_coefs
Number of coefficients.
virtual void set_cheb_base_rp_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a 2-tensor.
virtual Val_domain mult_x(const Val_domain &so) const
Multiplication by .
virtual Term_eq div_1mx2_term_eq(const Term_eq &) const
Returns the division by of a Term_eq.
virtual void set_legendre_base_y_cart(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual Val_domain div_sin_theta(const Val_domain &) const
Division by .
virtual Term_eq partial_cart(const Term_eq &so) const
Computes the part of the gradient containing the partial derivative of the field, in Cartesian coordi...
virtual void set_cheb_base_tp_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a 2-tensor.
virtual void set_legendre_xodd_base(Base_spectral &so) const
Gives the base using Legendre polynomials, for odd functions in (critic space case)
virtual const Val_domain & get_chi() const
Returns the variable .
virtual void set_legendre_base_with_m(Base_spectral &so, int m) const
Gives the stnadard base using Legendre polynomials.
virtual Array< int > nbr_conditions_boundary_array(const Tensor &eq, int dom, int bound, const Array< int > &order, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation on a boundary.
virtual const Point absol_to_num_bound(const Point &xxx, int bound) const
Computes the numerical coordinates from the physical ones for a point lying on a boundary.
virtual Val_domain mult_1mrsL(const Val_domain &so) const
Multiplication by .
virtual Term_eq der_harmonics_asym(const Term_eq &so, const Term_eq &omega, int bound, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m, const Array< double > &passage) const
Fit, spherical harmonic by spherical harmonic, for the radial derivative of an anti-symmetric functio...
virtual void set_cheb_todd_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for odd functions in (critic space case)
virtual Val_domain der_t(const Val_domain &so) const
Compute the derivative with respect to of a scalar field.
virtual Term_eq der_harmonics_sym(const Term_eq &so, const Term_eq &omega, int bound, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m, const Array< double > &passage) const
Fit, spherical harmonic by spherical harmonic, for the radial derivative of a symmetric function.
virtual double get_rmin() const
Returns the minimum radius.
virtual Val_domain mult_r(const Val_domain &so) const
Multiplication by .
virtual void set_cheb_base_y_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual void save(FILE *) const
Saving function.
virtual Array< int > nbr_conditions_boundary_one_side(const Tensor &eq, int dom, int bound, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation on a boundary.
virtual Val_domain mult_sin_time(const Val_domain &) const
Multiplication by .
virtual double multipoles_sym(int k, int j, int bound, const Val_domain &so, const Array< double > &passage) const
Extraction of a given multipole, at some boundary, for a symmetric scalar function.
virtual Val_domain srdr(const Val_domain &so) const
Compute the of a scalar field .
virtual Term_eq dtime_term_eq(const Term_eq &so) const
Time derivative of a Term_eq.
virtual double multipoles_asym(int k, int j, int bound, const Val_domain &so, const Array< double > &passage) const
Extraction of a given multipole, at some boundary, for a anti-symmetric scalar function.
virtual Term_eq der_multipoles_asym(int k, int j, int bound, const Term_eq &so, const Array< double > &passage) const
Extraction of a given multipole, at some boundary, for the radial derivative of an anti-symmetric sca...
virtual Term_eq connection_spher(const Term_eq &so) const
Computes the part of the gradient involving the connections, in spherical orthonormal coordinates.
virtual const Val_domain & get_X() const
Returns the variable .
virtual Val_domain div_1mx2(const Val_domain &) const
Division by .
virtual void set_anti_legendre_base_with_m(Base_spectral &so, int m) const
Gives the base using Legendre polynomials, for functions antisymetric with respect to .
virtual void export_tau_boundary(const Tensor &eq, int dom, int bound, Array< double > &res, int &pos_res, const Array< int > &ncond, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
virtual Term_eq lap2_term_eq(const Term_eq &so, int m) const
Returns the flat 2d-Laplacian of Term_eq, for a given harmonic.
virtual void affecte_tau_one_coef(Tensor &so, int dom, int cc, int &pos_cf) const
Sets at most one coefficient of a Tensor to 1.
virtual Term_eq dr_term_eq(const Term_eq &so) const
Radial derivative of a Term_eq.
virtual Val_domain ddt(const Val_domain &so) const
Compute the second derivative with respect to of a scalar field.
virtual void set_cheb_base_t_mtz(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector in the MTZ setting.
virtual Term_eq derive_flat_cart(int tipe, char ind, const Term_eq &so, const Metric *manip) const
Computes the flat derivative of a Term_eq, in Cartesian coordinates.
virtual Term_eq grad_term_eq(const Term_eq &so) const
Gradient of Term_eq.
virtual Term_eq der_radial_part_asym(const Space &space, int k, int j, const Term_eq &omega, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m) const
Gives some radial fit for a given multipole, intended for the radial derivative of an anti-symmetric ...
virtual void set_legendre_todd_base(Base_spectral &so) const
Gives the base using Legendre polynomials, for odd functions in (critic space case)
virtual void set_legendre_base_r_mtz(Base_spectral &so) const
Gives the base using Legendre polynomials, for the radial component of a vector in the MTZ context.
virtual Tensor change_basis_cart_to_spher(int dd, const Tensor &so) const
Changes the tensorial basis from Cartsian to spherical in a given domain.
virtual void set_legendre_base_z_cart(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual Val_domain mult_sin_phi(const Val_domain &) const
Multiplication by .
virtual void set_cheb_base_r_spher(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the radial component of a vector.
virtual Term_eq der_normal_term_eq(const Term_eq &so, int bound) const
Returns the normal derivative of a Term_eq.
virtual Term_eq partial_spher(const Term_eq &so) const
Computes the part of the gradient containing the partial derivative of the field, in spherical orthon...
virtual void do_which_points_boundary(int bound, const Base_spectral &base, Index **ind, int start) const
Lists all the indices corresponding to true collocation points on a boundary.
Dim_array nbr_points
Number of colocation points.
virtual void set_cheb_base_odd(Base_spectral &so) const
Gives the base using odd Chebyshev polynomials$.
virtual Array< int > nbr_conditions_boundary(const Tensor &eq, int dom, int bound, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation on a boundary.
virtual void set_cheb_xodd_todd_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for odd functions in and in (critic space case)
virtual void set_legendre_base_p_spher(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual Term_eq der_radial_part_sym(const Space &space, int k, int j, const Term_eq &omega, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param ¶m), const Param ¶m) const
Gives some radial fit for a given multipole, intended for the radial derivative of a symmetric scalar...
virtual Term_eq lap_term_eq(const Term_eq &so, int m) const
Returns the flat Laplacian of Term_eq, for a given harmonic.
virtual void set_legendre_base_t_spher(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual void export_tau_boundary_array(const Tensor &eq, int dom, int bound, const Array< int > &order, Array< double > &res, int &pos_res, const Array< int > &ncond, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to one tensorial one on a given boundary It makes us...
virtual Val_domain laplacian2(const Val_domain &so, int m) const
Computes the ordinary flat 2dè- Laplacian for a scalar field with an harmonic index m.
virtual Term_eq derive_flat_mtz(int tipe, char ind, const Term_eq &so, const Metric *manip) const
Computes the flat derivative of a Term_eq, in spherical coordinates where the constant radii sections...
int type_base
Type of colocation point :
virtual void set_legendre_base_x_cart(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector.
virtual Tensor change_basis_spher_to_cart(int dd, const Tensor &so) const
Changes the tensorial basis from spherical to Cartesian in a given domain.
virtual double integ_volume(const Val_domain &so) const
Volume integral.
virtual void set_cheb_base_x_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual void set_legendre_base_p_mtz(Base_spectral &so) const
Gives the base using Legendre polynomials, for the component of a vector in the MTZ context.
virtual Val_domain der_normal(const Val_domain &so, int bound) const
Normal derivative with respect to a given surface.
virtual void set_legendre_base(Base_spectral &so) const
Gives the standard base for Legendre polynomials.
virtual Term_eq harmonics_asym(const Term_eq &so, const Term_eq &omega, int bound, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m, const Array< double > &passage) const
Fit, spherical harmonic by spherical harmonic, for an anti-symmetric function.
virtual void do_cart() const
Computes the Cartesian coordinates.
virtual void set_cheb_base_xy_cart(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector.
virtual Term_eq harmonics_sym(const Term_eq &so, const Term_eq &omega, int bound, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m, const Array< double > &passage) const
Fit, spherical harmonic by spherical harmonic, for a symmetric function.
virtual void export_tau_boundary_one_side(const Tensor &eq, int dom, int bound, Array< double > &res, int &pos_res, const Array< int > &ncond, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to one tensorial one on a given boundary.
virtual Val_domain div_chi(const Val_domain &) const
Division by .
virtual void set_anti_cheb_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for functions antisymetric with respect to .
virtual void export_tau_boundary_exception(const Tensor &eq, int dom, int bound, Array< double > &res, int &pos_res, const Array< int > &ncond, const Param ¶m, int type_exception, const Tensor &exception, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to one tensorial one on a given boundary,...
virtual int give_place_var(char *name) const
Translates a name of a coordinate into its corresponding numerical name.
virtual void set_legendre_xodd_todd_base(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for odd functions in and in (critic space case)
virtual const Val_domain & get_eta() const
Returns the variable .
virtual Term_eq connection_mtz(const Term_eq &so) const
Computes the part of the gradient involving the connections, in spherical coordinates where the const...
virtual void affecte_tau(Tensor &so, int dom, const Array< double > &cf, int &pos_cf) const
Affects some coefficients to a Tensor.
virtual void set_cheb_base_p_mtz(Base_spectral &so) const
Gives the base using Chebyshev polynomials, for the component of a vector in the MTZ setting.
Memory_mapped_array< Array< double > * > coloc
Colocation points in each dimension (stored in ndim 1d- arrays)
virtual void find_other_dom(int dom, int bound, int &otherdom, int &otherbound) const
Gives the informations corresponding the a touching neighboring domain.
virtual void do_radius() const
Computes the generalized radius.
virtual Val_domain ddtime(const Val_domain &so) const
Computes the second time derivative of a field.
virtual Val_domain div_x(const Val_domain &) const
Division by .
virtual void set_legendre_r_base(Base_spectral &so) const
Gives the base using odd Legendre polynomials$ for the radius.
virtual Term_eq der_multipoles_sym(int k, int j, int bound, const Term_eq &so, const Array< double > &passage) const
Extraction of a given multipole, at some boundary, for the radial derivative a symmetric scalar funct...
virtual void set_cheb_base_with_m(Base_spectral &so, int m) const
Gives the standard base using Chebyshev polynomials.
virtual Val_domain mult_cos_theta(const Val_domain &) const
Multiplication by .
virtual void set_anti_cheb_base_with_m(Base_spectral &so, int m) const
Gives the base using Chebyshev polynomials, for functions antisymetric with respect to .
virtual Term_eq integ_volume_term_eq(const Term_eq &so) const
Volume integral of a Term_eq.
virtual void do_coloc()
Computes the colocation points.
virtual void do_absol() const
Computes the absolute coordinates.
virtual Term_eq radial_part_asym(const Space &space, int k, int j, const Term_eq &omega, Term_eq(*f)(const Space &, int, int, const Term_eq &, const Param &), const Param ¶m) const
Gives some radial fit for a given multipole, intended for anti-symmetric scalar function.
virtual Term_eq mult_r_term_eq(const Term_eq &so) const
Multiplication by of a Term_eq.
virtual double integ(const Val_domain &so, int bound) const
Surface integral on a given boundary.
virtual Term_eq ddtime_term_eq(const Term_eq &so) const
Second time derivative of a Term_eq.
virtual const Point absol_to_num(const Point &xxx) const
Computes the numerical coordinates from the physical ones.
virtual Array< int > nbr_conditions(const Tensor &eq, int dom, int order, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
virtual double integrale(const Val_domain &so) const
Volume integral.
Class that gives the position inside a multi-dimensional Array.
int & set(int i)
Read/write of the position in a given dimension.
bool inc(int increm, int var=0)
Increments the position of the Index.
Purely abstract class for metric handling.
int get_m_quant() const
Returns .
int & set_m_quant()
Sets .
The class Point is used to store the coordinates of a point.
Val_domain & set_domain(int)
Read/write of a particular Val_domain.
The Space class is an ensemble of domains describing the whole space of the computation.
Memory_mapped_array< char > name_indice
If the indices haves names they are stored here.
void set_name_affected()
Affects the name of the indices.
Param_tensor & set_parameters()
Read/write of the parameters.
const Param_tensor & get_parameters() const
Returns a pointer on the possible additional parameter.
Scalar & set(const Array< int > &ind)
Returns the value of a component (read/write version).
int get_index_type(int i) const
Gives the type (covariant or contravariant) of a given index.
int get_n_comp() const
Returns the number of stored components.
virtual Array< int > indices(int pos) const
Gives the values of the indices corresponding to a location in the array used for storage of the comp...
int get_valence() const
Returns the valence.
bool is_name_affected() const
Check whether the names of the indices have been affected.
bool is_m_quant_affected() const
Checks whether the additional parameter is affected (used for boson stars for instance).
const Space & get_space() const
Returns the Space.
This class is intended to describe the manage objects appearing in the equations.
Tensor * der_t
Pointer on the variation, if the Term_eq is a Tensor.
const int type_data
Flag describing the type of data :
void set_der_zero()
Sets the variation of the approriate type to zero.
const int dom
Index of the Domain where the Term_eq is defined.
Tensor const & get_val_t() const
Tensor const & get_der_t() const
Tensor * val_t
Pointer on the value, if the Term_eq is a Tensor.
Class for storing the basis of decompositions of a field and its values on both the configuration and...
void set_zero()
Sets the Val_domain to zero (logical state to zero and arrays destroyed).
Val_domain div_r() const
Division by the radius.
bool check_if_zero() const
Check whether the logical state is zero or not.
Val_domain div_sin_theta() const
Division by .
Val_domain mult_cos_theta() const
Multiplication by .
Val_domain der_abs(int i) const
Computes the derivative with respect to an absolute coordinate (typically Cartesian).
const Domain * get_domain() const