31char valeur_arithm_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Valeur/valeur_arithm.C,v 1.7 2014/10/13 08:53:49 j_novak Exp $" ;
148 assert(
vi.get_etat() != ETATNONDEF) ;
156 assert(
vi.get_etat() != ETATNONDEF) ;
159 if (
vi.get_etat() == ETATZERO) {
191 assert(
t1.get_etat() != ETATNONDEF) ;
192 assert(
t2.get_etat() != ETATNONDEF) ;
196 if (
t1.get_etat() == ETATZERO) {
199 if (
t2.get_etat() == ETATZERO) {
216 if (
t1.c_cf != 0x0) {
228 if (
t2.c_cf != 0x0) {
247 assert(
t1.get_etat() != ETATNONDEF) ;
248 assert(
mi.get_etat() != ETATNONDEF) ;
251 if (
mi.get_etat() == ETATZERO) {
257 if (
t1.get_etat() == ETATZERO) {
258 resu.set_etat_c_qcq() ;
264 resu.set_etat_c_qcq() ;
283 assert(
t1.get_etat() != ETATNONDEF) ;
286 if (x ==
double(0)) {
292 if (
t1.get_etat() == ETATZERO) {
293 resu.set_etat_c_qcq() ;
299 resu.set_etat_c_qcq() ;
338 assert(
t1.get_etat() != ETATNONDEF) ;
339 assert(
t2.get_etat() != ETATNONDEF) ;
343 if (
t1.get_etat() == ETATZERO) {
346 if (
t2.get_etat() == ETATZERO) {
363 if (
t1.c_cf != 0x0) {
375 if (
t2.c_cf != 0x0) {
395 assert(
t1.get_etat() != ETATNONDEF) ;
396 assert(
mi.get_etat() != ETATNONDEF) ;
399 if (
mi.get_etat() == ETATZERO) {
405 if (
t1.get_etat() == ETATZERO) {
406 resu.set_etat_c_qcq() ;
412 resu.set_etat_c_qcq() ;
430 assert(
t1.get_etat() != ETATNONDEF) ;
433 if (x ==
double(0)) {
439 if (
t1.get_etat() == ETATZERO) {
440 resu.set_etat_c_qcq() ;
446 resu.set_etat_c_qcq() ;
487 assert(
t1.get_etat() != ETATNONDEF) ;
488 assert(
t2.get_etat() != ETATNONDEF) ;
492 if (
t1.get_etat() == ETATZERO) {
495 if (
t2.get_etat() == ETATZERO) {
525 assert(
c1.get_etat() != ETATNONDEF) ;
528 if ((
c1.get_etat() == ETATZERO) || (
a ==
double(1) )) {
577 assert(
c1.get_etat() != ETATNONDEF) ;
580 if (
c1.get_etat() == ETATZERO) {
613 assert(
c1.get_etat() != ETATNONDEF) ;
616 if (
c1.get_etat() == ETATZERO) {
652 assert(
t1.get_etat() != ETATNONDEF) ;
653 assert(
t2.get_etat() != ETATNONDEF) ;
657 if (
t2.get_etat() == ETATZERO) {
658 cout <<
"Division by 0 in Valeur / Valeur !" <<
endl ;
661 if (
t1.get_etat() == ETATZERO) {
691 assert(
t1.get_etat() != ETATNONDEF) ;
694 if ( x ==
double(0) ) {
695 cout <<
"Division by 0 in Valeur / double !" <<
endl ;
698 if ((
t1.get_etat() == ETATZERO) || ( x ==
double(1) )) {
723 assert(
c2.get_etat() != ETATNONDEF) ;
726 if (
c2.get_etat() == ETATZERO) {
727 cout <<
"Division by 0 in double / Valeur !" <<
endl ;
742 *(r.
c) = x / *(
c2.c) ;
745 r.
base =
c2.get_mg()->std_base_scal() *
c2.base ;
768 assert(
t1.get_etat() != ETATNONDEF) ;
773 cout <<
"Division by 0 in Valeur / Mtbl !" <<
endl ;
776 if (
t1.get_etat() == ETATZERO) {
799 assert(
m1.get_etat() != ETATNONDEF) ;
800 assert(
c2.get_etat() != ETATNONDEF) ;
803 if (
c2.get_etat() == ETATZERO) {
804 cout <<
"Division by 0 in Mtbl / Valeur !" <<
endl ;
839 assert(
vi.get_etat() != ETATNONDEF) ;
842 if (
vi.get_etat() == ETATZERO) {
849 if (
etat == ETATZERO) {
877 if (
vi.c_cf != 0x0) {
902 assert(
vi.get_etat() != ETATNONDEF) ;
905 if (
vi.get_etat() == ETATZERO) {
912 if (
etat == ETATZERO) {
939 if (
vi.c_cf != 0x0) {
963 assert(
vi.get_etat() != ETATNONDEF) ;
966 if (
etat == ETATZERO) {
969 if (
vi.get_etat() == ETATZERO) {
1006 assert(
t1.get_etat() != ETATNONDEF) ;
1007 assert(
t2.get_etat() != ETATNONDEF) ;
1011 if (
t1.get_etat() == ETATZERO) {
1014 if (
t2.get_etat() == ETATZERO) {
1021 const Mg3d& mg = *(
t1.get_mg()) ;
1027 if (
t1.c_cf == 0x0) {
1030 if (
t2.c_cf == 0x0) {
1037 assert(
c1.get_etat() == ETATQCQ ) ;
1038 assert(
c2.get_etat() == ETATQCQ ) ;
1047 cc1.set_etat_qcq() ;
1048 cc2.set_etat_qcq() ;
1062 if (
c1.t[
l]->get_etat() == ETATZERO ) {
1063 cc1.t[
l]->set_etat_zero() ;
1067 assert(
c1.t[
l]->get_etat() == ETATQCQ ) ;
1068 cc1.t[
l]->set_etat_qcq() ;
1071 for (
int k=0;
k<np+1;
k++) {
1072 for (
int j=0;
j<nt;
j++) {
1073 for (
int i=0;
i<nr;
i++) {
1080 for (
int k=np+1;
k<
np2+2;
k++) {
1081 for (
int j=0;
j<
nt2;
j++) {
1082 for (
int i=0;
i<
nr2;
i++) {
1089 for (
int k=0;
k<np+1;
k++) {
1090 for (
int j=nt;
j<
nt2;
j++) {
1091 for (
int i=0;
i<
nr2;
i++) {
1098 for (
int k=0;
k<np+1;
k++) {
1099 for (
int j=0;
j<nt;
j++) {
1100 for (
int i=nr;
i<
nr2;
i++) {
1111 if (
c2.t[
l]->get_etat() == ETATZERO ) {
1112 cc2.t[
l]->set_etat_zero() ;
1116 assert(
c2.t[
l]->get_etat() == ETATQCQ ) ;
1117 cc2.t[
l]->set_etat_qcq() ;
1120 for (
int k=0;
k<np+1;
k++) {
1121 for (
int j=0;
j<nt;
j++) {
1122 for (
int i=0;
i<nr;
i++) {
1129 for (
int k=np+1;
k<
np2+2;
k++) {
1130 for (
int j=0;
j<
nt2;
j++) {
1131 for (
int i=0;
i<
nr2;
i++) {
1138 for (
int k=0;
k<np+1;
k++) {
1139 for (
int j=nt;
j<
nt2;
j++) {
1140 for (
int i=0;
i<
nr2;
i++) {
1147 for (
int k=0;
k<np+1;
k++) {
1148 for (
int j=0;
j<nt;
j++) {
1149 for (
int i=nr;
i<
nr2;
i++) {
1187 if (
cr2.t[
l]->get_etat() == ETATZERO ) {
1189 cr.t[
l]->set_etat_zero() ;
1196 cr.t[
l]->set_etat_qcq() ;
1203 for (
int k=0;
k<np+1;
k++) {
1204 for (
int j=0;
j<nt;
j++) {
1205 for (
int i=0;
i<nr;
i++) {
1212 for (
int j=0;
j<nt;
j++) {
1213 for (
int i=0;
i<nr;
i++) {
1214 cr.t[
l]->set(np+1,
j,
i) = 0 ;
1238 assert(
t1.get_etat() != ETATNONDEF) ;
1239 assert(
t2.get_etat() != ETATNONDEF) ;
1243 if (
t1.get_etat() == ETATZERO) {
1246 if (
t2.get_etat() == ETATZERO) {
1253 const Mg3d& mg = *(
t1.get_mg()) ;
1259 if (
t1.c_cf == 0x0) {
1262 if (
t2.c_cf == 0x0) {
1269 assert(
c1.get_etat() == ETATQCQ ) ;
1270 assert(
c2.get_etat() == ETATQCQ ) ;
1279 cc1.set_etat_qcq() ;
1280 cc2.set_etat_qcq() ;
1292 if (
c1.t[
l]->get_etat() == ETATZERO ) {
1293 cc1.t[
l]->set_etat_zero() ;
1297 assert(
c1.t[
l]->get_etat() == ETATQCQ ) ;
1298 cc1.t[
l]->set_etat_qcq() ;
1301 for (
int k=0;
k<np+1;
k++) {
1302 for (
int j=0;
j<nt;
j++) {
1303 for (
int i=0;
i<nr;
i++) {
1310 for (
int j=0;
j<nt;
j++) {
1311 for (
int i=0;
i<
nr2;
i++) {
1312 cc1.t[
l]->set(np+1,
j,
i) = 0 ;
1318 for (
int k=0;
k<np+1;
k++) {
1319 for (
int j=0;
j<nt;
j++) {
1320 for (
int i=nr;
i<
nr2;
i++) {
1331 if (
c2.t[
l]->get_etat() == ETATZERO ) {
1332 cc2.t[
l]->set_etat_zero() ;
1336 assert(
c2.t[
l]->get_etat() == ETATQCQ ) ;
1337 cc2.t[
l]->set_etat_qcq() ;
1340 for (
int k=0;
k<np+1;
k++) {
1341 for (
int j=0;
j<nt;
j++) {
1342 for (
int i=0;
i<nr;
i++) {
1349 for (
int j=0;
j<nt;
j++) {
1350 for (
int i=0;
i<
nr2;
i++) {
1351 cc2.t[
l]->set(np+1,
j,
i) = 0 ;
1356 for (
int k=0;
k<np+1;
k++) {
1357 for (
int j=0;
j<nt;
j++) {
1358 for (
int i=nr;
i<
nr2;
i++) {
1393 if (
cr2.t[
l]->get_etat() == ETATZERO ) {
1395 cr.t[
l]->set_etat_zero() ;
1402 cr.t[
l]->set_etat_qcq() ;
1409 for (
int k=0;
k<np+1;
k++) {
1410 for (
int j=0;
j<nt;
j++) {
1411 for (
int i=0;
i<nr;
i++) {
1418 for (
int j=0;
j<nt;
j++) {
1419 for (
int i=0;
i<nr;
i++) {
1420 cr.t[
l]->set(np+1,
j,
i) = 0 ;
Active physical coordinates and mapping derivatives.
Time evolution with partial storage (*** under development ***).
const Mg3d * get_twice() const
Returns the pointer on the grid which has twice the number of points in each dimension (for desaliasi...
const Mg3d * plus_half() const
Returns the pointer on the grid which has 50% more points in r dimension (for desaliasing).
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.
Coefficients storage for the multi-domain spectral method.
int get_etat() const
Gives the logical state.
Values and coefficients of a (real-value) function.
void operator-=(const Valeur &)
-= Valeur
void set_etat_c_qcq()
Sets the logical state to ETATQCQ (ordinary state) for values in the configuration space (Mtbl c ).
void operator+=(const Valeur &)
+= Valeur
void set_etat_zero()
Sets the logical state to ETATZERO (zero).
Mtbl * c
Values of the function at the points of the multi-grid
const Mg3d * mg
Multi-grid Mgd3 on which this is defined.
void coef_i() const
Computes the physical value of *this.
Mtbl_cf * c_cf
Coefficients of the spectral expansion of the function.
void operator*=(const Valeur &)
*= Valeur
Base_val base
Bases on which the spectral expansion is performed.
void annule_hard()
Sets the Valeur to zero in a hard way.
int etat
Logical state (ETATNONDEF , ETATQCQ or ETATZERO ).
void del_deriv()
Logical destructor of the derivatives.
Base_val operator*(const Base_val &, const Base_val &)
This operator is used when calling multiplication or division of Valeur .
Cmp operator-(const Cmp &)
- Cmp
Cmp operator/(const Cmp &, const Cmp &)
Cmp / Cmp.
Cmp operator%(const Cmp &, const Cmp &)
Cmp * Cmp with desaliasing.
Cmp operator+(const Cmp &)
Scalar operator|(const Scalar &, const Scalar &)
Scalar * Scalar with desaliasing only in r.