Changeset 24735


Ignore:
Timestamp:
04/24/20 17:52:40 (5 years ago)
Author:
schlegel
Message:

CHG: add surface temperature forcing and test253, tighten tols, and update how snow merges with ice

Location:
issm/trunk-jpl
Files:
3 added
17 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp

    r24626 r24735  
    245245                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.isturbulentflux",SmbIsturbulentfluxEnum));
    246246                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.isclimatology",SmbIsclimatologyEnum));
     247                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.isconstrainsurfaceT",SmbIsconstrainsurfaceTEnum));
    247248                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.InitDensityScaling",SmbInitDensityScalingEnum));
    248249                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.ThermoDeltaTScaling",SmbThermoDeltaTScalingEnum));
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r24716 r24735  
    36313631        bool isgraingrowth,isalbedo,isshortwave,isthermal,isaccumulation,ismelt,isdensification,isturbulentflux;
    36323632        bool isclimatology=false;
     3633        bool isconstrainsurfaceT=false;
    36333634        IssmDouble init_scaling=0.0;
    36343635        IssmDouble thermo_scaling=1.0;
     
    36943695        parameters->FindParam(&isdensification,SmbIsdensificationEnum);
    36953696        parameters->FindParam(&isturbulentflux,SmbIsturbulentfluxEnum);
     3697        parameters->FindParam(&isconstrainsurfaceT,SmbIsconstrainsurfaceTEnum);
    36963698        parameters->FindParam(&init_scaling,SmbInitDensityScalingEnum);
    36973699        parameters->FindParam(&thermo_scaling,SmbThermoDeltaTScalingEnum);
     
    38933895        netSW = netSW + cellsum(swf,m)*smb_dt/dt;
    38943896
     3897        if(isconstrainsurfaceT){
     3898                if (m>0) T[0]=Ta;
     3899                if (m>1) T[1]=Ta;
     3900        }
    38953901        /*Thermal profile computation:*/
    3896         if(isthermal)thermo(&EC, &T, &ulw, dz, d, swf, dlw, Ta, V, eAir, pAir, teValue, W[0], smb_dt, m, Vz, Tz, thermo_scaling,rho_ice,this->Sid());
     3902        if(isthermal)thermo(&EC, &T, &ulw, dz, d, swf, dlw, Ta, V, eAir, pAir, teValue, W[0], smb_dt, m, Vz, Tz, thermo_scaling,rho_ice,this->Sid(),isconstrainsurfaceT);
    38973903
    38983904        /*Change in thickness of top cell due to evaporation/condensation  assuming same density as top cell.
     
    39053911        /*Calculate water production, M [kg m-2] resulting from snow/ice temperature exceeding 273.15 deg K
    39063912         * (> 0 deg C), runoff R [kg m-2] and resulting changes in density and determine wet compaction [m]*/
    3907         if(ismelt)melt(&M, &Msurf, &R, &mAdd, &dz_add, &T, &d, &dz, &W, &a, &re, &gdn, &gsp, &m, dzMin, zMax, zMin, zTop,rho_ice,this->Sid());
     3913        if(ismelt)melt(&M, &Msurf, &R, &mAdd, &dz_add, &T, &d, &dz, &W, &a, &re, &gdn, &gsp, &m, dzMin, zMax, zMin, zTop, zY, rho_ice,this->Sid());
    39083914
    39093915        /*Allow non-melt densification and determine compaction [m]*/
     
    39563962        for(int i=0;i<m;i++){
    39573963                sumMass += dz[i]*d[i];
    3958                 fac += dz[i]*(rho_ice - fmin(d[i],rho_ice));
     3964                if (d[i] > 0) fac += dz[i]*(rho_ice - fmin(d[i],rho_ice));
    39593965        }
    39603966
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp

    r24705 r24735  
    615615
    616616}  /*}}}*/
    617 void thermo(IssmDouble* pEC, IssmDouble** pT, IssmDouble* pulwrf, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlwrf, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid) { /*{{{*/
     617void thermo(IssmDouble* pEC, IssmDouble** pT, IssmDouble* pulwrf, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlwrf, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid, bool isconstrainsurfaceT) { /*{{{*/
    618618
    619619        /* ENGLACIAL THERMODYNAMICS*/
     
    13721372        *pm=m;
    13731373} /*}}}*/
    1374 void melt(IssmDouble* pM, IssmDouble* pMs, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble dIce, int sid){ /*{{{*/
     1374void melt(IssmDouble* pM, IssmDouble* pMs, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY, IssmDouble dIce, int sid){ /*{{{*/
    13751375
    13761376        //// MELT ROUTINE
     
    14231423        IssmDouble* Zcum=NULL;
    14241424        IssmDouble* dzMin2=NULL;
    1425         IssmDouble zY2=1.025;
     1425        IssmDouble zY2=zY;
    14261426        bool lastCellFlag = false;
    14271427        int X1=0;
     
    15911591                        depthice=0.0;
    15921592                        if (d[i] >= dPHC-Dtol){
    1593                                 for(int l=i;(l<n & d[l]>=dPHC-Dtol);l++) depthice=depthice+dz[l];
     1593                                for(int l=i;(l<n && d[l]>=dPHC-Dtol);l++) depthice=depthice+dz[l];
    15941594                        }
    15951595
     
    17181718
    17191719        for (int i=0;i<n;i++){
    1720                 if (Zcum[i]<=zTop+Dtol){
     1720                if (Zcum[i]<=zTop+Dtol || i<1){
    17211721                        dzMin2[i]=dzMin;
    17221722                }
     
    17451745
    17461746        for (int i = 0; i<=X;i++){
    1747                 if (dz[i] < dzMin2[i]-Dtol){                              // merge top cells
     1747                if (dz[i] < dzMin2[i]-Dtol && d[i+1]<dIce-Dtol){  // merge top cells, don't merge with ice
    17481748                        // _printf_("dz > dzMin * 2')
    17491749                        // adjust variables as a linearly weighted function of mass
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h

    r24691 r24735  
    3131void albedo(IssmDouble** a,int aIdx, IssmDouble* re, IssmDouble* dz, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble aValue, IssmDouble adThresh, IssmDouble* T, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble Msurf, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt, IssmDouble dIce, int m, int sid);
    3232void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble as, IssmDouble* d, IssmDouble* dz, IssmDouble* re, IssmDouble dIce, int m, int sid);
    33 void thermo(IssmDouble* pEC, IssmDouble** T, IssmDouble* pulwrf, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid);
     33void thermo(IssmDouble* pEC, IssmDouble** T, IssmDouble* pulwrf, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid, bool isconstrainsurfaceT);
    3434void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, int aIdx, int dsnowIdx, IssmDouble Tmean, IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble C, IssmDouble V, IssmDouble Vmean, IssmDouble dIce, int sid);
    35 void melt(IssmDouble* pM, IssmDouble* pMs, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble dIce, int sid);
     35void melt(IssmDouble* pM, IssmDouble* pMs, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY, IssmDouble dIce, int sid);
    3636void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid);
    3737void turbulentFlux(IssmDouble* pshf, IssmDouble* plhf, IssmDouble* pEC, IssmDouble Ta, IssmDouble Ts, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble ds, IssmDouble Ws, IssmDouble Vz, IssmDouble Tz, IssmDouble dIce, int sid);
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r24691 r24735  
    354354syn keyword cConstant SmbIsalbedoEnum
    355355syn keyword cConstant SmbIsclimatologyEnum
     356syn keyword cConstant SmbIsconstrainsurfaceTEnum
    356357syn keyword cConstant SmbIsd18opdEnum
    357358syn keyword cConstant SmbIsdelta18oEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r24691 r24735  
    348348        SmbIsalbedoEnum,
    349349        SmbIsclimatologyEnum,
     350        SmbIsconstrainsurfaceTEnum,
    350351        SmbIsd18opdEnum,
    351352        SmbIsdelta18oEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r24691 r24735  
    356356                case SmbIsalbedoEnum : return "SmbIsalbedo";
    357357                case SmbIsclimatologyEnum : return "SmbIsclimatology";
     358                case SmbIsconstrainsurfaceTEnum : return "SmbIsconstrainsurfaceT";
    358359                case SmbIsd18opdEnum : return "SmbIsd18opd";
    359360                case SmbIsdelta18oEnum : return "SmbIsdelta18o";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r24691 r24735  
    362362              else if (strcmp(name,"SmbIsalbedo")==0) return SmbIsalbedoEnum;
    363363              else if (strcmp(name,"SmbIsclimatology")==0) return SmbIsclimatologyEnum;
     364              else if (strcmp(name,"SmbIsconstrainsurfaceT")==0) return SmbIsconstrainsurfaceTEnum;
    364365              else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
    365366              else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum;
     
    382383              else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum;
    383384              else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum;
    384               else if (strcmp(name,"SmbRunoffalti")==0) return SmbRunoffaltiEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum;
     388              if (strcmp(name,"SmbRunoffalti")==0) return SmbRunoffaltiEnum;
     389              else if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum;
    389390              else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum;
    390391              else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
     
    505506              else if (strcmp(name,"CalvingStressThresholdFloatingice")==0) return CalvingStressThresholdFloatingiceEnum;
    506507              else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum;
    507               else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"CalvingratexAverage")==0) return CalvingratexAverageEnum;
     511              if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
     512              else if (strcmp(name,"CalvingratexAverage")==0) return CalvingratexAverageEnum;
    512513              else if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum;
    513514              else if (strcmp(name,"CalvingrateyAverage")==0) return CalvingrateyAverageEnum;
     
    628629              else if (strcmp(name,"InversionSurfaceObs")==0) return InversionSurfaceObsEnum;
    629630              else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
    630               else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
     634              if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
     635              else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
    635636              else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
    636637              else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;
     
    751752              else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum;
    752753              else if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum;
    753               else if (strcmp(name,"SmbMeanLHF")==0) return SmbMeanLHFEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum;
     757              if (strcmp(name,"SmbMeanLHF")==0) return SmbMeanLHFEnum;
     758              else if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum;
    758759              else if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum;
    759760              else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
     
    874875              else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum;
    875876              else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum;
    876               else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum;
     880              if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum;
     881              else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum;
    881882              else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum;
    882883              else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum;
     
    997998              else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
    998999              else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
    999               else if (strcmp(name,"BoolInput2")==0) return BoolInput2Enum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"IntInput2")==0) return IntInput2Enum;
     1003              if (strcmp(name,"BoolInput2")==0) return BoolInput2Enum;
     1004              else if (strcmp(name,"IntInput2")==0) return IntInput2Enum;
    10041005              else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
    10051006              else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
     
    11201121              else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
    11211122              else if (strcmp(name,"IceVolumeScaled")==0) return IceVolumeScaledEnum;
    1122               else if (strcmp(name,"IcefrontMassFlux")==0) return IcefrontMassFluxEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"IcefrontMassFluxLevelset")==0) return IcefrontMassFluxLevelsetEnum;
     1126              if (strcmp(name,"IcefrontMassFlux")==0) return IcefrontMassFluxEnum;
     1127              else if (strcmp(name,"IcefrontMassFluxLevelset")==0) return IcefrontMassFluxLevelsetEnum;
    11271128              else if (strcmp(name,"Incremental")==0) return IncrementalEnum;
    11281129              else if (strcmp(name,"Indexed")==0) return IndexedEnum;
     
    12431244              else if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum;
    12441245              else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum;
    1245               else if (strcmp(name,"Regionaloutput")==0) return RegionaloutputEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"Regular")==0) return RegularEnum;
     1249              if (strcmp(name,"Regionaloutput")==0) return RegionaloutputEnum;
     1250              else if (strcmp(name,"Regular")==0) return RegularEnum;
    12501251              else if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum;
    12511252              else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
  • issm/trunk-jpl/src/m/classes/SMBgemb.m

    r24734 r24735  
    2323                isturbulentflux;
    2424                isclimatology;
     25                isconstrainsurfaceT;
    2526
    2627                %inputs:
     
    163164                        self.isturbulentflux=1;
    164165                        self.isclimatology=0;
     166                        self.isconstrainsurfaceT=0;
    165167
    166168                        self.aIdx = 1;
     
    218220                        md = checkfield(md,'fieldname','smb.isturbulentflux','values',[0 1]);
    219221                        md = checkfield(md,'fieldname','smb.isclimatology','values',[0 1]);
     222                        md = checkfield(md,'fieldname','smb.isconstrainsurfaceT','values',[0 1]);
    220223
    221224                        md = checkfield(md,'fieldname','smb.Ta','timeseries',1,'NaN',1,'Inf',1,'>',273-100,'<',273+100); %-100/100 celsius min/max value
     
    298301                        fielddisplay(self,'isdensification','run densification module (default true)');
    299302                        fielddisplay(self,'isturbulentflux','run turbulant heat fluxes module (default true)');
     303                        fielddisplay(self,'isconstrainsurfaceT','constrain surface temperatures to air temperature, turn off EC and surface flux contribution to surface temperature change');
    300304                        fielddisplay(self,'isclimatology','repeat all forcings when past last forcing time (default false)');
    301305                        fielddisplay(self,'Ta','2 m air temperature, in Kelvin');
     
    394398                        WriteData(fid,prefix,'object',self,'class','smb','fieldname','isturbulentflux','format','Boolean');
    395399                        WriteData(fid,prefix,'object',self,'class','smb','fieldname','isclimatology','format','Boolean');
     400                        WriteData(fid,prefix,'object',self,'class','smb','fieldname','isconstrainsurfaceT','format','Boolean');
    396401
    397402                        WriteData(fid,prefix,'object',self,'class','smb','fieldname','Ta','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1,'yts',md.constants.yts);
  • issm/trunk-jpl/src/m/classes/SMBgemb.py

    r24734 r24735  
    102102
    103103        #}}}
    104 
    105104
    106105    def __repr__(self):  # {{{
     
    118117        string = "%s\n%s" % (string, fielddisplay(self, 'isdensification', 'run densification module (default true)'))
    119118        string = "%s\n%s" % (string, fielddisplay(self, 'isturbulentflux', 'run turbulant heat fluxes module (default true)'))
     119        string = "%s\n%s" % (string, fielddisplay(self, 'isconstrainsurfaceT', 'constrain surface temperatures to air temperature, turn off EC and surface flux contribution to surface temperature change'))
    120120        string = "%s\n%s" % (string, fielddisplay(self, 'isclimatology', 'repeat all forcings when past last forcing time (default false)'))
    121121        string = "%s\n%s" % (string, fielddisplay(self, 'Ta', '2 m air temperature, in Kelvin'))
     
    226226        self.isturbulentflux = 1
    227227        self.isclimatology = 0
     228        self.isconstrainsurfaceT = 0;
    228229
    229230        self.aIdx = 1
     
    281282        md = checkfield(md, 'fieldname', 'smb.isturbulentflux', 'values', [0, 1])
    282283        md = checkfield(md, 'fieldname', 'smb.isclimatology', 'values', [0, 1])
     284        md = checkfield(md, 'fieldname', 'smb.isconstrainsurfaceT', 'values', [0, 1])
    283285
    284286        md = checkfield(md, 'fieldname', 'smb.Ta', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '>', 273 - 100, '<', 273 + 100)  #-100/100 celsius min/max value
     
    355357        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isturbulentflux', 'format', 'Boolean')
    356358        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isclimatology', 'format', 'Boolean')
     359        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'isconstrainsurfaceT', 'format', 'Boolean')
    357360
    358361        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Ta', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts)
  • issm/trunk-jpl/test/NightlyRun/test243.m

    r24210 r24735  
    4646md=solve(md,'Transient');
    4747
     48nlayers=size(md.results.TransientSolution(end).SmbT,2);
     49
    4850%Fields and tolerances to track changes
    49 field_names      ={'SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW'};
    50 field_tolerances ={8e-10,5e-12,3e-10,8e-10,1e-11,2e-7,4e-11,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 9e-10, 2e-11};
     51field_names      ={'Layers','SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW'};
     52field_tolerances ={1e-12,1e-12,1e-12,1e-11,1e-11,1e-11,1e-11,1e-12,1e-11,1e-12,1e-12,1e-12,1e-11,2e-11,2e-11,1e-11,9e-10,2e-11};
    5153
    5254field_values={...
    53         (md.results.TransientSolution(end).SmbDz(1,1:240)),...
    54         (md.results.TransientSolution(end).SmbT(1,1:240)),...
    55         (md.results.TransientSolution(end).SmbD(1,1:240)),...
    56         (md.results.TransientSolution(end).SmbRe(1,1:240)),...
    57         (md.results.TransientSolution(end).SmbGdn(1,1:240)),...
    58         (md.results.TransientSolution(end).SmbGsp(1,1:240)),...
    59         (md.results.TransientSolution(end).SmbA(1,1:240)),...
     55        (nlayers),...
     56        (md.results.TransientSolution(end).SmbDz(1,1:nlayers)),...
     57        (md.results.TransientSolution(end).SmbT(1,1:nlayers)),...
     58        (md.results.TransientSolution(end).SmbD(1,1:nlayers)),...
     59        (md.results.TransientSolution(end).SmbRe(1,1:nlayers)),...
     60        (md.results.TransientSolution(end).SmbGdn(1,1:nlayers)),...
     61        (md.results.TransientSolution(end).SmbGsp(1,1:nlayers)),...
     62        (md.results.TransientSolution(end).SmbA(1,1:nlayers)),...
    6063        (md.results.TransientSolution(end).SmbEC(1)),...
    6164        (md.results.TransientSolution(end).SmbMassBalance(1)),...
  • issm/trunk-jpl/test/NightlyRun/test243.py

    r24256 r24735  
    6060md = solve(md, 'Transient')
    6161
     62nlayers=np.size(md.results.TransientSolution[-1].SmbT,1)
     63
    6264#Fields and tolerances to track changes
    63 field_names = ['SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW']
    64 field_tolerances = [8e-10, 5e-12, 3e-10, 8e-10, 1e-11, 2e-7, 4e-11, 4e-12, 1e-12, 1e-12, 1e-12, 2e-10, 2e-11, 2e-11, 1e-11, 9e-10, 2e-11]
     65field_names = ['Layers','SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW']
     66field_tolerances = [1e-12,1e-12,1e-12,1e-11,1e-11,1e-11,1e-11,1e-12,1e-11,1e-12,1e-12,1e-12,1e-11,2e-11,2e-11,1e-11,9e-10,2e-11]
    6567#shape is different in python solution (fixed using reshape) which can cause test failure:
    66 field_values = [md.results.TransientSolution[-1].SmbDz[0, 0:240].reshape(1, -1),
    67                 md.results.TransientSolution[-1].SmbT[0, 0:240].reshape(1, -1),
    68                 md.results.TransientSolution[-1].SmbD[0, 0:240].reshape(1, -1),
    69                 md.results.TransientSolution[-1].SmbRe[0, 0:240].reshape(1, -1),
    70                 md.results.TransientSolution[-1].SmbGdn[0, 0:240].reshape(1, -1),
    71                 md.results.TransientSolution[-1].SmbGsp[0, 0:240].reshape(1, -1),
    72                 md.results.TransientSolution[-1].SmbA[0, 0:240].reshape(1, -1),
     68field_values = [nlayers,md.results.TransientSolution[-1].SmbDz[0, 0:nlayers].reshape(1, -1),
     69                md.results.TransientSolution[-1].SmbT[0, 0:nlayers].reshape(1, -1),
     70                md.results.TransientSolution[-1].SmbD[0, 0:nlayers].reshape(1, -1),
     71                md.results.TransientSolution[-1].SmbRe[0, 0:nlayers].reshape(1, -1),
     72                md.results.TransientSolution[-1].SmbGdn[0, 0:nlayers].reshape(1, -1),
     73                md.results.TransientSolution[-1].SmbGsp[0, 0:nlayers].reshape(1, -1),
     74                md.results.TransientSolution[-1].SmbA[0, 0:nlayers].reshape(1, -1),
    7375                md.results.TransientSolution[-1].SmbEC[0],
    7476                md.results.TransientSolution[-1].SmbMassBalance[0],
  • issm/trunk-jpl/test/NightlyRun/test252.m

    r24210 r24735  
    5454md=solve(md,'Transient');
    5555
     56nlayers=size(md.results.TransientSolution(end).SmbT,2);
     57
    5658%Fields and tolerances to track changes
    57 field_names      ={'SmbDz1','SmbT1' ,'SmbD1' ,'SmbRe1','SmbGdn1','SmbGsp1','SmbA1' ,'SmbEC1','SmbMassBalance1','SmbMAdd1','SmbDzAdd1','SmbFAC1',...
     59field_names      ={'Layers','SmbDz1','SmbT1' ,'SmbD1' ,'SmbRe1','SmbGdn1','SmbGsp1','SmbA1' ,'SmbEC1','SmbMassBalance1','SmbMAdd1','SmbDzAdd1','SmbFAC1',...
    5860        'SmbDz2','SmbT2' ,'SmbD2' ,'SmbRe2','SmbGdn2','SmbGsp2','SmbA2' ,'SmbEC2','SmbMassBalance2','SmbMAdd2','SmbDzAdd2','SmbFAC2',...
    5961        'SmbDz3','SmbT3' ,'SmbD3' ,'SmbRe3','SmbGdn3','SmbGsp3','SmbA3' ,'SmbEC3','SmbMassBalance3','SmbMAdd3','SmbDzAdd3','SmbFAC3',...
    6062        '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,1e-12,1e-12,1e-12,1e-12,1e-11,...
    62                    1e-11,1e-12,1e-11,8e-10,1e-11,4e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-11,...
    63                    1e-11,1e-12,1e-11,8e-10,1e-11,4e-11,1e-12,6e-12,6e-12,1e-12,1e-12,2e-11,...
    64                    2e-9,1e-11,3e-9,1e-9,1e-11,2e-7,7e-11,2e-12,3e-9,1e-12,1e-12,9e-11};
     63field_tolerances ={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
     64                   1e-12,1e-12,1e-11,1e-10,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,1e-11,...
     65                   1e-12,1e-12,2e-12,2e-11,1e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,1e-11,...
     66                   1e-11,1e-11,4e-11,1e-11,1e-12,3e-11,1e-12,1e-12,1e-10,1e-12,1e-12,2e-11};
    6567
    6668field_values={...
    67         (md.results.TransientSolution(1).SmbDz(1,1:230)),...
    68         (md.results.TransientSolution(1).SmbT(1,1:230)),...
    69         (md.results.TransientSolution(1).SmbD(1,1:230)),...
    70         (md.results.TransientSolution(1).SmbRe(1,1:230)),...
    71         (md.results.TransientSolution(1).SmbGdn(1,1:230)),...
    72         (md.results.TransientSolution(1).SmbGsp(1,1:230)),...
    73         (md.results.TransientSolution(1).SmbA(1,1:230)),...
     69        (nlayers)...
     70        (md.results.TransientSolution(1).SmbDz(1,1:nlayers)),...
     71        (md.results.TransientSolution(1).SmbT(1,1:nlayers)),...
     72        (md.results.TransientSolution(1).SmbD(1,1:nlayers)),...
     73        (md.results.TransientSolution(1).SmbRe(1,1:nlayers)),...
     74        (md.results.TransientSolution(1).SmbGdn(1,1:nlayers)),...
     75        (md.results.TransientSolution(1).SmbGsp(1,1:nlayers)),...
     76        (md.results.TransientSolution(1).SmbA(1,1:nlayers)),...
    7477        (md.results.TransientSolution(1).SmbEC(1)),...
    7578        (md.results.TransientSolution(1).SmbMassBalance(1)),...
     
    7780        (md.results.TransientSolution(1).SmbDzAdd(1)),...
    7881        (md.results.TransientSolution(1).SmbFAC(1)),...
    79    (md.results.TransientSolution(146).SmbDz(1,1:230)),...
    80         (md.results.TransientSolution(146).SmbT(1,1:230)),...
    81         (md.results.TransientSolution(146).SmbD(1,1:230)),...
    82         (md.results.TransientSolution(146).SmbRe(1,1:230)),...
    83         (md.results.TransientSolution(146).SmbGdn(1,1:230)),...
    84         (md.results.TransientSolution(146).SmbGsp(1,1:230)),...
    85         (md.results.TransientSolution(146).SmbA(1,1:230)),...
     82   (md.results.TransientSolution(146).SmbDz(1,1:nlayers)),...
     83        (md.results.TransientSolution(146).SmbT(1,1:nlayers)),...
     84        (md.results.TransientSolution(146).SmbD(1,1:nlayers)),...
     85        (md.results.TransientSolution(146).SmbRe(1,1:nlayers)),...
     86        (md.results.TransientSolution(146).SmbGdn(1,1:nlayers)),...
     87        (md.results.TransientSolution(146).SmbGsp(1,1:nlayers)),...
     88        (md.results.TransientSolution(146).SmbA(1,1:nlayers)),...
    8689        (md.results.TransientSolution(146).SmbEC(1)),...
    8790        (md.results.TransientSolution(146).SmbMassBalance(1)),...
     
    8992        (md.results.TransientSolution(146).SmbDzAdd(1)),...
    9093        (md.results.TransientSolution(146).SmbFAC(1)),...
    91         (md.results.TransientSolution(147).SmbDz(1,1:230)),...
    92         (md.results.TransientSolution(147).SmbT(1,1:230)),...
    93         (md.results.TransientSolution(147).SmbD(1,1:230)),...
    94         (md.results.TransientSolution(147).SmbRe(1,1:230)),...
    95         (md.results.TransientSolution(147).SmbGdn(1,1:230)),...
    96         (md.results.TransientSolution(147).SmbGsp(1,1:230)),...
    97         (md.results.TransientSolution(147).SmbA(1,1:230)),...
     94        (md.results.TransientSolution(147).SmbDz(1,1:nlayers)),...
     95        (md.results.TransientSolution(147).SmbT(1,1:nlayers)),...
     96        (md.results.TransientSolution(147).SmbD(1,1:nlayers)),...
     97        (md.results.TransientSolution(147).SmbRe(1,1:nlayers)),...
     98        (md.results.TransientSolution(147).SmbGdn(1,1:nlayers)),...
     99        (md.results.TransientSolution(147).SmbGsp(1,1:nlayers)),...
     100        (md.results.TransientSolution(147).SmbA(1,1:nlayers)),...
    98101        (md.results.TransientSolution(147).SmbEC(1)),...
    99102        (md.results.TransientSolution(147).SmbMassBalance(1)),...
     
    101104        (md.results.TransientSolution(147).SmbDzAdd(1)),...
    102105        (md.results.TransientSolution(147).SmbFAC(1)),...
    103         (md.results.TransientSolution(end).SmbDz(1,1:230)),...
    104         (md.results.TransientSolution(end).SmbT(1,1:230)),...
    105         (md.results.TransientSolution(end).SmbD(1,1:230)),...
    106         (md.results.TransientSolution(end).SmbRe(1,1:230)),...
    107         (md.results.TransientSolution(end).SmbGdn(1,1:230)),...
    108         (md.results.TransientSolution(end).SmbGsp(1,1:230)),...
    109         (md.results.TransientSolution(end).SmbA(1,1:230)),...
     106        (md.results.TransientSolution(end).SmbDz(1,1:nlayers)),...
     107        (md.results.TransientSolution(end).SmbT(1,1:nlayers)),...
     108        (md.results.TransientSolution(end).SmbD(1,1:nlayers)),...
     109        (md.results.TransientSolution(end).SmbRe(1,1:nlayers)),...
     110        (md.results.TransientSolution(end).SmbGdn(1,1:nlayers)),...
     111        (md.results.TransientSolution(end).SmbGsp(1,1:nlayers)),...
     112        (md.results.TransientSolution(end).SmbA(1,1:nlayers)),...
    110113        (md.results.TransientSolution(end).SmbEC(1)),...
    111114        (md.results.TransientSolution(end).SmbMassBalance(1)),...
  • issm/trunk-jpl/test/NightlyRun/test252.py

    r24256 r24735  
    6969md = solve(md, 'Transient')
    7070
     71nlayers=np.size(md.results.TransientSolution[-1].SmbT,1)
     72
    7173#Fields and tolerances to track changes
    7274
    73 field_names = ['SmbDz1', 'SmbT1', 'SmbD1', 'SmbRe1', 'SmbGdn1', 'SmbGsp1', 'SmbA1', 'SmbEC1', 'SmbMassBalance1', 'SmbMAdd1', 'SmbDzAdd1', 'SmbFAC1',
     75field_names = ['Layers','SmbDz1', 'SmbT1', 'SmbD1', 'SmbRe1', 'SmbGdn1', 'SmbGsp1', 'SmbA1', 'SmbEC1', 'SmbMassBalance1', 'SmbMAdd1', 'SmbDzAdd1', 'SmbFAC1',
    7476               'SmbDz2', 'SmbT2', 'SmbD2', 'SmbRe2', 'SmbGdn2', 'SmbGsp2', 'SmbA2', 'SmbEC2', 'SmbMassBalance2', 'SmbMAdd2', 'SmbDzAdd2', 'SmbFAC2',
    7577               'SmbDz3', 'SmbT3', 'SmbD3', 'SmbRe3', 'SmbGdn3', 'SmbGsp3', 'SmbA3', 'SmbEC3', 'SmbMassBalance3', 'SmbMAdd3', 'SmbDzAdd3', 'SmbFAC3',
    7678               'SmbDz4', 'SmbT4', 'SmbD4', 'SmbRe4', 'SmbGdn4', 'SmbGsp4', 'SmbA4', 'SmbEC4', 'SmbMassBalance4', 'SmbMAdd4', 'SmbDzAdd4', 'SmbFAC4']
    77 field_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,
    78                     1e-11, 1e-12, 1e-11, 8e-10, 1e-11, 4e-11, 1e-12, 4e-12, 1e-12, 1e-12, 1e-12, 2e-11,
    79                     1e-11, 1e-12, 1e-11, 8e-10, 1e-11, 4e-11, 1e-12, 6e-12, 6e-12, 1e-12, 1e-12, 2e-11,
    80                     2e-9, 1e-11, 3e-9, 1e-9, 1e-11, 2e-7, 7e-11, 2e-12, 3e-9, 1e-12, 1e-12, 9e-11]
     79field_tolerances = [1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,
     80                   1e-12,1e-12,1e-11,1e-10,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,1e-11,
     81                   1e-12,1e-12,2e-12,2e-11,1e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,1e-11,
     82                   1e-11,1e-11,4e-11,1e-11,1e-12,3e-11,1e-12,1e-12,1e-10,1e-12,1e-12,2e-11]
     83
    8184
    8285#shape is different in python solution (fixed using reshape) which can cause test failure:
    83 field_values = [md.results.TransientSolution[0].SmbDz[0, 0:230].reshape(1, -1),
    84                 md.results.TransientSolution[0].SmbT[0, 0:230].reshape(1, -1),
    85                 md.results.TransientSolution[0].SmbD[0, 0:230].reshape(1, -1),
    86                 md.results.TransientSolution[0].SmbRe[0, 0:230].reshape(1, -1),
    87                 md.results.TransientSolution[0].SmbGdn[0, 0:230].reshape(1, -1),
    88                 md.results.TransientSolution[0].SmbGsp[0, 0:230].reshape(1, -1),
    89                 md.results.TransientSolution[0].SmbA[0, 0:230].reshape(1, -1),
     86field_values = [nlayers,md.results.TransientSolution[0].SmbDz[0, 0:nlayers].reshape(1, -1),
     87                md.results.TransientSolution[0].SmbT[0, 0:nlayers].reshape(1, -1),
     88                md.results.TransientSolution[0].SmbD[0, 0:nlayers].reshape(1, -1),
     89                md.results.TransientSolution[0].SmbRe[0, 0:nlayers].reshape(1, -1),
     90                md.results.TransientSolution[0].SmbGdn[0, 0:nlayers].reshape(1, -1),
     91                md.results.TransientSolution[0].SmbGsp[0, 0:nlayers].reshape(1, -1),
     92                md.results.TransientSolution[0].SmbA[0, 0:nlayers].reshape(1, -1),
    9093                md.results.TransientSolution[0].SmbEC[0],
    9194                md.results.TransientSolution[0].SmbMassBalance[0],
     
    9396                md.results.TransientSolution[0].SmbDzAdd[0],
    9497                md.results.TransientSolution[0].SmbFAC[0],
    95                 md.results.TransientSolution[145].SmbDz[0, 0:230].reshape(1, -1),
    96                 md.results.TransientSolution[145].SmbT[0, 0:230].reshape(1, -1),
    97                 md.results.TransientSolution[145].SmbD[0, 0:230].reshape(1, -1),
    98                 md.results.TransientSolution[145].SmbRe[0, 0:230].reshape(1, -1),
    99                 md.results.TransientSolution[145].SmbGdn[0, 0:230].reshape(1, -1),
    100                 md.results.TransientSolution[145].SmbGsp[0, 0:230].reshape(1, -1),
    101                 md.results.TransientSolution[145].SmbA[0, 0:230].reshape(1, -1),
     98                md.results.TransientSolution[145].SmbDz[0, 0:nlayers].reshape(1, -1),
     99                md.results.TransientSolution[145].SmbT[0, 0:nlayers].reshape(1, -1),
     100                md.results.TransientSolution[145].SmbD[0, 0:nlayers].reshape(1, -1),
     101                md.results.TransientSolution[145].SmbRe[0, 0:nlayers].reshape(1, -1),
     102                md.results.TransientSolution[145].SmbGdn[0, 0:nlayers].reshape(1, -1),
     103                md.results.TransientSolution[145].SmbGsp[0, 0:nlayers].reshape(1, -1),
     104                md.results.TransientSolution[145].SmbA[0, 0:nlayers].reshape(1, -1),
    102105                md.results.TransientSolution[145].SmbEC[0],
    103106                md.results.TransientSolution[145].SmbMassBalance[0],
     
    105108                md.results.TransientSolution[145].SmbDzAdd[0],
    106109                md.results.TransientSolution[145].SmbFAC[0],
    107                 md.results.TransientSolution[146].SmbDz[0, 0:230].reshape(1, -1),
    108                 md.results.TransientSolution[146].SmbT[0, 0:230].reshape(1, -1),
    109                 md.results.TransientSolution[146].SmbD[0, 0:230].reshape(1, -1),
    110                 md.results.TransientSolution[146].SmbRe[0, 0:230].reshape(1, -1),
    111                 md.results.TransientSolution[146].SmbGdn[0, 0:230].reshape(1, -1),
    112                 md.results.TransientSolution[146].SmbGsp[0, 0:230].reshape(1, -1),
    113                 md.results.TransientSolution[146].SmbA[0, 0:230].reshape(1, -1),
     110                md.results.TransientSolution[146].SmbDz[0, 0:nlayers].reshape(1, -1),
     111                md.results.TransientSolution[146].SmbT[0, 0:nlayers].reshape(1, -1),
     112                md.results.TransientSolution[146].SmbD[0, 0:nlayers].reshape(1, -1),
     113                md.results.TransientSolution[146].SmbRe[0, 0:nlayers].reshape(1, -1),
     114                md.results.TransientSolution[146].SmbGdn[0, 0:nlayers].reshape(1, -1),
     115                md.results.TransientSolution[146].SmbGsp[0, 0:nlayers].reshape(1, -1),
     116                md.results.TransientSolution[146].SmbA[0, 0:nlayers].reshape(1, -1),
    114117                md.results.TransientSolution[146].SmbEC[0],
    115118                md.results.TransientSolution[146].SmbMassBalance[0],
     
    117120                md.results.TransientSolution[146].SmbDzAdd[0],
    118121                md.results.TransientSolution[146].SmbFAC[0],
    119                 md.results.TransientSolution[-1].SmbDz[0, 0:230].reshape(1, -1),
    120                 md.results.TransientSolution[-1].SmbT[0, 0:230].reshape(1, -1),
    121                 md.results.TransientSolution[-1].SmbD[0, 0:230].reshape(1, -1),
    122                 md.results.TransientSolution[-1].SmbRe[0, 0:230].reshape(1, -1),
    123                 md.results.TransientSolution[-1].SmbGdn[0, 0:230].reshape(1, -1),
    124                 md.results.TransientSolution[-1].SmbGsp[0, 0:230].reshape(1, -1),
    125                 md.results.TransientSolution[-1].SmbA[0, 0:230].reshape(1, -1),
     122                md.results.TransientSolution[-1].SmbDz[0, 0:nlayers].reshape(1, -1),
     123                md.results.TransientSolution[-1].SmbT[0, 0:nlayers].reshape(1, -1),
     124                md.results.TransientSolution[-1].SmbD[0, 0:nlayers].reshape(1, -1),
     125                md.results.TransientSolution[-1].SmbRe[0, 0:nlayers].reshape(1, -1),
     126                md.results.TransientSolution[-1].SmbGdn[0, 0:nlayers].reshape(1, -1),
     127                md.results.TransientSolution[-1].SmbGsp[0, 0:nlayers].reshape(1, -1),
     128                md.results.TransientSolution[-1].SmbA[0, 0:nlayers].reshape(1, -1),
    126129                md.results.TransientSolution[-1].SmbEC[0],
    127130                md.results.TransientSolution[-1].SmbMassBalance[0],
Note: See TracChangeset for help on using the changeset viewer.