Changeset 6420


Ignore:
Timestamp:
10/26/10 07:39:38 (15 years ago)
Author:
Mathieu Morlighem
Message:

Added checks on solutions

Location:
issm/trunk/src/c/objects/Elements
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r6413 r6420  
    37443744                vx[i+3]=vx[i];
    37453745                vy[i+3]=vy[i];
     3746
     3747                /*Check solution*/
     3748                if(isnan(vx[i])) _error_("NaN found in solution vector");
     3749                if(isnan(vy[i])) _error_("NaN found in solution vector");
    37463750        }
    37473751
     
    38413845                vx[i]=macayeal_values[i*NDOF2+0]+pattyn_values[i*NDOF2+0];
    38423846                vy[i]=macayeal_values[i*NDOF2+1]+pattyn_values[i*NDOF2+1];
     3847
     3848                /*Check solution*/
     3849                if(isnan(vx[i])) _error_("NaN found in solution vector");
     3850                if(isnan(vy[i])) _error_("NaN found in solution vector");
    38433851        }
    38443852
     
    39343942                vzstokes[i]=stokes_values[i*NDOF4+2];
    39353943                pressure[i]=stokes_values[i*NDOF4+3]*stokesreconditioning;
     3944
     3945                /*Check solution*/
     3946                if(isnan(vx[i]))       _error_("NaN found in solution vector");
     3947                if(isnan(vy[i]))       _error_("NaN found in solution vector");
     3948                if(isnan(vzstokes[i])) _error_("NaN found in solution vector");
     3949                if(isnan(pressure[i])) _error_("NaN found in solution vector");
    39363950        }
    39373951
     
    40064020                vx[i]=values[i*NDOF2+0];
    40074021                vy[i]=values[i*NDOF2+1];
     4022
     4023                /*Check solution*/
     4024                if(isnan(vx[i])) _error_("NaN found in solution vector");
     4025                if(isnan(vy[i])) _error_("NaN found in solution vector");
    40084026        }
    40094027
     
    40924110                vzstokes[i]=stokes_values[i*NDOF4+2];
    40934111                pressure[i]=stokes_values[i*NDOF4+3]*stokesreconditioning;
     4112
     4113                /*Check solution*/
     4114                if(isnan(vx[i]))       _error_("NaN found in solution vector");
     4115                if(isnan(vy[i]))       _error_("NaN found in solution vector");
     4116                if(isnan(vzstokes[i])) _error_("NaN found in solution vector");
     4117                if(isnan(pressure[i])) _error_("NaN found in solution vector");
    40944118        }
    40954119
     
    41644188                vx[i]=values[i*NDOF2+0];
    41654189                vy[i]=values[i*NDOF2+1];
     4190
     4191                /*Check solution*/
     4192                if(isnan(vx[i])) _error_("NaN found in solution vector");
     4193                if(isnan(vy[i])) _error_("NaN found in solution vector");
    41664194        }
    41674195
     
    42424270        /*Use the dof list to index into the solution vector vz: */
    42434271        for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
    4244         for(i=0;i<NUMVERTICES;i++) vz[i]=values[i*NDOF1+0];
     4272        for(i=0;i<NUMVERTICES;i++){
     4273                vz[i]=values[i*NDOF1+0];
     4274
     4275                /*Check solution*/
     4276                if(isnan(vz[i])) _error_("NaN found in solution vector");
     4277        }
    42454278
    42464279        /*Get Vx and Vy*/
     
    43504383                vz[i]=values[i*NDOF4+2];
    43514384                pressure[i]=values[i*NDOF4+3];
     4385
     4386                /*Check solution*/
     4387                if(isnan(vx[i]))       _error_("NaN found in solution vector");
     4388                if(isnan(vy[i]))       _error_("NaN found in solution vector");
     4389                if(isnan(vz[i]))       _error_("NaN found in solution vector");
     4390                if(isnan(pressure[i])) _error_("NaN found in solution vector");
    43524391        }
    43534392
     
    44004439                lambdaz[i]=values[i*NDOF4+2];
    44014440                lambdap[i]=values[i*NDOF4+3];
     4441
     4442                /*Check solution*/
     4443                if(isnan(lambdax[i])) _error_("NaN found in solution vector");
     4444                if(isnan(lambday[i])) _error_("NaN found in solution vector");
     4445                if(isnan(lambdaz[i])) _error_("NaN found in solution vector");
     4446                if(isnan(lambdap[i])) _error_("NaN found in solution vector");
    44024447        }
    44034448
     
    44334478                lambdax[i]=values[i*NDOF2+0];
    44344479                lambday[i]=values[i*NDOF2+1];
     4480
     4481                /*Check solution*/
     4482                if(isnan(lambdax[i]))       _error_("NaN found in solution vector");
     4483                if(isnan(lambday[i]))       _error_("NaN found in solution vector");
    44354484        }
    44364485
     
    44594508
    44604509        /*Use the dof list to index into the solution vector: */
    4461         for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
     4510        for(i=0;i<numdof;i++){
     4511                values[i]=solution[doflist[i]];
     4512
     4513                /*Check solution*/
     4514                if(isnan(values[i])) _error_("NaN found in solution vector");
     4515                if(values[i]<0)      _error_("temperature < 0°K found in solution vector");
     4516                if(values[i]>275)    _error_("temperature > 275°K found in solution vector (Paterson's rheology associated is negative)");
     4517        }
    44624518
    44634519        this->inputs->GetParameterValue(&converged,ConvergedEnum);
     
    44914547
    44924548        /*Use the dof list to index into the solution vector: */
    4493         for(int i=0;i<numdof;i++) values[i]=solution[doflist[i]];
     4549        for(int i=0;i<numdof;i++){
     4550                values[i]=solution[doflist[i]];
     4551                if(isnan(values[i])) _error_("NaN found in solution vector");
     4552        }
    44944553
    44954554        /*Add input to the element: */
     
    45204579                values[i]         =solution[doflist[i]];
    45214580                values[i+numdof2d]=values[i];
     4581                if(isnan(values[i])) _error_("NaN found in solution vector");
    45224582        }
    45234583
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r6413 r6420  
    37223722
    37233723        /*Ok, we have vx and vy in values, fill in vx and vy arrays: */
    3724         for(i=0;i<numdof;i++) lambda[i]=values[i];
     3724        for(i=0;i<numdof;i++){
     3725                lambda[i]=values[i];
     3726                if(isnan(lambda[i])) _error_("NaN found in solution vector");
     3727        }
    37253728
    37263729        /*Add vx and vy as inputs to the tria element: */
     
    37523755                lambdax[i]=values[i*NDOF2+0];
    37533756                lambday[i]=values[i*NDOF2+1];
     3757
     3758                /*Check solution*/
     3759                if(isnan(lambdax[i])) _error_("NaN found in solution vector");
     3760                if(isnan(lambday[i])) _error_("NaN found in solution vector");
    37543761        }
    37553762
     
    37893796                vx[i]=values[i*NDOF2+0];
    37903797                vy[i]=values[i*NDOF2+1];
     3798
     3799                /*Check solution*/
     3800                if(isnan(vx[i])) _error_("NaN found in solution vector");
     3801                if(isnan(vy[i])) _error_("NaN found in solution vector");
    37913802        }
    37923803
     
    38483859                vx[i]=values[i*NDOF2+0];
    38493860                vy[i]=values[i*NDOF2+1];
     3861
     3862                /*Check solution*/
     3863                if(isnan(vx[i])) _error_("NaN found in solution vector");
     3864                if(isnan(vy[i])) _error_("NaN found in solution vector");
    38503865        }
    38513866
     
    39013916
    39023917        /*Use the dof list to index into the solution vector: */
    3903         for(int i=0;i<numdof;i++) values[i]=solution[doflist[i]];
     3918        for(int i=0;i<numdof;i++){
     3919                values[i]=solution[doflist[i]];
     3920                if(isnan(values[i])) _error_("NaN found in solution vector");
     3921        }
    39043922
    39053923        /*Add input to the element: */
Note: See TracChangeset for help on using the changeset viewer.