30 char ARITHM_TBL_VAL_C[] =
"$Header: /cvsroot/Lorene/C++/Source/Valencia/arithm_tbl_val.C,v 1.5 2014/10/13 08:53:48 j_novak Exp $" ;
70 assert(t1.
get_etat() != ETATNONDEF) ;
80 assert(t1.
get_etat() != ETATNONDEF) ;
90 for (
int i=0 ; i<r.get_taille() ; i++)
91 (r.t)[i] = - (t1.
t)[i] ;
93 for (
int i=0 ; i<r.get_taille_i(0) ; i++)
94 (r.tzri)[i] = - (t1.
tzri)[i] ;
96 if (t1.
txti != 0x0)
for (
int i=0 ; i<r.get_taille_i(1) ; i++)
97 (r.txti)[i] = - (t1.
txti)[i] ;
99 if (t1.
typi != 0x0)
for (
int i=0 ; i<r.get_taille_i(2) ; i++)
100 (r.typi)[i] = - (t1.
typi)[i] ;
115 assert(t1.
get_etat() != ETATNONDEF) ;
116 assert(t2.
get_etat() != ETATNONDEF) ;
118 for (
int i=0 ; i<t1.
get_ndim() ; i++) {
135 for (
int i=0 ; i<r.get_taille() ; i++) {
136 (r.t)[i] += (t2.
t)[i] ;
138 for (
int i=0 ; i<r.get_taille_i(0) ; i++)
139 (r.tzri)[i] += (t2.
tzri)[i] ;
141 if (t1.
txti != 0x0)
for (
int i=0 ; i<r.get_taille_i(1) ; i++)
142 (r.txti)[i] *= (t2.
txti)[i] ;
144 if (t1.
typi != 0x0)
for (
int i=0 ; i<r.get_taille_i(2) ; i++)
145 (r.typi)[i] *= (t2.
typi)[i] ;
157 assert(t1.
get_etat() != ETATNONDEF) ;
160 if ( x ==
double(0) ) {
193 return t1 + double(n) ;
200 return t1 + double(n) ;
214 assert(t1.
get_etat() != ETATNONDEF) ;
215 assert(t2.
get_etat() != ETATNONDEF) ;
217 for (
int i=0 ; i<t1.
get_ndim() ; i++) {
234 for (
int i=0 ; i<r.get_taille() ; i++) {
235 (r.t)[i] -= (t2.
t)[i] ;
237 for (
int i=0 ; i<r.get_taille_i(0) ; i++)
238 (r.tzri)[i] -= (t2.
tzri)[i] ;
240 if (t1.
txti != 0x0)
for (
int i=0 ; i<r.get_taille_i(1) ; i++)
241 (r.txti)[i] -= (t2.
txti)[i] ;
243 if (t1.
typi != 0x0)
for (
int i=0 ; i<r.get_taille_i(2) ; i++)
244 (r.typi)[i] -= (t2.
typi)[i] ;
257 assert(t1.
get_etat() != ETATNONDEF) ;
260 if ( x ==
double(0) ) {
287 return t1 - double(n) ;
295 assert(t1.
get_etat() != ETATNONDEF) ;
298 if ( x ==
double(0) ) {
324 return double(n) - t1 ;
336 assert(t1.
get_etat() != ETATNONDEF) ;
337 assert(t2.
get_etat() != ETATNONDEF) ;
339 for (
int i=0 ; i<t1.
get_ndim() ; i++) {
356 for (
int i=0 ; i<r.get_taille() ; i++) {
357 (r.t)[i] *= (t2.
t)[i] ;
359 for (
int i=0 ; i<r.get_taille_i(0) ; i++)
360 (r.tzri)[i] *= (t2.
tzri)[i] ;
362 if (t1.
txti != 0x0)
for (
int i=0 ; i<r.get_taille_i(1) ; i++)
363 (r.txti)[i] *= (t2.
txti)[i] ;
365 if (t1.
typi != 0x0)
for (
int i=0 ; i<r.get_taille_i(2) ; i++)
366 (r.typi)[i] *= (t2.
typi)[i] ;
377 assert(t1.
get_etat() != ETATNONDEF) ;
380 if ((t1.
get_etat() == ETATZERO) || ( x ==
double(1) )) {
389 if (x ==
double(0)) {
393 for (
int i=0 ; i<r.get_taille() ; i++) {
396 for (
int i=0 ; i<r.get_taille_i(0) ; i++)
399 if (t1.
txti != 0x0)
for (
int i=0 ; i<r.get_taille_i(1) ; i++)
402 if (t1.
typi != 0x0)
for (
int i=0 ; i<r.get_taille_i(2) ; i++)
423 return t1 * double(n) ;
430 return t1 * double(n) ;
442 assert(t1.
get_etat() != ETATNONDEF) ;
443 assert(t2.
get_etat() != ETATNONDEF) ;
445 for (
int i=0 ; i<t1.
get_ndim() ; i++) {
451 cout <<
"Division by 0 in Tbl_val/Tbl_val !" << endl ;
463 for (
int i=0 ; i<r.get_taille() ; i++) {
464 (r.t)[i] /= (t2.
t)[i] ;
466 for (
int i=0 ; i<r.get_taille_i(0) ; i++)
467 (r.tzri)[i] /= (t2.
tzri)[i] ;
469 if (t1.
txti != 0x0)
for (
int i=0 ; i<r.get_taille_i(1) ; i++)
470 (r.txti)[i] /= (t2.
txti)[i] ;
472 if (t1.
typi != 0x0)
for (
int i=0 ; i<r.get_taille_i(2) ; i++)
473 (r.typi)[i] /= (t2.
typi)[i] ;
485 assert(t1.
get_etat() != ETATNONDEF) ;
486 if ( x ==
double(0) ) {
487 cout <<
"Division by 0 in Tbl_val/double !" << endl ;
492 if ((t1.
get_etat() == ETATZERO) || ( x ==
double(1) )) {
500 for (
int i=0 ; i<r.get_taille() ; i++) {
503 for (
int i=0 ; i<r.get_taille_i(0) ; i++)
506 if (t1.
txti != 0x0)
for (
int i=0 ; i<r.get_taille_i(1) ; i++)
509 if (t1.
typi != 0x0)
for (
int i=0 ; i<r.get_taille_i(2) ; i++)
521 return t1 / double(n) ;
529 assert(t1.
get_etat() != ETATNONDEF) ;
533 cout <<
"Division by 0 in double/Tbl_val !" << endl ;
542 if ( x ==
double(0) ) {
547 for (
int i=0 ; i<r.get_taille() ; i++) {
548 (r.t)[i] = x / (t1.
t)[i] ;
550 for (
int i=0 ; i<r.get_taille_i(0) ; i++)
551 (r.tzri)[i] = x / (t1.
tzri)[i] ;
553 if (t1.
txti != 0x0)
for (
int i=0 ; i<r.get_taille_i(1) ; i++)
554 (r.txti)[i] = x / (t1.
txti)[i] ;
556 if (t1.
typi != 0x0)
for (
int i=0 ; i<r.get_taille_i(2) ; i++)
557 (r.typi)[i] = x / (t1.
typi)[i] ;
570 return double(n) / t1 ;
581 assert(
etat != ETATNONDEF) ;
582 assert(ti.
get_etat() != ETATNONDEF) ;
594 for (
int i=0 ; i<n ; i++) {
609 for (
int i=0 ; i<n ; i++) {
623 cout <<
"etat inconnu " << __FILE__ << endl ;
634 assert(
etat != ETATNONDEF) ;
637 if ( x ==
double(0) ) {
646 for (
int i=0 ; i<n ; i++) {
660 for (
int i=0 ; i<n ; i++) {
675 cout <<
"etat inconnu " << __FILE__ << endl ;
687 assert(
etat != ETATNONDEF) ;
688 assert(ti.
get_etat() != ETATNONDEF) ;
700 for (
int i=0 ; i<n ; i++) {
715 for (
int i=0 ; i<n ; i++) {
730 cout <<
"etat inconnu " << __FILE__ << endl ;
741 assert(
etat != ETATNONDEF) ;
744 if ( x ==
double(0) ) {
753 for (
int i=0 ; i<n ; i++) {
768 for (
int i=0 ; i<n ; i++) {
783 cout <<
"etat inconnu " << __FILE__ << endl ;
795 assert(
etat != ETATNONDEF) ;
796 assert(ti.
get_etat() != ETATNONDEF) ;
799 if (
etat == ETATZERO) {
808 assert(
etat == ETATQCQ) ;
827 assert(
etat != ETATNONDEF) ;
830 if ( x ==
double(0) ) {
834 if (
etat == ETATZERO) {
839 assert(
etat == ETATQCQ) ;
859 assert(
etat != ETATNONDEF) ;
860 assert(ti.
get_etat() != ETATNONDEF) ;
864 cout <<
"Division by 0 in Tbl_val::operator/=(const Tbl_val &) !" << endl ;
867 if (
etat == ETATZERO) {
872 assert(
etat == ETATQCQ) ;
875 for (
int i=0 ; i<n ; i++) {
893 assert(
etat != ETATNONDEF) ;
896 if ( x ==
double(0) ) {
897 cout <<
"Division by 0 in Tbl_val::operator/=(double ) !" << endl ;
900 if (
etat == ETATZERO) {
905 assert(
etat == ETATQCQ) ;
907 for (
int i=0 ; i<n ; i++) {
int get_ndim() const
Gives the number of dimensions (ie dim->ndim )
Base_val operator*(const Base_val &, const Base_val &)
This operator is used when calling multiplication or division of Valeur .
int etat
logical state (ETATNONDEF , ETATQCQ or ETATZERO ).
void operator+=(const Tbl_val &)
Addition of a Tbl_val to this.
Cmp operator/(const Cmp &, const Cmp &)
Cmp / Cmp.
void set_etat_qcq()
Sets the logical state to ETATQCQ (ordinary state).
void operator-=(const Tbl_val &)
Subtraction of a Tbl_val to this.
void operator/=(const Tbl_val &)
Division of this by a Tbl_val.
void operator*=(const Tbl_val &)
Multiplication of this by a Tbl_val.
int get_taille_i(int i) const
Gives the size of the interface arrays (including the hidden cells)
Cmp operator+(const Cmp &)
int get_etat() const
Gives the logical state.
void set_etat_zero()
Sets the logical state to ETATZERO (zero).
double * tzri
The array at z (or r) interfaces.
Finite-difference array intended to store field values.
double * typi
The array at y (or ) interfaces.
int get_dim(int i) const
Gives the i th dimension (ie dim->dim[i] , without hidden cells)
double * t
The array of double at the nodes.
int get_taille() const
Gives the size of the node array (including the hidden cells)
Cmp operator-(const Cmp &)
- Cmp
double * txti
The array at x (or ) interfaces.
const Grille_val * gval
The Grille_val (cartesian or spherical) on which the array is defined.
const Grille_val * get_grille() const
Returns a pointer on the grid on which the Tbl_val is defined.