Changeset 12529


Ignore:
Timestamp:
06/25/12 12:16:37 (13 years ago)
Author:
Mathieu Morlighem
Message:

replaced all isnan by template xIsnan

Location:
issm/trunk-jpl/src/c
Files:
35 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/Bamgx/Bamgx.cpp

    r12511 r12529  
    119119                        if (verbosity>1) _printLine_("   Merging Metric with hVertices...");
    120120                        for (i=0;i<BTh.nbv;i++){
    121                                 if (!isnan(bamgopts->hVertices[i])){
     121                                if (!xIsNan<IssmDouble>(bamgopts->hVertices[i])){
    122122                                        BTh[i].m=Metric((float)bamgopts->hVertices[i]);
    123123                                }
     
    129129                        if (verbosity>1) _printLine_("   Merging Metric with hminVertices...");
    130130                        for (i=0;i<BTh.nbv;i++){
    131                                 if (!isnan(bamgopts->hminVertices[i])){
     131                                if (!xIsNan<IssmDouble>(bamgopts->hminVertices[i])){
    132132                                        Metric M=BTh.vertices[i].m;
    133133                                        EigenMetric Vp(M/coef);
     
    142142                        if (verbosity>1) _printLine_("   Merging Metric with hmaxVertices...");
    143143                        for (i=0;i<BTh.nbv;i++){
    144                                 if (!isnan(bamgopts->hmaxVertices[i])){
     144                                if (!xIsNan<IssmDouble>(bamgopts->hmaxVertices[i])){
    145145                                        Metric M=BTh.vertices[i].m;
    146146                                        EigenMetric Vp(M/coef);
  • issm/trunk-jpl/src/c/modules/Gradjx/Gradjx.cpp

    r12493 r12529  
    5555        norm_inf=gradient->Norm(NORM_INF);
    5656        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");
    5858
    5959        /*Clean-up and assign output pointer*/
  • issm/trunk-jpl/src/c/modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp

    r12526 r12529  
    1313#include "../../shared/shared.h"
    1414#include "../../include/include.h"
     15#include "../../io/io.h"
    1516/*}}}*/
    1617
     
    140141
    141142                if(debug && my_thread==0)
    142                  _pprintString_("\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<<"%");
    143144                x_grid=*(x_mesh+i);
    144145                y_grid=*(y_mesh+i);
     
    179180                                        return NULL; /*WARNING: no error because it would blow up the multithreading!*/
    180181                        }
    181                         if(isnan(data_value)) data_value=default_value;
     182                        if(xIsNan<IssmDouble>(data_value)) data_value=default_value;
    182183                }
    183184                else{
  • issm/trunk-jpl/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp

    r12507 r12529  
    113113                                                data_value=data[i];
    114114                                        }
    115                                         if (isnan(data_value)){
     115                                        if (xIsNan<IssmDouble>(data_value)){
    116116                                                if(num_default_values==1) data_value=default_values[0];
    117117                                                else data_value=default_values[j];
  • issm/trunk-jpl/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp

    r12507 r12529  
    160160                                                data_value=data_mesh[n];
    161161                                        }
    162                                         if (isnan(data_value)) data_value=default_value;
     162                                        if (xIsNan<IssmDouble>(data_value)) data_value=default_value;
    163163
    164164                                        /*insert value and go to the next point*/
  • issm/trunk-jpl/src/c/modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp

    r12507 r12529  
    124124                                                data_value=data[i];
    125125                                        }
    126                                         if (isnan(data_value)) data_value=default_value;
     126                                        if (xIsNan<IssmDouble>(data_value)) data_value=default_value;
    127127
    128128                                        /*insert value and go to the next point*/
  • issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp

    r12495 r12529  
    5555                        if((iomodel->my_vertices[i])){
    5656
    57                                 if (!isnan(IssmDoublevector[i])){
     57                                if (!xIsNan<IssmDouble>(IssmDoublevector[i])){
    5858
    5959                                        constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,IssmDoublevector[i],analysis_type));
     
    8787                                for(j=0;j<N;j++){
    8888                                        values[j]=IssmDoublevector[i*N+j];
    89                                         if(!isnan(values[j]))spcpresent=true; //NaN means no spc by default
     89                                        if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
    9090                                }
    9191
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

    r12493 r12529  
    120120                                                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.
    121121                                                count++;
    122                                                 if (!isnan(spcvx[i])){
     122                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    123123                                                        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.
    124124                                                        count++;
    125125                                                }
    126                                                 if (!isnan(spcvy[i])){
     126                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    127127                                                        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.
    128128                                                        count++;
     
    135135                                                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.
    136136                                                count++;
    137                                                 if (!isnan(spcvx[i])){
     137                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    138138                                                        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.
    139139                                                        count++;
    140140                                                }
    141                                                 if (!isnan(spcvy[i])){
     141                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    142142                                                        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.
    143143                                                        count++;
     
    157157                                                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.
    158158                                                count++;
    159                                                 if (!isnan(spcvx[i])){
     159                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    160160                                                        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.
    161161                                                        count++;
    162162                                                }
    163                                                 if (!isnan(spcvy[i])){
     163                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    164164                                                        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.
    165165                                                        count++;
     
    172172                                                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.
    173173                                                count++;
    174                                                 if (!isnan(spcvx[i])){
     174                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    175175                                                        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.
    176176                                                        count++;
    177177                                                }
    178                                                 if (!isnan(spcvy[i])){
     178                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    179179                                                        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.
    180180                                                        count++;
    181181                                                }
    182                                                 if (!isnan(spcvz[i])){
     182                                                if (!xIsNan<IssmDouble>(spcvz[i])){
    183183                                                        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.
    184184                                                        count++;
     
    197197                                                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.
    198198                                                count++;
    199                                                 if (!isnan(spcvx[i])){
     199                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    200200                                                        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.
    201201                                                        count++;
    202202                                                }
    203                                                 if (!isnan(spcvy[i])){
     203                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    204204                                                        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.
    205205                                                        count++;
     
    212212                                                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.
    213213                                                count++;
    214                                                 if (!isnan(spcvx[i])){
     214                                                if (!xIsNan<IssmDouble>(spcvx[i])){
    215215                                                        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.
    216216                                                        count++;
    217217                                                }
    218                                                 if (!isnan(spcvy[i])){
     218                                                if (!xIsNan<IssmDouble>(spcvy[i])){
    219219                                                        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.
    220220                                                        count++;
    221221                                                }
    222                                                 if (!isnan(spcvz[i])){
     222                                                if (!xIsNan<IssmDouble>(spcvz[i])){
    223223                                                        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.
    224224                                                        count++;
     
    229229                        /*Now add the regular spcs*/
    230230                        else{
    231                                 if (Mx==numberofvertices && !isnan(spcvx[i])){
     231                                if (Mx==numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){
    232232                                        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.
    233233                                        count++;
     
    239239                                        for(j=0;j<Nx;j++){
    240240                                                values[j]=spcvx[i*Nx+j]/yts;
    241                                                 if(!isnan(values[j]))spcpresent=true; //NaN means no spc by default
     241                                                if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
    242242                                        }
    243243
     
    253253                                }
    254254
    255                                 if (My==numberofvertices && !isnan(spcvy[i])){
     255                                if (My==numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){
    256256                                        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.
    257257                                        count++;
     
    263263                                        for(j=0;j<Ny;j++){
    264264                                                values[j]=spcvy[i*Ny+j]/yts;
    265                                                 if(!isnan(values[j]))spcpresent=true; //NaN means no spc by default
     265                                                if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
    266266                                        }
    267267                                        if(spcpresent){
     
    277277
    278278                                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])){
    280280                                                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
    281281                                                count++;
     
    287287                                                for(j=0;j<Nz;j++){
    288288                                                        values[j]=spcvz[i*Nz+j]/yts;
    289                                                         if(!isnan(values[j]))spcpresent=true; //NaN means no spc by default
     289                                                        if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
    290290                                                }
    291291                                                if(spcpresent){
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp

    r10522 r12529  
    6060                        }
    6161                        else{
    62                                 if (!isnan(iomodel->Data(DiagnosticSpcvxEnum)[i])){
     62                                if (!xIsNan<IssmDouble>(iomodel->Data(DiagnosticSpcvxEnum)[i])){
    6363                                        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.
    6464                                        count++;
    6565                                }
    6666
    67                                 if (!isnan(iomodel->Data(DiagnosticSpcvyEnum)[i])){
     67                                if (!xIsNan<IssmDouble>(iomodel->Data(DiagnosticSpcvyEnum)[i])){
    6868                                        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
    6969                                        count++;
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp

    r11197 r12529  
    5656                                count++;
    5757                        }
    58                         else if (!isnan(iomodel->Data(DiagnosticSpcvzEnum)[i])){
     58                        else if (!xIsNan<IssmDouble>(iomodel->Data(DiagnosticSpcvzEnum)[i])){
    5959                                constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
    6060                                                                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  
    5555                if((iomodel->my_vertices[i])){
    5656
    57                         if (!isnan(spctemperature[i])){
     57                        if (!xIsNan<IssmDouble>(spctemperature[i])){
    5858
    5959                                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  
    125125                 * we must clone the nodes on this partition so that the loads (Numericalflux)
    126126                 * 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]){
    128128
    129129                        /*1: Get vertices ids*/
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp

    r12493 r12529  
    4343                /*keep only this partition's nodes:*/
    4444                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!
    4646                                loads->AddObject(new Pengrid(iomodel->loadcounter+i+1,i,iomodel,ThermalAnalysisEnum));
    4747                        }
  • issm/trunk-jpl/src/c/objects/Bamg/Geometry.cpp

    r12509 r12529  
    183183                        if(verbose>5) _printLine_("      processing hVertices");
    184184                        for (i=0;i< nbv;i++){
    185                                 if (!isnan(bamgopts->hVertices[i])){
     185                                if (!xIsNan<IssmDouble>(bamgopts->hVertices[i])){
    186186                                        vertices[i].m=Metric((double)bamgopts->hVertices[i]);
    187187                                }
  • issm/trunk-jpl/src/c/objects/Constraints/SpcDynamic.cpp

    r12511 r12529  
    124124IssmDouble SpcDynamic::GetValue(){
    125125        _assert_(this->isset);
    126         _assert_(!isnan(value));
     126        _assert_(!xIsNan<IssmDouble>(value));
    127127        return value;
    128128}
  • issm/trunk-jpl/src/c/objects/Constraints/SpcStatic.cpp

    r12511 r12529  
    124124/*FUNCTION SpcStatic::GetValue {{{*/
    125125IssmDouble SpcStatic::GetValue(){
    126         _assert_(!isnan(value));
     126        _assert_(!xIsNan<IssmDouble>(value));
    127127        return value;
    128128}
  • issm/trunk-jpl/src/c/objects/Elements/Penta.cpp

    r12511 r12529  
    6666
    6767        /*Build neighbors list*/
    68         if (isnan(iomodel->Data(MeshUpperelementsEnum)[index])) penta_elements_ids[1]=this->id; //upper penta is the same penta
     68        if (xIsNan<IssmDouble>(iomodel->Data(MeshUpperelementsEnum)[index])) penta_elements_ids[1]=this->id; //upper penta is the same penta
    6969        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 penta
     70        if (xIsNan<IssmDouble>(iomodel->Data(MeshLowerelementsEnum)[index])) penta_elements_ids[0]=this->id; //lower penta is the same penta
    7171        else                                    penta_elements_ids[0]=(int)(iomodel->Data(MeshLowerelementsEnum)[index]);
    7272        this->InitHookNeighbors(penta_elements_ids);
     
    17421742        for(i=0;i<numdof2d;i++){
    17431743                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");
    17451745                /*Constrain thickness to be at least 1m*/
    17461746                if(newthickness[i]<minthickness) newthickness[i]=minthickness;
     
    18121812        for(int i=0;i<numdof;i++){
    18131813                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");
    18151815        }
    18161816
     
    18421842                values[i]         =solution[doflist[i]];
    18431843                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");
    18451845        }
    18461846
     
    43284328
    43294329                /*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");
    43314331                //if(values[i]<0)      _printLine_("temperature < 0°K found in solution vector");
    43324332                //if(values[i]>275)    _printLine_("temperature > 275°K found in solution vector (Paterson's rheology associated is negative)");
     
    43984398
    43994399                /*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");
    44014401        }
    44024402
     
    49434943                /*Add gradje_g_gaussian vector to gradje_g: */
    49444944                for(i=0;i<NUMVERTICES;i++){
    4945                         _assert_(!isnan(grade_g[i]));
     4945                        _assert_(!xIsNan<IssmDouble>(grade_g[i]));
    49464946                        grade_g[i]+=grade_g_gaussian[i];
    49474947                }
     
    51635163
    51645164                /*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");
    51695169        }
    51705170
     
    52025202
    52035203                /*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");
    52065206        }
    52075207
     
    81288128
    81298129                /*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");
    81328132        }
    81338133
     
    82268226
    82278227                /*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");
    82308230        }
    82318231
     
    83148314
    83158315                /*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");
    83208320        }
    83218321
     
    83938393
    83948394                /*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");
    83978397        }
    83988398
     
    84828482
    84838483                /*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");
    84888488        }
    84898489
     
    85588558
    85598559                /*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");
    85628562        }
    85638563
     
    86278627
    86288628                /*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");
    86308630        }
    86318631
     
    87258725
    87268726                /*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");
    87318731        }
    87328732
  • issm/trunk-jpl/src/c/objects/Elements/Tria.cpp

    r12511 r12529  
    15231523        for(int i=0;i<numdof;i++){
    15241524                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");
    15261526        }
    15271527
     
    15561556        for(i=0;i<numdof;i++){
    15571557                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");
    15591559                /*Constrain thickness to be at least 1m*/
    15601560                if(newthickness[i]<minthickness) newthickness[i]=minthickness;
     
    33253325
    33263326                /*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");
    33293329        }
    33303330
     
    33853385
    33863386                /*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");
    33893389        }
    33903390
     
    37313731                /*Add gradje_g_gaussian vector to gradje_g: */
    37323732                for(i=0;i<NUMVERTICES;i++){
    3733                         _assert_(!isnan(grade_g[i]));
     3733                        _assert_(!xIsNan<IssmDouble>(grade_g[i]));
    37343734                        grade_g[i]+=grade_g_gaussian[i];
    37353735                }
     
    37923792                for (i=0;i<NUMVERTICES;i++){
    37933793                        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]));
    37953795                }
    37963796        }
     
    49474947
    49484948                /*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");
    49514951        }
    49524952
     
    49784978        for(i=0;i<numdof;i++){
    49794979                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");
    49814981        }
    49824982
     
    53145314        for(i=0;i<numdof;i++){
    53155315                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");
    53175317                if (values[i]<pow((IssmDouble)10,(IssmDouble)-10))values[i]=pow((IssmDouble)10,(IssmDouble)-10); //correcting the water column to positive values
    53185318 
  • issm/trunk-jpl/src/c/objects/Inputs/BoolInput.cpp

    r12511 r12529  
    169169void BoolInput::Constrain(IssmPDouble cm_min, IssmPDouble cm_max){
    170170
    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;
    173173
    174174}
  • issm/trunk-jpl/src/c/objects/Inputs/DoubleInput.cpp

    r12511 r12529  
    225225void DoubleInput::Constrain(IssmPDouble cm_min, IssmPDouble cm_max){
    226226
    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;
    229229
    230230}
  • issm/trunk-jpl/src/c/objects/Inputs/IntInput.cpp

    r12511 r12529  
    174174void IntInput::Constrain(IssmPDouble cm_min, IssmPDouble cm_max){
    175175
    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;
    178178
    179179}
  • issm/trunk-jpl/src/c/objects/Inputs/PentaP1Input.cpp

    r12511 r12529  
    471471        const int numnodes=6;
    472472               
    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;
    475475
    476476}
  • issm/trunk-jpl/src/c/objects/Inputs/TriaP1Input.cpp

    r12511 r12529  
    334334        const int numnodes=3;
    335335               
    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;
    338338
    339339}
  • issm/trunk-jpl/src/c/objects/Loads/Friction.cpp

    r12511 r12529  
    113113
    114114        alpha2=pow(drag_coefficient,2)*pow(Neff,r)*pow(vmag,(s-1));
    115         _assert_(!isnan(alpha2));
     115        _assert_(!xIsNan<IssmDouble>(alpha2));
    116116
    117117        /*Assign output pointers:*/
     
    177177
    178178        alpha2=pow(drag_coefficient,2)*pow(Neff,r)*pow(vmag,(s-1));
    179         _assert_(!isnan(alpha2));
     179        _assert_(!xIsNan<IssmDouble>(alpha2));
    180180
    181181        /*Assign output pointers:*/
     
    243243        if(vmag==0 && (s-1)<0) _error2_("velocity is 0 and (s-1)=" << (s-1) << "<0, alpha_complement is Inf");
    244244
    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));
    246246
    247247        /*Assign output pointers:*/
     
    309309        if(vmag==0 && (s-1)<0) _error2_("velocity is 0 and (s-1)=" << (s-1) << "<0, alpha_complement is Inf");
    310310
    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));
    312312
    313313        /*Assign output pointers:*/
  • issm/trunk-jpl/src/c/objects/Loads/Numericalflux.cpp

    r12511 r12529  
    6060
    6161        /*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]
    6363                /* Boundary edge, only one element */
    6464                e1=(int)iomodel->Data(MeshEdgesEnum)[4*i+2];
     
    751751                vyaverage_input->GetInputValue(&vy,gauss);
    752752                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");
    754754
    755755                UdotN=vx*normal[0]+vy*normal[1];
  • issm/trunk-jpl/src/c/objects/Node.cpp

    r12511 r12529  
    524524                        if(this->indexing.s_set[i]){
    525525                                values[count]=this->indexing.svalues[i];
    526                                 _assert_(!isnan(values[count]));
     526                                _assert_(!xIsNan<IssmDouble>(values[count]));
    527527                                count++;
    528528                        }
  • issm/trunk-jpl/src/c/objects/Numerics/ElementMatrix.cpp

    r12507 r12529  
    343343        for (int i=0;i<this->nrows;i++){
    344344                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");
    346346                        if (fabs(this->values[i*this->ncols+j])>1.e+50) _error2_("Element Matrix values exceeds 1.e+50");
    347347                }
  • issm/trunk-jpl/src/c/objects/Numerics/ElementVector.cpp

    r12507 r12529  
    210210#ifdef _ISSM_DEBUG_
    211211        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");
    213213                if (fabs( this->values[i])>1.e+50) _error2_("Element Vector values exceeds 1.e+50");
    214214        }
  • issm/trunk-jpl/src/c/shared/Numerics/BrentSearch.cpp

    r12515 r12529  
    4444        iter=0;
    4545        fxmin = (*f)(xmin,optargs);
    46         if (isnan(fxmin)) _error2_("Function evaluation returned NaN");
     46        if (xIsNan<IssmDouble>(fxmin)) _error2_("Function evaluation returned NaN");
    4747        cout<<setprecision(5);
    4848        if(VerboseControl()) _pprintLine_("");
     
    5151        if(VerboseControl()) _pprintLine_("           N/A    "<<setw(12)<<xmin<<"  "<<setw(12)<<fxmin<<"           N/A         boundary");
    5252        fxmax = (*f)(xmax,optargs);
    53         if (isnan(fxmax)) _error2_("Function evaluation returned NaN");
     53        if (xIsNan<IssmDouble>(fxmax)) _error2_("Function evaluation returned NaN");
    5454        if(VerboseControl()) _pprintLine_("           N/A    "<<setw(12)<<xmax<<"  "<<setw(12)<<fxmax<<"           N/A         boundary");
    5555
    5656        /*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){
    5858                *psearch_scalar=xmax;
    5959                *pJ=fxmax;
     
    7575        /*2: call the function to be evaluated*/
    7676        fxbest = (*f)(x,optargs);
    77         if(isnan(fxbest)) _error2_("Function evaluation returned NaN");
     77        if(xIsNan<IssmDouble>(fxbest)) _error2_("Function evaluation returned NaN");
    7878        iter=iter+1;
    7979
     
    9090        if(VerboseControl())
    9191         _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)){
    9393                if(VerboseControl()) _pprintLine_("      optimization terminated: current x satisfies criteria 'cm_jump'=" << cm_jump);
    9494                loop=false;
     
    159159                //evaluate function on x
    160160                fx = (*f)(x,optargs);
    161                 if(isnan(fx)) _error2_("Function evaluation returned NaN");
     161                if(xIsNan<IssmDouble>(fx)) _error2_("Function evaluation returned NaN");
    162162                iter=iter+1;
    163163
     
    197197                        loop=false;
    198198                }
    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)){
    200200                        if(VerboseControl()) _pprintLine_("      optimization terminated: current x satisfies criteria 'cm_jump'=" << cm_jump);
    201201                        loop=false;
  • issm/trunk-jpl/src/c/shared/Numerics/OptimalSearch.cpp

    r12515 r12529  
    4141        //get the value of the function at the first boundary
    4242        fx1= (*f)(x1,optargs);
    43         if (isnan(fx1)) _error2_("Function evaluation returned NaN");
     43        if (xIsNan<IssmDouble>(fx1)) _error2_("Function evaluation returned NaN");
    4444        cout<<setprecision(5);
    4545        if(VerboseControl()) _pprintLine_("");
     
    5757                iter++;
    5858                fx2 = (*f)(x2,optargs);
    59                 if (isnan(fx2)) _error2_("Function evaluation returned NaN");
     59                if (xIsNan<IssmDouble>(fx2)) _error2_("Function evaluation returned NaN");
    6060                if(VerboseControl())
    6161                 _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  
    1212
    1313        for(i=0;i<6;i++){
    14                 if(isnan(xzvectors[i])){
     14                if(xIsNan<IssmDouble>(xzvectors[i])){
    1515                        /*At least one NaN found: default to Id*/
    1616                        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  
    22#ifdef _INTEL_WIN_
    33
    4 int isnan(IssmPDouble x){
     4int xIsNan<IssmDouble>(IssmPDouble x){
    55        return (x!=x)?1:0;
    66}
  • issm/trunk-jpl/src/c/solutions/controlconvergence.cpp

    r12515 r12529  
    2323
    2424        /*Has convergence been reached?*/
    25         if (!isnan(tol_cm) && J<tol_cm){
     25        if (!xIsNan<IssmDouble>(tol_cm) && J<tol_cm){
    2626                converged=true;
    2727                if(VerboseConvergence()) _pprintString_("      Convergence criterion reached: J = " << J << " < " << tol_cm);
  • issm/trunk-jpl/src/c/solutions/convergence.cpp

    r12520 r12529  
    7070        nF=pf->Norm(NORM_TWO);
    7171        res=nKUoldF/nF;
    72         if (isnan(res)){
     72        if (xIsNan<IssmDouble>(res)){
    7373                _pprintLine_("norm nf = " << nF << "f and norm kuold = " << nKUoldF << "f");
    7474                _error2_("mechanical equilibrium convergence criterion is NaN!");
     
    9090
    9191        /*Relative criterion (optional)*/
    92         if (!isnan(eps_rel) || (VerboseConvergence())){
     92        if (!xIsNan<IssmDouble>(eps_rel) || (VerboseConvergence())){
    9393
    9494                //compute norm(du)/norm(u)
     
    9696                ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO);
    9797
    98                 if (isnan(ndu) || isnan(nu)) _error2_("convergence criterion is NaN!");
     98                if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error2_("convergence criterion is NaN!");
    9999
    100100                //clean up
     
    102102
    103103                //print
    104                 if (!isnan(eps_rel)){
     104                if (!xIsNan<IssmDouble>(eps_rel)){
    105105                        if((ndu/nu)<eps_rel){
    106106                                if(VerboseConvergence()) _pprintLine_("   Convergence criterion: norm(du)/norm(u)" << "50s" << ndu/nu*100 << " < " << eps_rel*100 << " %");
     
    116116
    117117        /*Absolute criterion (Optional) = max(du)*/
    118         if (!isnan(eps_abs) || (VerboseConvergence())){
     118        if (!xIsNan<IssmDouble>(eps_abs) || (VerboseConvergence())){
    119119
    120120                //compute max(du)
    121121                duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
    122122                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!");
    124124
    125125                //clean up
     
    127127
    128128                //print
    129                 if (!isnan(eps_abs)){
     129                if (!xIsNan<IssmDouble>(eps_abs)){
    130130                        if ((nduinf*yts)<eps_abs){
    131131                                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  
    3838        norm_inf=new_gradient->Norm(NORM_INF);
    3939        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");
    4141
    4242        /*plug back into inputs: */
Note: See TracChangeset for help on using the changeset viewer.