Changeset 23843


Ignore:
Timestamp:
04/12/19 09:33:28 (6 years ago)
Author:
Mathieu Morlighem
Message:

NEW: adding upperwater melting rate

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

Legend:

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

    r23819 r23843  
    21482148
    21492149        int numvertices      = this->GetNumberOfVertices();
    2150         IssmDouble  deepwaterel,upperwaterel,deepwatermelt;
     2150        IssmDouble  deepwaterel,upperwaterel,deepwatermelt,upperwatermelt;
    21512151        IssmDouble* base     = xNew<IssmDouble>(numvertices);
    21522152        IssmDouble* values   = xNew<IssmDouble>(numvertices);
     
    21552155        parameters->FindParam(&time,TimeEnum);
    21562156        parameters->FindParam(&deepwaterel,BasalforcingsDeepwaterElevationEnum,time);
     2157        parameters->FindParam(&deepwatermelt,BasalforcingsDeepwaterMeltingRateEnum,time);
    21572158        parameters->FindParam(&upperwaterel,BasalforcingsUpperwaterElevationEnum,time);
    2158         parameters->FindParam(&deepwatermelt,BasalforcingsDeepwaterMeltingRateEnum,time);
     2159        parameters->FindParam(&upperwatermelt,BasalforcingsUpperwaterMeltingRateEnum,time);
     2160        _assert_(upperwaterel>deepwaterel);
    21592161
    21602162        this->GetInputListOnVertices(base,BaseEnum);
    21612163        for(int i=0;i<numvertices;i++){
    2162                 if(base[i]>upperwaterel)      values[i]=0;
    2163                 else if (base[i]<deepwaterel) values[i]=deepwatermelt;
    2164                 else values[i]=deepwatermelt*(base[i]-upperwaterel)/(deepwaterel-upperwaterel);
     2164                if(base[i]>=upperwaterel){
     2165                        values[i]=upperwaterel;
     2166                }
     2167                else if (base[i]<deepwaterel){
     2168                        values[i]=deepwatermelt;
     2169                }
     2170                else{
     2171                        values[i]=deepwatermelt*(base[i]-upperwaterel)/(deepwaterel-upperwaterel);
     2172                }
    21652173        }
    21662174
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r23799 r23843  
    164164                                _assert_(N==2);
    165165                                parameters->AddObject(new TransientParam(BasalforcingsDeepwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M));
     166                        }
     167                        xDelete<IssmDouble>(transparam);
     168                        iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.upperwater_melting_rate");
     169                        if(N==1){
     170                                _assert_(M==1);
     171                                parameters->AddObject(new DoubleParam(BasalforcingsUpperwaterMeltingRateEnum,transparam[0]));
     172                        }
     173                        else{
     174                                _assert_(N==2);
     175                                parameters->AddObject(new TransientParam(BasalforcingsUpperwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M));
    166176                        }
    167177                        xDelete<IssmDouble>(transparam);
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r23839 r23843  
    6161        BasalforcingsDeepwaterElevationEnum,
    6262        BasalforcingsDeepwaterMeltingRateEnum,
     63        BasalforcingsUpperwaterMeltingRateEnum,
    6364        BasalforcingsDtbgEnum,
    6465        BasalforcingsEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r23839 r23843  
    6969                case BasalforcingsDeepwaterElevationEnum : return "BasalforcingsDeepwaterElevation";
    7070                case BasalforcingsDeepwaterMeltingRateEnum : return "BasalforcingsDeepwaterMeltingRate";
     71                case BasalforcingsUpperwaterMeltingRateEnum : return "BasalforcingsUpperwaterMeltingRate";
    7172                case BasalforcingsDtbgEnum : return "BasalforcingsDtbg";
    7273                case BasalforcingsEnum : return "Basalforcings";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r23839 r23843  
    6969              else if (strcmp(name,"BasalforcingsDeepwaterElevation")==0) return BasalforcingsDeepwaterElevationEnum;
    7070              else if (strcmp(name,"BasalforcingsDeepwaterMeltingRate")==0) return BasalforcingsDeepwaterMeltingRateEnum;
     71              else if (strcmp(name,"BasalforcingsUpperwaterMeltingRate")==0) return BasalforcingsUpperwaterMeltingRateEnum;
    7172              else if (strcmp(name,"BasalforcingsDtbg")==0) return BasalforcingsDtbgEnum;
    7273              else if (strcmp(name,"Basalforcings")==0) return BasalforcingsEnum;
     
    136137              else if (strcmp(name,"FlowequationFeFS")==0) return FlowequationFeFSEnum;
    137138              else if (strcmp(name,"FlowequationIsFS")==0) return FlowequationIsFSEnum;
    138               else if (strcmp(name,"FlowequationIsHO")==0) return FlowequationIsHOEnum;
    139139         else stage=2;
    140140   }
    141141   if(stage==2){
    142               if (strcmp(name,"FlowequationIsL1L2")==0) return FlowequationIsL1L2Enum;
     142              if (strcmp(name,"FlowequationIsHO")==0) return FlowequationIsHOEnum;
     143              else if (strcmp(name,"FlowequationIsL1L2")==0) return FlowequationIsL1L2Enum;
    143144              else if (strcmp(name,"FlowequationIsSIA")==0) return FlowequationIsSIAEnum;
    144145              else if (strcmp(name,"FlowequationIsSSA")==0) return FlowequationIsSSAEnum;
     
    259260              else if (strcmp(name,"MaterialsEffectiveconductivityAveraging")==0) return MaterialsEffectiveconductivityAveragingEnum;
    260261              else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
    261               else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
     265              if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
     266              else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
    266267              else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
    267268              else if (strcmp(name,"MeshElementtype")==0) return MeshElementtypeEnum;
     
    382383              else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
    383384              else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
    384               else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
     388              if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
     389              else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
    389390              else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
    390391              else if (strcmp(name,"Step")==0) return StepEnum;
     
    505506              else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
    506507              else if (strcmp(name,"EplHeadHydrostep")==0) return EplHeadHydrostepEnum;
    507               else if (strcmp(name,"EplHeadOld")==0) return EplHeadOldEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum;
     511              if (strcmp(name,"EplHeadOld")==0) return EplHeadOldEnum;
     512              else if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum;
    512513              else if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum;
    513514              else if (strcmp(name,"EsaDeltathickness")==0) return EsaDeltathicknessEnum;
     
    628629              else if (strcmp(name,"SmbBMin")==0) return SmbBMinEnum;
    629630              else if (strcmp(name,"SmbBNeg")==0) return SmbBNegEnum;
    630               else if (strcmp(name,"SmbBPos")==0) return SmbBPosEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"SmbC")==0) return SmbCEnum;
     634              if (strcmp(name,"SmbBPos")==0) return SmbBPosEnum;
     635              else if (strcmp(name,"SmbC")==0) return SmbCEnum;
    635636              else if (strcmp(name,"SmbDailysnowfall")==0) return SmbDailysnowfallEnum;
    636637              else if (strcmp(name,"SmbDailyrainfall")==0) return SmbDailyrainfallEnum;
     
    751752              else if (strcmp(name,"VzHO")==0) return VzHOEnum;
    752753              else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
    753               else if (strcmp(name,"VzSSA")==0) return VzSSAEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
     757              if (strcmp(name,"VzSSA")==0) return VzSSAEnum;
     758              else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
    758759              else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
    759760              else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
     
    874875              else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
    875876              else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;
    876               else if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
     880              if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
     881              else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
    881882              else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
    882883              else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
     
    997998              else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
    998999              else if (strcmp(name,"NoFrictionOnPartiallyFloating")==0) return NoFrictionOnPartiallyFloatingEnum;
    999               else if (strcmp(name,"NoMeltOnPartiallyFloating")==0) return NoMeltOnPartiallyFloatingEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
     1003              if (strcmp(name,"NoMeltOnPartiallyFloating")==0) return NoMeltOnPartiallyFloatingEnum;
     1004              else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
    10041005              else if (strcmp(name,"None")==0) return NoneEnum;
    10051006              else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
     
    11201121              else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
    11211122              else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
    1122               else if (strcmp(name,"P2")==0) return P2Enum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
     1126              if (strcmp(name,"P2")==0) return P2Enum;
     1127              else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
    11271128              else if (strcmp(name,"P2xP4")==0) return P2xP4Enum;
    11281129              else if (strcmp(name,"Paterson")==0) return PatersonEnum;
     
    12431244              else if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum;
    12441245              else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
    1245               else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
     1249              if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
     1250              else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
    12501251              else if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum;
    12511252              else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum;
  • issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh

    r23059 r23843  
    1313
    1414#Deal with Analyses
    15 if true ; then
     15if false ; then
    1616#Build EnumToAnalysis.cpp {{{
    1717#Header
Note: See TracChangeset for help on using the changeset viewer.