Changeset 24204


Ignore:
Timestamp:
10/03/19 17:35:52 (5 years ago)
Author:
schlegel
Message:

CHG: update tols for GEMB, allow looser checkes for grainsize params since it is in mm, other minor spacing

Location:
issm/trunk-jpl
Files:
5 edited

Legend:

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

    r24203 r24204  
    2626const double CA = 1005.0;                    // heat capacity of air (J kg-1 K-1)
    2727const double R = 8.314;                      // gas constant (J mol-1 K-1)
     28
     29const double Delflag=-99999;
    2830
    2931void Gembx(FemModel* femmodel){  /*{{{*/
     
    12471249
    12481250                        // if d > the density of ice, d = dIce
    1249                         if (d[0] > dIce+Dtol){
     1251                        if (d[0] > dIce-Dtol){
    12501252                                d[0] = dIce;           // adjust d
    12511253                                dz[0] = mass / d[0];    // dz is adjusted to conserve mass
     
    14011403
    14021404                // if pore water froze in ice then adjust d and dz thickness
    1403                 for(int i=0;i<n;i++)if(d[i]>dIce-Dtol)d[i]=dIce;
     1405                for(int i=0;i<n;i++)if(d[i]> dIce-Dtol)d[i]=dIce;
    14041406                for(int i=0;i<n;i++) dz[i]= m[i]/d[i];
    14051407
     
    14161418
    14171419        // run melt algorithm if there is melt water or excess pore water
    1418         if ((cellsum(exsT,n) > 0.0 + Ttol) || (cellsum(exsW,n) > 0.0 + Wtol)){
     1420        if ((cellsum(exsT,n) > 0.0+Ttol) || (cellsum(exsW,n) > 0.0+Wtol)){
    14191421                // _printf_(""MELT OCCURS");
    14201422                // check to see if thermal energy exceeds energy to melt entire cell
     
    14241426                surpT=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpT[i] = max(0.0, exsT[i]- LF/CI);
    14251427
    1426                 if (cellsum(surpT,n) > 0.0 + Ttol ){
     1428                if (cellsum(surpT,n) > 0.0+Ttol ){
    14271429                        // _printf_("T Surplus");
    14281430                        // calculate surplus energy
     
    14301432
    14311433                        int i = 0;
    1432                         while (cellsum(surpE,n) > 0.0 + Ttol){
     1434                        while (cellsum(surpE,n) > 0.0+Ttol){
    14331435                                // use surplus energy to increase the temperature of lower cell
    14341436                                T[i+1] = surpE[i]/m[i+1]/CI + T[i+1];
     
    14641466                X = 0;
    14651467                for(int i=n-1;i>=0;i--){
    1466                         if(M[i]>0.0+Wtol || exsW[i]>0.0+Wtol){
     1468                        if(M[i]> 0.0+Wtol || exsW[i]> 0.0+Wtol){
    14671469                                X=i;
    14681470                                break;
     
    15211523                                Wi = (dIce-d[i])* Swi * dz_0;            // irreducible water
    15221524                                dW[i] = min(inM - F1, Wi-W[i]);         // change in pore water
    1523                                 if (dW[i] < 0.0-Wtol && -1*dW[i]>W[i]-Wtol ){
     1525                                if (dW[i] < 0.0-Wtol && -1*dW[i]> W[i]-Wtol ){
    15241526                                        dW[i]= -1*W[i];
    15251527                                }
     
    15521554
    15531555                //// GRID CELL SPACING AND MODEL DEPTH
    1554                 for(int i=0;i<n;i++)if (W[i] < 0.0 - Wtol) _error_("negative pore water generated in melt equations");
     1556                for(int i=0;i<n;i++)if (W[i] < 0.0-Wtol) _error_("negative pore water generated in melt equations");
    15551557
    15561558                // delete all cells with zero mass
     
    15621564
    15631565                // delete all cells with zero mass
    1564                 D_size=0; for(int i=0;i<n;i++)if(m[i]>0.0)D_size++;
     1566                D_size=0; for(int i=0;i<n;i++)if(m[i]> (0.0+Wtol))D_size++;
    15651567                D=xNew<int>(D_size);
    1566                 D_size=0; for(int i=0;i<n;i++)if(m[i]>0.0){ D[D_size] = i; D_size++;}
     1568                D_size=0; for(int i=0;i<n;i++)if(m[i]> (0.0+Wtol)){ D[D_size] = i; D_size++;}
    15671569
    15681570                celldelete(&m,n,D,D_size);
     
    16421644
    16431645                        // set cell to 99999 for deletion
    1644                         m[i] = -99999;
     1646                        m[i] = Delflag;
    16451647                }
    16461648        }
     
    16501652         //find closest cell to merge with
    16511653                for(int i=n-2;i>=0;i--){
    1652                         if(m[i]!=-99999){
     1654                        if(m[i]!=Delflag){
    16531655                                X2=i;
    16541656                                X1=n-1;
     
    16721674
    16731675                // set cell to 99999 for deletion
    1674                 m[X2] = -99999;
     1676                m[X2] = Delflag;
    16751677        }
    16761678
    16771679        // delete combined cells
    1678         D_size=0; for(int i=0;i<n;i++)if(m[i]!=-99999)D_size++;
     1680        D_size=0; for(int i=0;i<n;i++)if(m[i]> Delflag+Wtol)D_size++;
    16791681        D=xNew<int>(D_size);
    1680         D_size=0; for(int i=0;i<n;i++)if(m[i]!=-99999){ D[D_size] = i; D_size++;}
     1682        D_size=0; for(int i=0;i<n;i++)if(m[i]> Delflag+Wtol){ D[D_size] = i; D_size++;}
    16811683
    16821684        celldelete(&m,n,D,D_size);
     
    20732075
    20742076        // if V = 0 goes to infinity therfore if V = 0 change
    2075         if(V<0.01-Dtol)V=0.01;
     2077        if(V< 0.01-Dtol)V=0.01;
    20762078
    20772079        // calculate the Bulk Richardson Number (Ri)
  • issm/trunk-jpl/test/NightlyRun/test243.m

    r24203 r24204  
    4848%Fields and tolerances to track changes
    4949field_names      ={'SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW'};
    50 field_tolerances ={1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11};
     50field_tolerances ={1e-11,1e-12,1e-11,8e-10,1e-11,10e-8,1e-12,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11};
    5151
    5252field_values={...
  • issm/trunk-jpl/test/NightlyRun/test243.py

    r24203 r24204  
    6262#Fields and tolerances to track changes
    6363field_names = ['SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW']
    64 field_tolerances = [1e-11, 1e-12, 1e-11, 2e-11, 1e-11, 1e-11, 1e-12, 4e-12, 1e-12, 1e-12, 1e-12, 2e-10, 2e-11, 2e-11, 1e-11, 2e-9, 2e-11]
     64field_tolerances = [1e-11,1e-12,1e-11,8e-10,1e-11,10e-8,1e-12,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11]
    6565#shape is different in python solution (fixed using reshape) which can cause test failure:
    6666field_values = [md.results.TransientSolution[-1].SmbDz[0, 0:240].reshape(1, -1),
  • issm/trunk-jpl/test/NightlyRun/test252.m

    r24191 r24204  
    5959        'SmbDz3','SmbT3' ,'SmbD3' ,'SmbRe3','SmbGdn3','SmbGsp3','SmbA3' ,'SmbEC3','SmbMassBalance3','SmbMAdd3','SmbDzAdd3','SmbFAC3',...
    6060        'SmbDz4','SmbT4' ,'SmbD4' ,'SmbRe4','SmbGdn4','SmbGsp4','SmbA4' ,'SmbEC4','SmbMassBalance4','SmbMAdd4','SmbDzAdd4','SmbFAC4'};
    61 field_tolerances ={1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,2e-12,1e-12,1e-12,1e-12,1e-11,...
    62                         1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-11,...
    63                         1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,2e-11,...
    64                         5e-9,1e-12,2e-9,3e-10,1e-11,1e-11,3e-11,1e-11,5e-9,1e-12,1e-12,4e-10};
     61field_tolerances ={1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,...
     62                   1e-11,1e-12,1e-11,2e-11,1e-11,8e-8,1e-12,4e-12,1e-12,1e-12,1e-12,1e-11,...
     63                   1e-11,1e-12,1e-11,2e-11,1e-11,7e-7,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,...
     64                   1e-11,1e-12,1e-11,6e-11,1e-11,9.5e-8,1e-12,1e-12,1e-12,1e-12,1e-12,2e-11};
    6565
    6666field_values={...
  • issm/trunk-jpl/test/NightlyRun/test252.py

    r24191 r24204  
    7171#Fields and tolerances to track changes
    7272field_names = ['SmbDz1','SmbT1' ,'SmbD1' ,'SmbRe1','SmbGdn1','SmbGsp1','SmbA1' ,'SmbEC1','SmbMassBalance1','SmbMAdd1','SmbDzAdd1','SmbFAC1','SmbDz2','SmbT2','SmbD2' ,'SmbRe2','SmbGdn2','SmbGsp2','SmbA2','SmbEC2','SmbMassBalance2','SmbMAdd2','SmbDzAdd2','SmbFAC2','SmbDz3','SmbT3','SmbD3','SmbRe3','SmbGdn3','SmbGsp3','SmbA3','SmbEC3','SmbMassBalance3','SmbMAdd3','SmbDzAdd3','SmbFAC3','SmbDz4','SmbT4' ,'SmbD4' ,'SmbRe4','SmbGdn4','SmbGsp4','SmbA4','SmbEC4','SmbMassBalance4','SmbMAdd4','SmbDzAdd4','SmbFAC4']
    73 field_tolerances = [1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,2e-12,1e-12,1e-12,1e-12,1e-11,
    74                                         1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-11,
    75                                         1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,2e-11,
    76                                         5e-9,1e-12,2e-9,3e-10,1e-11,1e-11,3e-11,1e-11,5e-9,1e-12,1e-12,4e-10]
     73field_tolerances = [1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,
     74                   1e-11,1e-12,1e-11,2e-11,1e-11,8e-8,1e-12,4e-12,1e-12,1e-12,1e-12,1e-11,
     75                   1e-11,1e-12,1e-11,2e-11,1e-11,7e-7,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,
     76                   1e-11,1e-12,1e-11,6e-11,1e-11,9.5e-8,1e-12,1e-12,1e-12,1e-12,1e-12,2e-11]
    7777
    7878#shape is different in python solution (fixed using reshape) which can cause test failure:
Note: See TracChangeset for help on using the changeset viewer.