Changeset 25807


Ignore:
Timestamp:
12/02/20 15:09:51 (4 years ago)
Author:
schlegel
Message:

CHG: add extra accumulated SMB components to GEMB

Location:
issm/trunk-jpl
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r25777 r25807  
    36443644        IssmDouble sumMass=0.0;
    36453645        IssmDouble dMass=0.0;
     3646        IssmDouble accsumR=0.0;
     3647        IssmDouble accsumM=0.0;
     3648        IssmDouble accsumSMB=0.0;
     3649        IssmDouble accsumEC=0.0;
     3650        IssmDouble accsumP=0.0;
    36463651        bool isgraingrowth,isalbedo,isshortwave,isthermal,isaccumulation,ismelt,isdensification,isturbulentflux;
    36473652        bool isclimatology=false;
     
    38033808                }
    38043809
     3810                this->SetElementInput(SmbAccumulatedECEnum,0.0);
     3811                this->SetElementInput(SmbAccumulatedMassBalanceEnum,0.0);
     3812                this->SetElementInput(SmbAccumulatedMeltEnum,0.0);
     3813                this->SetElementInput(SmbAccumulatedRunoffEnum,0.0);
     3814                this->SetElementInput(SmbAccumulatedPrecipitationEnum,0.0);
     3815
    38053816                /*Flag the initialization:*/
    38063817                this->SetBoolInput(this->inputs,SmbIsInitializedEnum,true);
     
    39974008                if (T[m-1]!=T_bottom) _printf_("T(end)~=T_bottom" << "\n");
    39984009        }
     4010
     4011        /*Save accumulated inputs {{{*/
     4012   Input *accsumEC_input         = this->GetInput(SmbAccumulatedECEnum);  _assert_(accsumEC_input);
     4013   Input *accsumM_input          = this->GetInput(SmbAccumulatedMeltEnum);  _assert_(accsumM_input);
     4014   Input *accsumR_input          = this->GetInput(SmbAccumulatedRunoffEnum);  _assert_(accsumR_input);
     4015   Input *accsumP_input          = this->GetInput(SmbAccumulatedPrecipitationEnum);  _assert_(accsumP_input);
     4016   Input *accsumSMB_input        = this->GetInput(SmbAccumulatedMassBalanceEnum);  _assert_(accsumP_input);
     4017
     4018   accsumEC_input->GetInputAverage(&accsumEC);
     4019   accsumM_input->GetInputAverage(&accsumM);
     4020   accsumR_input->GetInputAverage(&accsumR);
     4021   accsumP_input->GetInputAverage(&accsumP);
     4022   accsumSMB_input->GetInputAverage(&accsumSMB);
     4023
     4024        this->SetElementInput(SmbAccumulatedECEnum,accsumEC+EC/rho_ice);
     4025        this->SetElementInput(SmbAccumulatedMassBalanceEnum,accsumSMB+(P + EC -R)/rho_ice);
     4026        this->SetElementInput(SmbAccumulatedMeltEnum,accsumM+M/rho_ice);
     4027        this->SetElementInput(SmbAccumulatedRunoffEnum,accsumR+R/rho_ice);
     4028        this->SetElementInput(SmbAccumulatedPrecipitationEnum,accsumP+P/rho_ice);
     4029   /*}}}*/
    39994030
    40004031        /*Save generated inputs: */
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r25775 r25807  
    743743syn keyword cConstant SigmaNNEnum
    744744syn keyword cConstant SigmaVMEnum
     745syn keyword cConstant SmbAccumulatedECEnum
     746syn keyword cConstant SmbAccumulatedMassBalanceEnum
     747syn keyword cConstant SmbAccumulatedMeltEnum
     748syn keyword cConstant SmbAccumulatedPrecipitationEnum
     749syn keyword cConstant SmbAccumulatedRunoffEnum
    745750syn keyword cConstant SmbAEnum
    746751syn keyword cConstant SmbAValueEnum
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r25775 r25807  
    739739        SigmaNNEnum,
    740740        SigmaVMEnum,
     741        SmbAccumulatedECEnum,
     742        SmbAccumulatedMassBalanceEnum,
     743        SmbAccumulatedMeltEnum,
     744        SmbAccumulatedPrecipitationEnum,
     745        SmbAccumulatedRunoffEnum,
    741746        SmbAEnum,
    742747        SmbAValueEnum,
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r25775 r25807  
    745745                case SigmaNNEnum : return "SigmaNN";
    746746                case SigmaVMEnum : return "SigmaVM";
     747                case SmbAccumulatedECEnum : return "SmbAccumulatedEC";
     748                case SmbAccumulatedMassBalanceEnum : return "SmbAccumulatedMassBalance";
     749                case SmbAccumulatedMeltEnum : return "SmbAccumulatedMelt";
     750                case SmbAccumulatedPrecipitationEnum : return "SmbAccumulatedPrecipitation";
     751                case SmbAccumulatedRunoffEnum : return "SmbAccumulatedRunoff";
    747752                case SmbAEnum : return "SmbA";
    748753                case SmbAValueEnum : return "SmbAValue";
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r25775 r25807  
    763763              else if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum;
    764764              else if (strcmp(name,"SigmaVM")==0) return SigmaVMEnum;
     765              else if (strcmp(name,"SmbAccumulatedEC")==0) return SmbAccumulatedECEnum;
     766              else if (strcmp(name,"SmbAccumulatedMassBalance")==0) return SmbAccumulatedMassBalanceEnum;
     767              else if (strcmp(name,"SmbAccumulatedMelt")==0) return SmbAccumulatedMeltEnum;
     768              else if (strcmp(name,"SmbAccumulatedPrecipitation")==0) return SmbAccumulatedPrecipitationEnum;
     769              else if (strcmp(name,"SmbAccumulatedRunoff")==0) return SmbAccumulatedRunoffEnum;
    765770              else if (strcmp(name,"SmbA")==0) return SmbAEnum;
    766771              else if (strcmp(name,"SmbAValue")==0) return SmbAValueEnum;
     
    870875              else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
    871876              else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
    872               else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
    873881              else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
    874882              else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
    875883              else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum;
    876884              else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"Area")==0) return AreaEnum;
     885              else if (strcmp(name,"Area")==0) return AreaEnum;
    881886              else if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum;
    882887              else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
     
    993998              else if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum;
    994999              else if (strcmp(name,"Outputdefinition71")==0) return Outputdefinition71Enum;
    995               else if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
     1000         else stage=9;
     1001   }
     1002   if(stage==9){
     1003              if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
    9961004              else if (strcmp(name,"Outputdefinition73")==0) return Outputdefinition73Enum;
    9971005              else if (strcmp(name,"Outputdefinition74")==0) return Outputdefinition74Enum;
    9981006              else if (strcmp(name,"Outputdefinition75")==0) return Outputdefinition75Enum;
    9991007              else if (strcmp(name,"Outputdefinition76")==0) return Outputdefinition76Enum;
    1000          else stage=9;
    1001    }
    1002    if(stage==9){
    1003               if (strcmp(name,"Outputdefinition77")==0) return Outputdefinition77Enum;
     1008              else if (strcmp(name,"Outputdefinition77")==0) return Outputdefinition77Enum;
    10041009              else if (strcmp(name,"Outputdefinition78")==0) return Outputdefinition78Enum;
    10051010              else if (strcmp(name,"Outputdefinition79")==0) return Outputdefinition79Enum;
     
    11161121              else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
    11171122              else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
    1118               else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
     1123         else stage=10;
     1124   }
     1125   if(stage==10){
     1126              if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
    11191127              else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum;
    11201128              else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
    11211129              else if (strcmp(name,"FSpressure")==0) return FSpressureEnum;
    11221130              else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;
    1123          else stage=10;
    1124    }
    1125    if(stage==10){
    1126               if (strcmp(name,"FemModel")==0) return FemModelEnum;
     1131              else if (strcmp(name,"FemModel")==0) return FemModelEnum;
    11271132              else if (strcmp(name,"FileParam")==0) return FileParamEnum;
    11281133              else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum;
     
    12391244              else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
    12401245              else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
    1241               else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
     1246         else stage=11;
     1247   }
     1248   if(stage==11){
     1249              if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
    12421250              else if (strcmp(name,"Melange")==0) return MelangeEnum;
    12431251              else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
    12441252              else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
    12451253              else if (strcmp(name,"MeshX")==0) return MeshXEnum;
    1246          else stage=11;
    1247    }
    1248    if(stage==11){
    1249               if (strcmp(name,"MeshY")==0) return MeshYEnum;
     1254              else if (strcmp(name,"MeshY")==0) return MeshYEnum;
    12501255              else if (strcmp(name,"MinVel")==0) return MinVelEnum;
    12511256              else if (strcmp(name,"MinVx")==0) return MinVxEnum;
     
    13621367              else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
    13631368              else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
    1364               else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
     1369         else stage=12;
     1370   }
     1371   if(stage==12){
     1372              if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
    13651373              else if (strcmp(name,"Tetra")==0) return TetraEnum;
    13661374              else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
    13671375              else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
    13681376              else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
    1369          else stage=12;
    1370    }
    1371    if(stage==12){
    1372               if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
     1377              else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
    13731378              else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
    13741379              else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum;
  • TabularUnified issm/trunk-jpl/test/NightlyRun/test243.m

    r24760 r25807  
    3030md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC',...
    3131        'SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF',...
    32         'SmbMeanULW','SmbNetLW','SmbNetSW'};
     32        'SmbMeanULW','SmbNetLW','SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff',...
     33        'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation'};
    3334
    3435%only run smb core:
     
    5253
    5354%Fields and tolerances to track changes
    54 field_names      ={'Layers','SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW'};
    55 field_tolerances ={1e-12,2e-12,1e-12,1e-11,1e-11,2e-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};
     55field_names      ={'Layers','SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff','SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation'};
     56field_tolerances ={1e-12,2e-12,1e-12,1e-11,1e-11,2e-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,1e-11,9e-10,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,};
    5657
    5758field_values={...
     
    7374        (md.results.TransientSolution(end).SmbMeanULW(1)),...
    7475        (md.results.TransientSolution(end).SmbNetLW(1)),...
    75         (md.results.TransientSolution(end).SmbNetSW(1))
     76        (md.results.TransientSolution(end).SmbNetSW(1)),...
     77        (md.results.TransientSolution(end).SmbAccumulatedMassBalance(1)),...
     78        (md.results.TransientSolution(end).SmbAccumulatedRunoff(1)),...
     79        (md.results.TransientSolution(end).SmbAccumulatedMelt(1)),...
     80        (md.results.TransientSolution(end).SmbAccumulatedEC(1)),...
     81        (md.results.TransientSolution(end).SmbAccumulatedPrecipitation(1))
    7682};
  • TabularUnified issm/trunk-jpl/test/NightlyRun/test243.py

    r25709 r25807  
    4747    'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbEC',
    4848    'SmbA', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF',
    49     'SmbMeanULW', 'SmbNetLW', 'SmbNetSW'
     49    'SmbMeanULW', 'SmbNetLW', 'SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff',
     50    'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation'
    5051    ]
    5152
     
    6970
    7071#Fields and tolerances to track changes
    71 field_names = ['Layers', 'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW']
    72 field_tolerances = [1e-12, 2e-12, 1e-12, 1e-11, 1e-11, 2e-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]
     72field_names = ['Layers', 'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW', 'SmbAccumulatedMassBalance','SmbAccumulatedRunoff','SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation']
     73field_tolerances = [1e-12, 2e-12, 1e-12, 1e-11, 1e-11, 2e-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, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11]
    7374# Shape is different in python solution (fixed using reshape) which can cause test failure
    7475field_values = [
     
    9091    md.results.TransientSolution[-1].SmbMeanULW[0],
    9192    md.results.TransientSolution[-1].SmbNetLW[0],
    92     md.results.TransientSolution[-1].SmbNetSW[0]
     93    md.results.TransientSolution[-1].SmbNetSW[0],
     94    md.results.TransientSolution[-1].SmbAccumulatedMassBalance[0],
     95    md.results.TransientSolution[-1].SmbAccumulatedRunoff[0],
     96    md.results.TransientSolution[-1].SmbAccumulatedMelt[0],
     97    md.results.TransientSolution[-1].SmbAccumulatedEC[0],
     98    md.results.TransientSolution[-1].SmbAccumulatedPrecipitation[0]
    9399    ]
Note: See TracChangeset for help on using the changeset viewer.