Changeset 12529
- Timestamp:
- 06/25/12 12:16:37 (13 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 35 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/Bamgx/Bamgx.cpp
r12511 r12529 119 119 if (verbosity>1) _printLine_(" Merging Metric with hVertices..."); 120 120 for (i=0;i<BTh.nbv;i++){ 121 if (! isnan(bamgopts->hVertices[i])){121 if (!xIsNan<IssmDouble>(bamgopts->hVertices[i])){ 122 122 BTh[i].m=Metric((float)bamgopts->hVertices[i]); 123 123 } … … 129 129 if (verbosity>1) _printLine_(" Merging Metric with hminVertices..."); 130 130 for (i=0;i<BTh.nbv;i++){ 131 if (! isnan(bamgopts->hminVertices[i])){131 if (!xIsNan<IssmDouble>(bamgopts->hminVertices[i])){ 132 132 Metric M=BTh.vertices[i].m; 133 133 EigenMetric Vp(M/coef); … … 142 142 if (verbosity>1) _printLine_(" Merging Metric with hmaxVertices..."); 143 143 for (i=0;i<BTh.nbv;i++){ 144 if (! isnan(bamgopts->hmaxVertices[i])){144 if (!xIsNan<IssmDouble>(bamgopts->hmaxVertices[i])){ 145 145 Metric M=BTh.vertices[i].m; 146 146 EigenMetric Vp(M/coef); -
issm/trunk-jpl/src/c/modules/Gradjx/Gradjx.cpp
r12493 r12529 55 55 norm_inf=gradient->Norm(NORM_INF); 56 56 if(norm_inf<=0) _error2_("||∂J/∂α||∞ = 0 gradient norm is zero"); 57 if( isnan(norm_inf))_error2_("||∂J/∂α||∞ = NaN gradient norm is NaN");57 if(xIsNan<IssmDouble>(norm_inf))_error2_("||∂J/∂α||∞ = NaN gradient norm is NaN"); 58 58 59 59 /*Clean-up and assign output pointer*/ -
issm/trunk-jpl/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp
r12526 r12529 13 13 #include "../../shared/shared.h" 14 14 #include "../../include/include.h" 15 #include "../../io/io.h" 15 16 /*}}}*/ 16 17 … … 140 141 141 142 if(debug && my_thread==0) 142 _p printString_("\r interpolation progress: "<<setw(6)<<setprecision(2)<<double(i-i0)/double(i1-i0)*100<<"%");143 _printString_("\r interpolation progress: "<<setw(6)<<setprecision(2)<<double(i-i0)/double(i1-i0)*100<<"%"); 143 144 x_grid=*(x_mesh+i); 144 145 y_grid=*(y_mesh+i); … … 179 180 return NULL; /*WARNING: no error because it would blow up the multithreading!*/ 180 181 } 181 if( isnan(data_value)) data_value=default_value;182 if(xIsNan<IssmDouble>(data_value)) data_value=default_value; 182 183 } 183 184 else{ -
issm/trunk-jpl/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp
r12507 r12529 113 113 data_value=data[i]; 114 114 } 115 if ( isnan(data_value)){115 if (xIsNan<IssmDouble>(data_value)){ 116 116 if(num_default_values==1) data_value=default_values[0]; 117 117 else data_value=default_values[j]; -
issm/trunk-jpl/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp
r12507 r12529 160 160 data_value=data_mesh[n]; 161 161 } 162 if ( isnan(data_value)) data_value=default_value;162 if (xIsNan<IssmDouble>(data_value)) data_value=default_value; 163 163 164 164 /*insert value and go to the next point*/ -
issm/trunk-jpl/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp
r12507 r12529 124 124 data_value=data[i]; 125 125 } 126 if ( isnan(data_value)) data_value=default_value;126 if (xIsNan<IssmDouble>(data_value)) data_value=default_value; 127 127 128 128 /*insert value and go to the next point*/ -
issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
r12495 r12529 55 55 if((iomodel->my_vertices[i])){ 56 56 57 if (! isnan(IssmDoublevector[i])){57 if (!xIsNan<IssmDouble>(IssmDoublevector[i])){ 58 58 59 59 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,IssmDoublevector[i],analysis_type)); … … 87 87 for(j=0;j<N;j++){ 88 88 values[j]=IssmDoublevector[i*N+j]; 89 if(! isnan(values[j]))spcpresent=true; //NaN means no spc by default89 if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default 90 90 } 91 91 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
r12493 r12529 120 120 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 121 121 count++; 122 if (! isnan(spcvx[i])){122 if (!xIsNan<IssmDouble>(spcvx[i])){ 123 123 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 124 124 count++; 125 125 } 126 if (! isnan(spcvy[i])){126 if (!xIsNan<IssmDouble>(spcvy[i])){ 127 127 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 128 128 count++; … … 135 135 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 136 136 count++; 137 if (! isnan(spcvx[i])){137 if (!xIsNan<IssmDouble>(spcvx[i])){ 138 138 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 139 139 count++; 140 140 } 141 if (! isnan(spcvy[i])){141 if (!xIsNan<IssmDouble>(spcvy[i])){ 142 142 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 143 143 count++; … … 157 157 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 158 158 count++; 159 if (! isnan(spcvx[i])){159 if (!xIsNan<IssmDouble>(spcvx[i])){ 160 160 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 161 161 count++; 162 162 } 163 if (! isnan(spcvy[i])){163 if (!xIsNan<IssmDouble>(spcvy[i])){ 164 164 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 165 165 count++; … … 172 172 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 173 173 count++; 174 if (! isnan(spcvx[i])){174 if (!xIsNan<IssmDouble>(spcvx[i])){ 175 175 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 176 176 count++; 177 177 } 178 if (! isnan(spcvy[i])){178 if (!xIsNan<IssmDouble>(spcvy[i])){ 179 179 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 180 180 count++; 181 181 } 182 if (! isnan(spcvz[i])){182 if (!xIsNan<IssmDouble>(spcvz[i])){ 183 183 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 184 184 count++; … … 197 197 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 198 198 count++; 199 if (! isnan(spcvx[i])){199 if (!xIsNan<IssmDouble>(spcvx[i])){ 200 200 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 201 201 count++; 202 202 } 203 if (! isnan(spcvy[i])){203 if (!xIsNan<IssmDouble>(spcvy[i])){ 204 204 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 205 205 count++; … … 212 212 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 213 213 count++; 214 if (! isnan(spcvx[i])){214 if (!xIsNan<IssmDouble>(spcvx[i])){ 215 215 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 216 216 count++; 217 217 } 218 if (! isnan(spcvy[i])){218 if (!xIsNan<IssmDouble>(spcvy[i])){ 219 219 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 220 220 count++; 221 221 } 222 if (! isnan(spcvz[i])){222 if (!xIsNan<IssmDouble>(spcvz[i])){ 223 223 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 224 224 count++; … … 229 229 /*Now add the regular spcs*/ 230 230 else{ 231 if (Mx==numberofvertices && ! isnan(spcvx[i])){231 if (Mx==numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){ 232 232 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 233 233 count++; … … 239 239 for(j=0;j<Nx;j++){ 240 240 values[j]=spcvx[i*Nx+j]/yts; 241 if(! isnan(values[j]))spcpresent=true; //NaN means no spc by default241 if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default 242 242 } 243 243 … … 253 253 } 254 254 255 if (My==numberofvertices && ! isnan(spcvy[i])){255 if (My==numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){ 256 256 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy. 257 257 count++; … … 263 263 for(j=0;j<Ny;j++){ 264 264 values[j]=spcvy[i*Ny+j]/yts; 265 if(! isnan(values[j]))spcpresent=true; //NaN means no spc by default265 if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default 266 266 } 267 267 if(spcpresent){ … … 277 277 278 278 if ((int)vertices_type[i]==StokesApproximationEnum || ((int)vertices_type[i]==NoneApproximationEnum)){ 279 if (Mz==numberofvertices && ! isnan(spcvz[i])){279 if (Mz==numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){ 280 280 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 281 281 count++; … … 287 287 for(j=0;j<Nz;j++){ 288 288 values[j]=spcvz[i*Nz+j]/yts; 289 if(! isnan(values[j]))spcpresent=true; //NaN means no spc by default289 if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default 290 290 } 291 291 if(spcpresent){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp
r10522 r12529 60 60 } 61 61 else{ 62 if (! isnan(iomodel->Data(DiagnosticSpcvxEnum)[i])){62 if (!xIsNan<IssmDouble>(iomodel->Data(DiagnosticSpcvxEnum)[i])){ 63 63 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data(DiagnosticSpcvxEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 64 64 count++; 65 65 } 66 66 67 if (! isnan(iomodel->Data(DiagnosticSpcvyEnum)[i])){67 if (!xIsNan<IssmDouble>(iomodel->Data(DiagnosticSpcvyEnum)[i])){ 68 68 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->Data(DiagnosticSpcvyEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 69 69 count++; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp
r11197 r12529 56 56 count++; 57 57 } 58 else if (! isnan(iomodel->Data(DiagnosticSpcvzEnum)[i])){58 else if (!xIsNan<IssmDouble>(iomodel->Data(DiagnosticSpcvzEnum)[i])){ 59 59 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1, 60 60 iomodel->Data(DiagnosticSpcvzEnum)[i]/yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp
r12450 r12529 55 55 if((iomodel->my_vertices[i])){ 56 56 57 if (! isnan(spctemperature[i])){57 if (!xIsNan<IssmDouble>(spctemperature[i])){ 58 58 59 59 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,heatcapacity*(spctemperature[i]-referencetemperature),EnthalpyAnalysisEnum)); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
r12493 r12529 125 125 * we must clone the nodes on this partition so that the loads (Numericalflux) 126 126 * will have access to their properties (dofs,...)*/ 127 if(my_elements[(int)e1] && ! isnan(e2) && !my_elements[(int)e2]){127 if(my_elements[(int)e1] && !xIsNan<IssmDouble>(e2) && !my_elements[(int)e2]){ 128 128 129 129 /*1: Get vertices ids*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp
r12493 r12529 43 43 /*keep only this partition's nodes:*/ 44 44 if((iomodel->my_vertices[i]==1)){ 45 if ( isnan(iomodel->Data(ThermalSpctemperatureEnum)[i])){ //No penalty applied on spc nodes!45 if (xIsNan<IssmDouble>(iomodel->Data(ThermalSpctemperatureEnum)[i])){ //No penalty applied on spc nodes! 46 46 loads->AddObject(new Pengrid(iomodel->loadcounter+i+1,i,iomodel,ThermalAnalysisEnum)); 47 47 } -
issm/trunk-jpl/src/c/objects/Bamg/Geometry.cpp
r12509 r12529 183 183 if(verbose>5) _printLine_(" processing hVertices"); 184 184 for (i=0;i< nbv;i++){ 185 if (! isnan(bamgopts->hVertices[i])){185 if (!xIsNan<IssmDouble>(bamgopts->hVertices[i])){ 186 186 vertices[i].m=Metric((double)bamgopts->hVertices[i]); 187 187 } -
issm/trunk-jpl/src/c/objects/Constraints/SpcDynamic.cpp
r12511 r12529 124 124 IssmDouble SpcDynamic::GetValue(){ 125 125 _assert_(this->isset); 126 _assert_(! isnan(value));126 _assert_(!xIsNan<IssmDouble>(value)); 127 127 return value; 128 128 } -
issm/trunk-jpl/src/c/objects/Constraints/SpcStatic.cpp
r12511 r12529 124 124 /*FUNCTION SpcStatic::GetValue {{{*/ 125 125 IssmDouble SpcStatic::GetValue(){ 126 _assert_(! isnan(value));126 _assert_(!xIsNan<IssmDouble>(value)); 127 127 return value; 128 128 } -
issm/trunk-jpl/src/c/objects/Elements/Penta.cpp
r12511 r12529 66 66 67 67 /*Build neighbors list*/ 68 if ( isnan(iomodel->Data(MeshUpperelementsEnum)[index])) penta_elements_ids[1]=this->id; //upper penta is the same penta68 if (xIsNan<IssmDouble>(iomodel->Data(MeshUpperelementsEnum)[index])) penta_elements_ids[1]=this->id; //upper penta is the same penta 69 69 else penta_elements_ids[1]=(int)(iomodel->Data(MeshUpperelementsEnum)[index]); 70 if ( isnan(iomodel->Data(MeshLowerelementsEnum)[index])) penta_elements_ids[0]=this->id; //lower penta is the same penta70 if (xIsNan<IssmDouble>(iomodel->Data(MeshLowerelementsEnum)[index])) penta_elements_ids[0]=this->id; //lower penta is the same penta 71 71 else penta_elements_ids[0]=(int)(iomodel->Data(MeshLowerelementsEnum)[index]); 72 72 this->InitHookNeighbors(penta_elements_ids); … … 1742 1742 for(i=0;i<numdof2d;i++){ 1743 1743 newthickness[i]=solution[doflist[i]]; 1744 if( isnan(newthickness[i])) _error2_("NaN found in solution vector");1744 if(xIsNan<IssmDouble>(newthickness[i])) _error2_("NaN found in solution vector"); 1745 1745 /*Constrain thickness to be at least 1m*/ 1746 1746 if(newthickness[i]<minthickness) newthickness[i]=minthickness; … … 1812 1812 for(int i=0;i<numdof;i++){ 1813 1813 values[i]=solution[doflist[i]]; 1814 if( isnan(values[i])) _error2_("NaN found in solution vector");1814 if(xIsNan<IssmDouble>(values[i])) _error2_("NaN found in solution vector"); 1815 1815 } 1816 1816 … … 1842 1842 values[i] =solution[doflist[i]]; 1843 1843 values[i+numdof2d]=values[i]; 1844 if( isnan(values[i])) _error2_("NaN found in solution vector");1844 if(xIsNan<IssmDouble>(values[i])) _error2_("NaN found in solution vector"); 1845 1845 } 1846 1846 … … 4328 4328 4329 4329 /*Check solution*/ 4330 if( isnan(values[i])) _error2_("NaN found in solution vector");4330 if(xIsNan<IssmDouble>(values[i])) _error2_("NaN found in solution vector"); 4331 4331 //if(values[i]<0) _printLine_("temperature < 0°K found in solution vector"); 4332 4332 //if(values[i]>275) _printLine_("temperature > 275°K found in solution vector (Paterson's rheology associated is negative)"); … … 4398 4398 4399 4399 /*Check solution*/ 4400 if( isnan(values[i])) _error2_("NaN found in solution vector");4400 if(xIsNan<IssmDouble>(values[i])) _error2_("NaN found in solution vector"); 4401 4401 } 4402 4402 … … 4943 4943 /*Add gradje_g_gaussian vector to gradje_g: */ 4944 4944 for(i=0;i<NUMVERTICES;i++){ 4945 _assert_(! isnan(grade_g[i]));4945 _assert_(!xIsNan<IssmDouble>(grade_g[i])); 4946 4946 grade_g[i]+=grade_g_gaussian[i]; 4947 4947 } … … 5163 5163 5164 5164 /*Check solution*/ 5165 if( isnan(lambdax[i])) _error2_("NaN found in solution vector");5166 if( isnan(lambday[i])) _error2_("NaN found in solution vector");5167 if( isnan(lambdaz[i])) _error2_("NaN found in solution vector");5168 if( isnan(lambdap[i])) _error2_("NaN found in solution vector");5165 if(xIsNan<IssmDouble>(lambdax[i])) _error2_("NaN found in solution vector"); 5166 if(xIsNan<IssmDouble>(lambday[i])) _error2_("NaN found in solution vector"); 5167 if(xIsNan<IssmDouble>(lambdaz[i])) _error2_("NaN found in solution vector"); 5168 if(xIsNan<IssmDouble>(lambdap[i])) _error2_("NaN found in solution vector"); 5169 5169 } 5170 5170 … … 5202 5202 5203 5203 /*Check solution*/ 5204 if( isnan(lambdax[i])) _error2_("NaN found in solution vector");5205 if( isnan(lambday[i])) _error2_("NaN found in solution vector");5204 if(xIsNan<IssmDouble>(lambdax[i])) _error2_("NaN found in solution vector"); 5205 if(xIsNan<IssmDouble>(lambday[i])) _error2_("NaN found in solution vector"); 5206 5206 } 5207 5207 … … 8128 8128 8129 8129 /*Check solution*/ 8130 if( isnan(vx[i])) _error2_("NaN found in solution vector");8131 if( isnan(vy[i])) _error2_("NaN found in solution vector");8130 if(xIsNan<IssmDouble>(vx[i])) _error2_("NaN found in solution vector"); 8131 if(xIsNan<IssmDouble>(vy[i])) _error2_("NaN found in solution vector"); 8132 8132 } 8133 8133 … … 8226 8226 8227 8227 /*Check solution*/ 8228 if( isnan(vx[i])) _error2_("NaN found in solution vector");8229 if( isnan(vy[i])) _error2_("NaN found in solution vector");8228 if(xIsNan<IssmDouble>(vx[i])) _error2_("NaN found in solution vector"); 8229 if(xIsNan<IssmDouble>(vy[i])) _error2_("NaN found in solution vector"); 8230 8230 } 8231 8231 … … 8314 8314 8315 8315 /*Check solution*/ 8316 if( isnan(vx[i])) _error2_("NaN found in solution vector");8317 if( isnan(vy[i])) _error2_("NaN found in solution vector");8318 if( isnan(vzstokes[i])) _error2_("NaN found in solution vector");8319 if( isnan(pressure[i])) _error2_("NaN found in solution vector");8316 if(xIsNan<IssmDouble>(vx[i])) _error2_("NaN found in solution vector"); 8317 if(xIsNan<IssmDouble>(vy[i])) _error2_("NaN found in solution vector"); 8318 if(xIsNan<IssmDouble>(vzstokes[i])) _error2_("NaN found in solution vector"); 8319 if(xIsNan<IssmDouble>(pressure[i])) _error2_("NaN found in solution vector"); 8320 8320 } 8321 8321 … … 8393 8393 8394 8394 /*Check solution*/ 8395 if( isnan(vx[i])) _error2_("NaN found in solution vector");8396 if( isnan(vy[i])) _error2_("NaN found in solution vector");8395 if(xIsNan<IssmDouble>(vx[i])) _error2_("NaN found in solution vector"); 8396 if(xIsNan<IssmDouble>(vy[i])) _error2_("NaN found in solution vector"); 8397 8397 } 8398 8398 … … 8482 8482 8483 8483 /*Check solution*/ 8484 if( isnan(vx[i])) _error2_("NaN found in solution vector");8485 if( isnan(vy[i])) _error2_("NaN found in solution vector");8486 if( isnan(vzstokes[i])) _error2_("NaN found in solution vector");8487 if( isnan(pressure[i])) _error2_("NaN found in solution vector");8484 if(xIsNan<IssmDouble>(vx[i])) _error2_("NaN found in solution vector"); 8485 if(xIsNan<IssmDouble>(vy[i])) _error2_("NaN found in solution vector"); 8486 if(xIsNan<IssmDouble>(vzstokes[i])) _error2_("NaN found in solution vector"); 8487 if(xIsNan<IssmDouble>(pressure[i])) _error2_("NaN found in solution vector"); 8488 8488 } 8489 8489 … … 8558 8558 8559 8559 /*Check solution*/ 8560 if( isnan(vx[i])) _error2_("NaN found in solution vector");8561 if( isnan(vy[i])) _error2_("NaN found in solution vector");8560 if(xIsNan<IssmDouble>(vx[i])) _error2_("NaN found in solution vector"); 8561 if(xIsNan<IssmDouble>(vy[i])) _error2_("NaN found in solution vector"); 8562 8562 } 8563 8563 … … 8627 8627 8628 8628 /*Check solution*/ 8629 if( isnan(vz[i])) _error2_("NaN found in solution vector");8629 if(xIsNan<IssmDouble>(vz[i])) _error2_("NaN found in solution vector"); 8630 8630 } 8631 8631 … … 8725 8725 8726 8726 /*Check solution*/ 8727 if( isnan(vx[i])) _error2_("NaN found in solution vector");8728 if( isnan(vy[i])) _error2_("NaN found in solution vector");8729 if( isnan(vz[i])) _error2_("NaN found in solution vector");8730 if( isnan(pressure[i])) _error2_("NaN found in solution vector");8727 if(xIsNan<IssmDouble>(vx[i])) _error2_("NaN found in solution vector"); 8728 if(xIsNan<IssmDouble>(vy[i])) _error2_("NaN found in solution vector"); 8729 if(xIsNan<IssmDouble>(vz[i])) _error2_("NaN found in solution vector"); 8730 if(xIsNan<IssmDouble>(pressure[i])) _error2_("NaN found in solution vector"); 8731 8731 } 8732 8732 -
issm/trunk-jpl/src/c/objects/Elements/Tria.cpp
r12511 r12529 1523 1523 for(int i=0;i<numdof;i++){ 1524 1524 values[i]=solution[doflist[i]]; 1525 if( isnan(values[i])) _error2_("NaN found in solution vector");1525 if(xIsNan<IssmDouble>(values[i])) _error2_("NaN found in solution vector"); 1526 1526 } 1527 1527 … … 1556 1556 for(i=0;i<numdof;i++){ 1557 1557 newthickness[i]=solution[doflist[i]]; 1558 if( isnan(newthickness[i])) _error2_("NaN found in solution vector");1558 if(xIsNan<IssmDouble>(newthickness[i])) _error2_("NaN found in solution vector"); 1559 1559 /*Constrain thickness to be at least 1m*/ 1560 1560 if(newthickness[i]<minthickness) newthickness[i]=minthickness; … … 3325 3325 3326 3326 /*Check solution*/ 3327 if( isnan(vx[i])) _error2_("NaN found in solution vector");3328 if( isnan(vy[i])) _error2_("NaN found in solution vector");3327 if(xIsNan<IssmDouble>(vx[i])) _error2_("NaN found in solution vector"); 3328 if(xIsNan<IssmDouble>(vy[i])) _error2_("NaN found in solution vector"); 3329 3329 } 3330 3330 … … 3385 3385 3386 3386 /*Check solution*/ 3387 if( isnan(vx[i])) _error2_("NaN found in solution vector");3388 if( isnan(vy[i])) _error2_("NaN found in solution vector");3387 if(xIsNan<IssmDouble>(vx[i])) _error2_("NaN found in solution vector"); 3388 if(xIsNan<IssmDouble>(vy[i])) _error2_("NaN found in solution vector"); 3389 3389 } 3390 3390 … … 3731 3731 /*Add gradje_g_gaussian vector to gradje_g: */ 3732 3732 for(i=0;i<NUMVERTICES;i++){ 3733 _assert_(! isnan(grade_g[i]));3733 _assert_(!xIsNan<IssmDouble>(grade_g[i])); 3734 3734 grade_g[i]+=grade_g_gaussian[i]; 3735 3735 } … … 3792 3792 for (i=0;i<NUMVERTICES;i++){ 3793 3793 grade_g[i]+=-weight*Jdet*gauss->weight*(dbasis[0][i]*dk[0]+dbasis[1][i]*dk[1]); 3794 _assert_(! isnan(grade_g[i]));3794 _assert_(!xIsNan<IssmDouble>(grade_g[i])); 3795 3795 } 3796 3796 } … … 4947 4947 4948 4948 /*Check solution*/ 4949 if( isnan(lambdax[i])) _error2_("NaN found in solution vector");4950 if( isnan(lambday[i])) _error2_("NaN found in solution vector");4949 if(xIsNan<IssmDouble>(lambdax[i])) _error2_("NaN found in solution vector"); 4950 if(xIsNan<IssmDouble>(lambday[i])) _error2_("NaN found in solution vector"); 4951 4951 } 4952 4952 … … 4978 4978 for(i=0;i<numdof;i++){ 4979 4979 lambda[i]=values[i]; 4980 if( isnan(lambda[i])) _error2_("NaN found in solution vector");4980 if(xIsNan<IssmDouble>(lambda[i])) _error2_("NaN found in solution vector"); 4981 4981 } 4982 4982 … … 5314 5314 for(i=0;i<numdof;i++){ 5315 5315 values[i]=solution[doflist[i]]; 5316 if( isnan(values[i])) _error2_("NaN found in solution vector");5316 if(xIsNan<IssmDouble>(values[i])) _error2_("NaN found in solution vector"); 5317 5317 if (values[i]<pow((IssmDouble)10,(IssmDouble)-10))values[i]=pow((IssmDouble)10,(IssmDouble)-10); //correcting the water column to positive values 5318 5318 -
issm/trunk-jpl/src/c/objects/Inputs/BoolInput.cpp
r12511 r12529 169 169 void BoolInput::Constrain(IssmPDouble cm_min, IssmPDouble cm_max){ 170 170 171 if(! isnan(cm_min)) if (this->value<cm_min)this->value=cm_min;172 if(! isnan(cm_max)) if (this->value>cm_max)this->value=cm_max;171 if(!xIsNan<IssmDouble>(cm_min)) if (this->value<cm_min)this->value=cm_min; 172 if(!xIsNan<IssmDouble>(cm_max)) if (this->value>cm_max)this->value=cm_max; 173 173 174 174 } -
issm/trunk-jpl/src/c/objects/Inputs/DoubleInput.cpp
r12511 r12529 225 225 void DoubleInput::Constrain(IssmPDouble cm_min, IssmPDouble cm_max){ 226 226 227 if(! isnan(cm_min)) if (this->value<cm_min)this->value=cm_min;228 if(! isnan(cm_max)) if (this->value>cm_max)this->value=cm_max;227 if(!xIsNan<IssmDouble>(cm_min)) if (this->value<cm_min)this->value=cm_min; 228 if(!xIsNan<IssmDouble>(cm_max)) if (this->value>cm_max)this->value=cm_max; 229 229 230 230 } -
issm/trunk-jpl/src/c/objects/Inputs/IntInput.cpp
r12511 r12529 174 174 void IntInput::Constrain(IssmPDouble cm_min, IssmPDouble cm_max){ 175 175 176 if(! isnan(cm_min)) if (this->value<cm_min)this->value=(int)cm_min;177 if(! isnan(cm_max)) if (this->value>cm_max)this->value=(int)cm_max;176 if(!xIsNan<IssmDouble>(cm_min)) if (this->value<cm_min)this->value=(int)cm_min; 177 if(!xIsNan<IssmDouble>(cm_max)) if (this->value>cm_max)this->value=(int)cm_max; 178 178 179 179 } -
issm/trunk-jpl/src/c/objects/Inputs/PentaP1Input.cpp
r12511 r12529 471 471 const int numnodes=6; 472 472 473 if(! isnan(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min;474 if(! isnan(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max;473 if(!xIsNan<IssmDouble>(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min; 474 if(!xIsNan<IssmDouble>(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max; 475 475 476 476 } -
issm/trunk-jpl/src/c/objects/Inputs/TriaP1Input.cpp
r12511 r12529 334 334 const int numnodes=3; 335 335 336 if(! isnan(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min;337 if(! isnan(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max;336 if(!xIsNan<IssmDouble>(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min; 337 if(!xIsNan<IssmDouble>(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max; 338 338 339 339 } -
issm/trunk-jpl/src/c/objects/Loads/Friction.cpp
r12511 r12529 113 113 114 114 alpha2=pow(drag_coefficient,2)*pow(Neff,r)*pow(vmag,(s-1)); 115 _assert_(! isnan(alpha2));115 _assert_(!xIsNan<IssmDouble>(alpha2)); 116 116 117 117 /*Assign output pointers:*/ … … 177 177 178 178 alpha2=pow(drag_coefficient,2)*pow(Neff,r)*pow(vmag,(s-1)); 179 _assert_(! isnan(alpha2));179 _assert_(!xIsNan<IssmDouble>(alpha2)); 180 180 181 181 /*Assign output pointers:*/ … … 243 243 if(vmag==0 && (s-1)<0) _error2_("velocity is 0 and (s-1)=" << (s-1) << "<0, alpha_complement is Inf"); 244 244 245 alpha_complement=pow(Neff,r)*pow(vmag,(s-1)); _assert_(! isnan(alpha_complement));245 alpha_complement=pow(Neff,r)*pow(vmag,(s-1)); _assert_(!xIsNan<IssmDouble>(alpha_complement)); 246 246 247 247 /*Assign output pointers:*/ … … 309 309 if(vmag==0 && (s-1)<0) _error2_("velocity is 0 and (s-1)=" << (s-1) << "<0, alpha_complement is Inf"); 310 310 311 alpha_complement=pow(Neff,r)*pow(vmag,(s-1)); _assert_(! isnan(alpha_complement));311 alpha_complement=pow(Neff,r)*pow(vmag,(s-1)); _assert_(!xIsNan<IssmDouble>(alpha_complement)); 312 312 313 313 /*Assign output pointers:*/ -
issm/trunk-jpl/src/c/objects/Loads/Numericalflux.cpp
r12511 r12529 60 60 61 61 /*First, see wether this is an internal or boundary edge (if e2=NaN)*/ 62 if ( isnan((IssmDouble)iomodel->Data(MeshEdgesEnum)[4*i+3])){ //edges are [node1 node2 elem1 elem2]62 if (xIsNan<IssmDouble>((IssmDouble)iomodel->Data(MeshEdgesEnum)[4*i+3])){ //edges are [node1 node2 elem1 elem2] 63 63 /* Boundary edge, only one element */ 64 64 e1=(int)iomodel->Data(MeshEdgesEnum)[4*i+2]; … … 751 751 vyaverage_input->GetInputValue(&vy,gauss); 752 752 spcthickness_input->GetInputValue(&thickness,gauss); 753 if( isnan(thickness)) _error2_("Cannot weakly apply constraint because NaN was provided");753 if(xIsNan<IssmDouble>(thickness)) _error2_("Cannot weakly apply constraint because NaN was provided"); 754 754 755 755 UdotN=vx*normal[0]+vy*normal[1]; -
issm/trunk-jpl/src/c/objects/Node.cpp
r12511 r12529 524 524 if(this->indexing.s_set[i]){ 525 525 values[count]=this->indexing.svalues[i]; 526 _assert_(! isnan(values[count]));526 _assert_(!xIsNan<IssmDouble>(values[count])); 527 527 count++; 528 528 } -
issm/trunk-jpl/src/c/objects/Numerics/ElementMatrix.cpp
r12507 r12529 343 343 for (int i=0;i<this->nrows;i++){ 344 344 for(int j=0;j<this->ncols;j++){ 345 if ( isnan(this->values[i*this->ncols+j])) _error2_("NaN found in Element Matrix");345 if (xIsNan<IssmDouble>(this->values[i*this->ncols+j])) _error2_("NaN found in Element Matrix"); 346 346 if (fabs(this->values[i*this->ncols+j])>1.e+50) _error2_("Element Matrix values exceeds 1.e+50"); 347 347 } -
issm/trunk-jpl/src/c/objects/Numerics/ElementVector.cpp
r12507 r12529 210 210 #ifdef _ISSM_DEBUG_ 211 211 for (int i=0;i<this->nrows;i++){ 212 if ( isnan(this->values[i])) _error2_("NaN found in Element Vector");212 if (xIsNan<IssmDouble>(this->values[i])) _error2_("NaN found in Element Vector"); 213 213 if (fabs( this->values[i])>1.e+50) _error2_("Element Vector values exceeds 1.e+50"); 214 214 } -
issm/trunk-jpl/src/c/shared/Numerics/BrentSearch.cpp
r12515 r12529 44 44 iter=0; 45 45 fxmin = (*f)(xmin,optargs); 46 if ( isnan(fxmin)) _error2_("Function evaluation returned NaN");46 if (xIsNan<IssmDouble>(fxmin)) _error2_("Function evaluation returned NaN"); 47 47 cout<<setprecision(5); 48 48 if(VerboseControl()) _pprintLine_(""); … … 51 51 if(VerboseControl()) _pprintLine_(" N/A "<<setw(12)<<xmin<<" "<<setw(12)<<fxmin<<" N/A boundary"); 52 52 fxmax = (*f)(xmax,optargs); 53 if ( isnan(fxmax)) _error2_("Function evaluation returned NaN");53 if (xIsNan<IssmDouble>(fxmax)) _error2_("Function evaluation returned NaN"); 54 54 if(VerboseControl()) _pprintLine_(" N/A "<<setw(12)<<xmax<<" "<<setw(12)<<fxmax<<" N/A boundary"); 55 55 56 56 /*test if jump option activated and xmin==0*/ 57 if (! isnan(cm_jump) && (xmin==0) && (fxmax/fxmin)<cm_jump){57 if (!xIsNan<IssmDouble>(cm_jump) && (xmin==0) && (fxmax/fxmin)<cm_jump){ 58 58 *psearch_scalar=xmax; 59 59 *pJ=fxmax; … … 75 75 /*2: call the function to be evaluated*/ 76 76 fxbest = (*f)(x,optargs); 77 if( isnan(fxbest)) _error2_("Function evaluation returned NaN");77 if(xIsNan<IssmDouble>(fxbest)) _error2_("Function evaluation returned NaN"); 78 78 iter=iter+1; 79 79 … … 90 90 if(VerboseControl()) 91 91 _pprintLine_(" "<<setw(5)<<iter<<" "<<setw(12)<<xbest<<" "<<setw(12)<<fxbest<<" "<<setw(12)<<pow(pow(xbest-xm,2),0.5)<<" initial"); 92 if (! isnan(cm_jump) && (xmin==0) && ((fxbest/fxmin)<cm_jump)){92 if (!xIsNan<IssmDouble>(cm_jump) && (xmin==0) && ((fxbest/fxmin)<cm_jump)){ 93 93 if(VerboseControl()) _pprintLine_(" optimization terminated: current x satisfies criteria 'cm_jump'=" << cm_jump); 94 94 loop=false; … … 159 159 //evaluate function on x 160 160 fx = (*f)(x,optargs); 161 if( isnan(fx)) _error2_("Function evaluation returned NaN");161 if(xIsNan<IssmDouble>(fx)) _error2_("Function evaluation returned NaN"); 162 162 iter=iter+1; 163 163 … … 197 197 loop=false; 198 198 } 199 else if (! isnan(cm_jump) && (xmin==0) && ((fxbest/fxmin)<cm_jump)){199 else if (!xIsNan<IssmDouble>(cm_jump) && (xmin==0) && ((fxbest/fxmin)<cm_jump)){ 200 200 if(VerboseControl()) _pprintLine_(" optimization terminated: current x satisfies criteria 'cm_jump'=" << cm_jump); 201 201 loop=false; -
issm/trunk-jpl/src/c/shared/Numerics/OptimalSearch.cpp
r12515 r12529 41 41 //get the value of the function at the first boundary 42 42 fx1= (*f)(x1,optargs); 43 if ( isnan(fx1)) _error2_("Function evaluation returned NaN");43 if (xIsNan<IssmDouble>(fx1)) _error2_("Function evaluation returned NaN"); 44 44 cout<<setprecision(5); 45 45 if(VerboseControl()) _pprintLine_(""); … … 57 57 iter++; 58 58 fx2 = (*f)(x2,optargs); 59 if ( isnan(fx2)) _error2_("Function evaluation returned NaN");59 if (xIsNan<IssmDouble>(fx2)) _error2_("Function evaluation returned NaN"); 60 60 if(VerboseControl()) 61 61 _pprintLine_(" "<<setw(5)<<iter<<" "<<setw(12)<<x2<<" "<<setw(12)<<fx2<<" "<<(fabs(x2-x1)>fabs(fx2-fx1)?fabs(fx2-fx1):fabs(x2-x1))); -
issm/trunk-jpl/src/c/shared/Numerics/XZvectorsToCoordinateSystem.cpp
r12476 r12529 12 12 13 13 for(i=0;i<6;i++){ 14 if( isnan(xzvectors[i])){14 if(xIsNan<IssmDouble>(xzvectors[i])){ 15 15 /*At least one NaN found: default to Id*/ 16 16 T[0*3+0] = 1.0; T[0*3+1] = 0.0; T[0*3+2] = 0.0; -
issm/trunk-jpl/src/c/shared/Numerics/isnan.cpp
r12527 r12529 2 2 #ifdef _INTEL_WIN_ 3 3 4 int isnan(IssmPDouble x){4 int xIsNan<IssmDouble>(IssmPDouble x){ 5 5 return (x!=x)?1:0; 6 6 } -
issm/trunk-jpl/src/c/solutions/controlconvergence.cpp
r12515 r12529 23 23 24 24 /*Has convergence been reached?*/ 25 if (! isnan(tol_cm) && J<tol_cm){25 if (!xIsNan<IssmDouble>(tol_cm) && J<tol_cm){ 26 26 converged=true; 27 27 if(VerboseConvergence()) _pprintString_(" Convergence criterion reached: J = " << J << " < " << tol_cm); -
issm/trunk-jpl/src/c/solutions/convergence.cpp
r12520 r12529 70 70 nF=pf->Norm(NORM_TWO); 71 71 res=nKUoldF/nF; 72 if ( isnan(res)){72 if (xIsNan<IssmDouble>(res)){ 73 73 _pprintLine_("norm nf = " << nF << "f and norm kuold = " << nKUoldF << "f"); 74 74 _error2_("mechanical equilibrium convergence criterion is NaN!"); … … 90 90 91 91 /*Relative criterion (optional)*/ 92 if (! isnan(eps_rel) || (VerboseConvergence())){92 if (!xIsNan<IssmDouble>(eps_rel) || (VerboseConvergence())){ 93 93 94 94 //compute norm(du)/norm(u) … … 96 96 ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO); 97 97 98 if ( isnan(ndu) || isnan(nu)) _error2_("convergence criterion is NaN!");98 if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error2_("convergence criterion is NaN!"); 99 99 100 100 //clean up … … 102 102 103 103 //print 104 if (! isnan(eps_rel)){104 if (!xIsNan<IssmDouble>(eps_rel)){ 105 105 if((ndu/nu)<eps_rel){ 106 106 if(VerboseConvergence()) _pprintLine_(" Convergence criterion: norm(du)/norm(u)" << "50s" << ndu/nu*100 << " < " << eps_rel*100 << " %"); … … 116 116 117 117 /*Absolute criterion (Optional) = max(du)*/ 118 if (! isnan(eps_abs) || (VerboseConvergence())){118 if (!xIsNan<IssmDouble>(eps_abs) || (VerboseConvergence())){ 119 119 120 120 //compute max(du) 121 121 duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0); 122 122 ndu=duf->Norm(NORM_TWO); nduinf=duf->Norm(NORM_INF); 123 if ( isnan(ndu) || isnan(nu)) _error2_("convergence criterion is NaN!");123 if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error2_("convergence criterion is NaN!"); 124 124 125 125 //clean up … … 127 127 128 128 //print 129 if (! isnan(eps_abs)){129 if (!xIsNan<IssmDouble>(eps_abs)){ 130 130 if ((nduinf*yts)<eps_abs){ 131 131 if(VerboseConvergence()) _pprintLine_(" Convergence criterion: max(du)" << "50s" << nduinf*yts << " < " << eps_abs << " m/yr"); -
issm/trunk-jpl/src/c/solutions/gradient_core.cpp
r12515 r12529 38 38 norm_inf=new_gradient->Norm(NORM_INF); 39 39 if(norm_inf<=0) _error2_("||∂J/∂α||∞ = 0 gradient norm is zero"); 40 if( isnan(norm_inf))_error2_("||∂J/∂α||∞ = NaN gradient norm is NaN");40 if(xIsNan<IssmDouble>(norm_inf))_error2_("||∂J/∂α||∞ = NaN gradient norm is NaN"); 41 41 42 42 /*plug back into inputs: */
Note:
See TracChangeset
for help on using the changeset viewer.