Changeset 20669
- Timestamp:
- 05/30/16 12:40:38 (9 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
r20608 r20669 2343 2343 /*fill in all arrays: */ 2344 2344 for(i=0;i<vnumnodes;i++){ 2345 lambdax[i] = values[i*dim+0]; if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector"); 2346 lambday[i] = values[i*dim+1]; if(xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector"); 2345 lambdax[i] = values[i*dim+0]; 2346 if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector"); 2347 if(xIsInf<IssmDouble>(lambdax[i])) _error_("Inf found in solution vector"); 2348 lambday[i] = values[i*dim+1]; 2349 if(xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector"); 2350 if(xIsInf<IssmDouble>(lambday[i])) _error_("Inf found in solution vector"); 2347 2351 if(dim==3){ 2348 lambdaz[i] = values[i*dim+2]; if(xIsNan<IssmDouble>(lambdaz[i])) _error_("NaN found in solution vector"); 2352 lambdaz[i] = values[i*dim+2]; 2353 if(xIsNan<IssmDouble>(lambdaz[i])) _error_("NaN found in solution vector"); 2354 if(xIsInf<IssmDouble>(lambdaz[i])) _error_("Inf found in solution vector"); 2349 2355 } 2350 2356 } 2351 2357 for(i=0;i<pnumnodes;i++){ 2352 lambdap[i] = values[vnumdof+i]; if(xIsNan<IssmDouble>(lambdap[i])) _error_("NaN found in solution vector"); 2358 lambdap[i] = values[vnumdof+i]; 2359 if(xIsNan<IssmDouble>(lambdap[i])) _error_("NaN found in solution vector"); 2360 if(xIsInf<IssmDouble>(lambdap[i])) _error_("Inf found in solution vector"); 2353 2361 } 2354 2362 … … 2409 2417 /*Check solution*/ 2410 2418 if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector"); 2419 if(xIsInf<IssmDouble>(lambdax[i])) _error_("Inf found in solution vector"); 2411 2420 if(domaintype!=Domain2DverticalEnum && xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector"); 2421 if(domaintype!=Domain2DverticalEnum && xIsInf<IssmDouble>(lambday[i])) _error_("Inf found in solution vector"); 2412 2422 } 2413 2423 -
issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
r20661 r20669 649 649 /*Check solution*/ 650 650 if(xIsNan<IssmDouble>(newdamage[i])) _error_("NaN found in solution vector"); 651 if(xIsInf<IssmDouble>(newdamage[i])) _error_("Inf found in solution vector"); 651 652 /*Enforce D < max_damage and D > 0 */ 652 653 if(newdamage[i]>max_damage) newdamage[i]=max_damage; -
issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
r20645 r20669 1466 1466 /*Check solution*/ 1467 1467 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 1468 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 1468 1469 } 1469 1470 -
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
r20645 r20669 398 398 eplHeads[i]=solution[doflist[i]]; 399 399 if(xIsNan<IssmDouble>(eplHeads[i])) _error_("NaN found in solution vector"); 400 if(xIsInf<IssmDouble>(eplHeads[i])) _error_("Inf found in solution vector"); 400 401 } 401 402 /*Add input to the element: */ -
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
r20645 r20669 435 435 values[i] =solution[doflist[i]]; 436 436 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 437 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 437 438 } 438 439 -
issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp
r20645 r20669 356 356 values[i]=solution[doflist[i]]; 357 357 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 358 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 358 359 if (values[i]<10e-10) values[i]=10e-10; //correcting the water column to positive values 359 360 } -
issm/trunk-jpl/src/c/analyses/HydrologySommersAnalysis.cpp
r20645 r20669 345 345 346 346 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 347 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 347 348 } 348 349 -
issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
r20655 r20669 684 684 newthickness[i]=solution[doflist[i]]; 685 685 if(xIsNan<IssmDouble>(newthickness[i])) _error_("NaN found in solution vector"); 686 if(xIsInf<IssmDouble>(newthickness[i])) _error_("Inf found in solution vector"); 686 687 /*Constrain thickness to be at least 1m*/ 687 688 if(newthickness[i]<minthickness) newthickness[i]=minthickness; -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r20645 r20669 1851 1851 vx[i]=values[i*dim+0]; 1852 1852 if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector"); 1853 if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector"); 1853 1854 1854 1855 if(dim==2){ 1855 1856 vy[i]=values[i*dim+1]; 1856 1857 if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector"); 1858 if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector"); 1857 1859 } 1858 1860 } … … 2187 2189 /*Check solution*/ 2188 2190 if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector"); 2191 if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector"); 2189 2192 if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector"); 2193 if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector"); 2190 2194 } 2191 2195 … … 2815 2819 vx[i]=values[i*(dim-1)+0]; 2816 2820 if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector"); 2821 if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector"); 2817 2822 if(dim==3){ 2818 2823 vy[i]=values[i*(dim-1)+1]; 2819 2824 if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector"); 2825 if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector"); 2820 2826 } 2821 2827 } … … 4953 4959 vy[i] = values[i*dim+1]; 4954 4960 if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector"); 4961 if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector"); 4955 4962 if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector"); 4963 if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector"); 4956 4964 4957 4965 if(dim==3){ 4958 4966 vz[i] = values[i*dim+2]; 4959 4967 if(xIsNan<IssmDouble>(vz[i])) _error_("NaN found in solution vector"); 4968 if(xIsInf<IssmDouble>(vz[i])) _error_("Inf found in solution vector"); 4960 4969 } 4961 4970 } … … 4963 4972 pressure[i] = values[vnumdof+i]; 4964 4973 if(xIsNan<IssmDouble>(pressure[i])) _error_("NaN found in solution vector"); 4974 if(xIsInf<IssmDouble>(pressure[i])) _error_("Inf found in solution vector"); 4965 4975 } 4966 4976 … … 6854 6864 /*Check solution*/ 6855 6865 if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector"); 6866 if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector"); 6856 6867 if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector"); 6868 if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector"); 6857 6869 if(xIsNan<IssmDouble>(vzFS[i])) _error_("NaN found in solution vector"); 6870 if(xIsInf<IssmDouble>(vzFS[i])) _error_("Inf found in solution vector"); 6858 6871 if(xIsNan<IssmDouble>(pressure[i])) _error_("NaN found in solution vector"); 6872 if(xIsInf<IssmDouble>(pressure[i])) _error_("Inf found in solution vector"); 6859 6873 } 6860 6874 … … 6960 6974 /*Check solution*/ 6961 6975 if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector"); 6976 if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector"); 6962 6977 if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector"); 6978 if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector"); 6963 6979 if(xIsNan<IssmDouble>(vzFS[i])) _error_("NaN found in solution vector"); 6980 if(xIsInf<IssmDouble>(vzFS[i])) _error_("Inf found in solution vector"); 6964 6981 if(xIsNan<IssmDouble>(pressure[i])) _error_("NaN found in solution vector"); 6982 if(xIsInf<IssmDouble>(pressure[i])) _error_("Inf found in solution vector"); 6965 6983 } 6966 6984 … … 7055 7073 /*Check solution*/ 7056 7074 if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector"); 7075 if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector"); 7057 7076 if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector"); 7077 if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector"); 7058 7078 } 7059 7079 -
issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
r20645 r20669 586 586 /*Check solution*/ 587 587 if(xIsNan<IssmDouble>(vx[i])) _error_("NaN found in solution vector"); 588 if(xIsInf<IssmDouble>(vx[i])) _error_("Inf found in solution vector"); 588 589 if(xIsNan<IssmDouble>(vy[i])) _error_("NaN found in solution vector"); 590 if(xIsInf<IssmDouble>(vy[i])) _error_("Inf found in solution vector"); 589 591 } 590 592 -
issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
r20645 r20669 539 539 /*Check solution*/ 540 540 if(xIsNan<IssmDouble>(vz[i])) _error_("NaN found in solution vector"); 541 if(xIsInf<IssmDouble>(vz[i])) _error_("Inf found in solution vector"); 541 542 } 542 543 -
issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
r20645 r20669 739 739 /*Check solution*/ 740 740 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 741 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 741 742 //if(values[i]<0) _printf_("temperature < 0°K found in solution vector\n"); 742 743 //if(values[i]>275) _printf_("temperature > 275°K found in solution vector (Paterson's rheology associated is negative)\n"); -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r20663 r20669 1506 1506 values[i]=solution[doflist[i]]; 1507 1507 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 1508 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 1508 1509 } 1509 1510 … … 1536 1537 values[i+numdof2d]=values[i]; 1537 1538 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 1539 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 1538 1540 } 1539 1541 … … 1589 1591 values[i]=vector[doflist[i]]; 1590 1592 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 1593 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 1591 1594 } 1592 1595 /*Add input to the element: */ … … 1601 1604 values[i]=vector[nodes[i]->Sid()]; 1602 1605 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 1606 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 1603 1607 } 1604 1608 /*Add input to the element: */ -
issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp
r20645 r20669 475 475 values[i]=solution[doflist[i]]; 476 476 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 477 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 477 478 } 478 479 -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r20659 r20669 1927 1927 values[i]=solution[doflist[i]]; 1928 1928 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 1929 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in solution vector"); 1929 1930 } 1930 1931 … … 1974 1975 values[i]=vector[doflist[i]]; 1975 1976 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in vector"); 1977 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in vector"); 1976 1978 } 1977 1979 this->inputs->AddInput(new TriaInput(name,values,this->element_type)); … … 1986 1988 values[i]=vector[nodes[i]->Sid()]; 1987 1989 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in vector"); 1990 if(xIsInf<IssmDouble>(values[i])) _error_("Inf found in vector"); 1988 1991 } 1989 1992 this->inputs->AddInput(new TriaInput(name,values,this->element_type)); -
issm/trunk-jpl/src/c/classes/matrix/ElementMatrix.cpp
r18344 r20669 368 368 for(int j=0;j<this->ncols;j++){ 369 369 if (xIsNan<IssmDouble>(this->values[i*this->ncols+j])) _error_("NaN found in Element Matrix"); 370 if (xIsInf<IssmDouble>(this->values[i*this->ncols+j])) _error_("Inf found in Element Matrix"); 370 371 if (fabs(this->values[i*this->ncols+j])>1.e+50) _error_("Element Matrix values exceeds 1.e+50"); 371 372 } -
issm/trunk-jpl/src/c/classes/matrix/ElementVector.cpp
r18063 r20669 201 201 for (int i=0;i<this->nrows;i++){ 202 202 if (xIsNan<IssmDouble>(this->values[i])) _error_("NaN found in Element Vector"); 203 if (xIsInf<IssmDouble>(this->values[i])) _error_("Inf found in Element Vector"); 203 204 if (fabs( this->values[i])>1.e+50) _error_("Element Vector values exceeds 1.e+50"); 204 205 } -
issm/trunk-jpl/src/c/shared/Numerics/isnan.cpp
r18125 r20669 7 7 #endif 8 8 9 #include " isnan.h"9 #include "./isnan.h" 10 10 11 11 #if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_) … … 14 14 } 15 15 #endif 16 17 #if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_) 18 template <> int xIsInf<adouble> (const adouble& X){ 19 return isinf(X.getValue()); 20 } 21 #endif -
issm/trunk-jpl/src/c/shared/Numerics/isnan.h
r19490 r20669 23 23 } 24 24 25 template <class T> int xIsInf(const T& X) { 26 return std::isinf(X); 27 } 28 25 29 #if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_) 26 30 #include "./types.h" 27 31 template <> int xIsNan<adouble> (const adouble& X); 32 template <> int xIsInf<adouble> (const adouble& X); 28 33 #endif 29 34
Note:
See TracChangeset
for help on using the changeset viewer.