Changeset 24469


Ignore:
Timestamp:
12/12/19 15:59:02 (5 years ago)
Author:
Eric.Larour
Message:

CHG: new dsl class to take care of the dynamic sea level in our sealevelrise_core. We made a new field
to the model class to fit the dsl fields. The fields come from the slr steric rates class essentially.
We also added GetStericRate and GetDynamicRate to the sea level core, which splits what used to be only
the steric rate field.

Location:
issm/trunk-jpl/src
Files:
3 added
19 edited

Legend:

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

    r24335 r24469  
    2121
    2222        int geodetic=0;
     23        int dslmodel=0;
    2324
    2425        /*Update elements: */
     
    5253        iomodel->FetchDataToInput(inputs2,elements,"md.slr.Ngia",SealevelNGiaRateEnum);
    5354        iomodel->FetchDataToInput(inputs2,elements,"md.slr.Ugia",SealevelUGiaRateEnum);
    54         iomodel->FetchDataToInput(inputs2,elements,"md.slr.steric_rate",SealevelriseStericRateEnum);
    5555        iomodel->FetchDataToInput(inputs2,elements,"md.slr.hydro_rate",SealevelriseHydroRateEnum);
    56 
     56               
     57        /*dynamic sea level: */
     58        iomodel->FetchData(&dslmodel,"md.dsl.model");
     59        if (dslmodel==1){
     60                iomodel->FetchDataToInput(inputs2,elements,"md.dsl.sea_surface_height_change_above_geoid", DslSeaSurfaceHeightChangeAboveGeoidEnum);
     61                iomodel->FetchDataToInput(inputs2,elements,"md.dsl.sea_water_pressure_change_at_sea_floor", DslSeaWaterPressureChangeAtSeaFloor);
     62        }
     63        else _error_("Dsl model " << dslmodel << " not implemented yet!");
     64                       
    5765        /*Initialize cumdeltalthickness and sealevel rise rate input*/
    5866        InputUpdateFromConstantx(inputs2,elements,0.,SealevelriseCumDeltathicknessEnum);
     
    7078        IssmDouble* love_k=NULL;
    7179        IssmDouble* love_l=NULL;
     80        int         dslmodel=0;
    7281
    7382        bool elastic=false;
     
    109118        parameters->AddObject(iomodel->CopyConstantObject("md.slr.geodetic",SealevelriseGeodeticEnum));
    110119
     120        /*dsl model: */
     121        iomodel->FetchData(&dslmodel,"md.dsl.model");
     122        if (dslmodel==1){
     123                IssmDouble* temp=NULL;
     124                int M,N;
     125                bool interp;
     126                iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
     127                iomodel->FetchData(&temp,&N,&M,"md.dsl.global_average_thermosteric_sea_level_change"); _assert_(N==2);
     128                parameters->AddObject(new TransientParam(DslGlobalAverageThermostericSeaLevelChangeEnum,&temp[0],&temp[M],interp,M));
     129                iomodel->DeleteData(temp,"md.dsl.global_average_thermosteric_sea_level_change");
     130        }
     131        else _error_("dslmodel " << dslmodel << " not supported yet");
     132
    111133        iomodel->FetchData(&elastic,"md.slr.elastic");
    112134        if(elastic){
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r24443 r24469  
    372372                #endif
    373373                #ifdef _HAVE_SEALEVELRISE_
    374                 virtual void UpdateStericRate(int steric_rate_model)=0;
     374                virtual void UpdateStericRate(int dslmodel)=0;
     375                virtual void UpdateDynamicRate(int dslmodel)=0;
    375376                virtual IssmDouble    GetArea3D(void)=0;
    376377                virtual IssmDouble    GetAreaSpherical(void)=0;
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r24443 r24469  
    210210                #endif
    211211                #ifdef _HAVE_SEALEVELRISE_
    212                 void UpdateStericRate(int steric_rate_model){_error_("not implemented yet!");};
     212                void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");};
     213                void UpdateStericRate(int dslmodel){_error_("not implemented yet!");};
    213214                IssmDouble    OceanArea(void){_error_("not implemented yet!");};
    214215                IssmDouble    OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");};
  • issm/trunk-jpl/src/c/classes/Elements/Seg.h

    r24443 r24469  
    171171#endif
    172172#ifdef _HAVE_SEALEVELRISE_
    173                 void UpdateStericRate(int steric_rate_model){_error_("not implemented yet!");};
     173                void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");};
     174                void UpdateStericRate(int dslmodel){_error_("not implemented yet!");};
    174175                void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){_error_("not implemented yet!");};
    175176                void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
  • issm/trunk-jpl/src/c/classes/Elements/Tetra.h

    r24443 r24469  
    177177#endif
    178178#ifdef _HAVE_SEALEVELRISE_
    179                 void UpdateStericRate(int steric_rate_model){_error_("not implemented yet!");};
     179                void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");};
     180                void UpdateStericRate(int dslmodel){_error_("not implemented yet!");};
    180181                void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){_error_("not implemented yet!");};
    181182                void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r24447 r24469  
    54365436#endif
    54375437#ifdef _HAVE_SEALEVELRISE_
    5438 void    Tria::UpdateStericRate(int steric_rate_model){ /*{{{*/
    5439 
    5440         if (steric_rate_model==0){
    5441                 //do nothing
    5442         }
    5443         else if (steric_rate_model==1){
    5444                 IssmDouble eof1[3],eof2[3],eof3[3],eof4[3];
     5438void    Tria::UpdateDynamicRate(int dslmodel){ /*{{{*/
     5439
     5440        if (dslmodel==1){
     5441                //do nothing for now
     5442                IssmDouble dslrate[3]={0,0,0};
     5443                this->AddInput2(DslDynamicRateEnum,&dslrate[0],P1Enum);
     5444        }
     5445        else if (dslmodel==2){
     5446                /*IssmDouble eof1[3],eof2[3],eof3[3],eof4[3];
    54455447                IssmDouble steric_rate[3];
    54465448                IssmDouble pc1,pc2,pc3,pc4;
     
    54585460                for (int i=0;i<4;i++)steric_rate[i]=pc1*eof1[i]+pc2*eof2[i]+pc3*eof3[i]+pc4*eof4[i];
    54595461
    5460                 /*upate input: */
     5462                //upate input:
    54615463                this->AddInput2(SealevelriseStericRateEnum,&steric_rate[0],P1Enum);
     5464                */
    54625465
    54635466        }
    54645467        else{
    5465                 _error_("not supported??");
     5468                _error_("dslmodel " << dslmodel  << " not supported yet!");
     5469        }
     5470}
     5471/*}}}*/
     5472void    Tria::UpdateStericRate(int dslmodel){ /*{{{*/
     5473
     5474        IssmDouble dslrate = 0;
     5475        IssmDouble time;
     5476        if (dslmodel==1){
     5477                //grab value of GlobalAverageThermostericSeaLevelChange directly:
     5478                this->parameters->FindParam(&time,TimeEnum);
     5479                this->parameters->FindParam(&dslrate,DslGlobalAverageThermostericSeaLevelChangeEnum,time);
     5480                this->AddInput2(DslStericRateEnum,&dslrate,P0Enum);
     5481        }
     5482        else if (dslmodel==2){
     5483                /*IssmDouble eof1[3],eof2[3],eof3[3],eof4[3];
     5484                IssmDouble steric_rate[3];
     5485                IssmDouble pc1,pc2,pc3,pc4;
     5486
     5487                Element::GetInputListOnVertices(&eof1[0],SealevelriseModeleoftrendEof1Enum);
     5488                Element::GetInputListOnVertices(&eof2[0],SealevelriseModeleoftrendEof2Enum);
     5489                Element::GetInputListOnVertices(&eof3[0],SealevelriseModeleoftrendEof3Enum);
     5490                Element::GetInputListOnVertices(&eof4[0],SealevelriseModeleoftrendEof4Enum);
     5491
     5492                Element::GetInputValue(&pc1,SealevelriseModeleoftrendPc1Enum);
     5493                Element::GetInputValue(&pc2,SealevelriseModeleoftrendPc2Enum);
     5494                Element::GetInputValue(&pc3,SealevelriseModeleoftrendPc3Enum);
     5495                Element::GetInputValue(&pc4,SealevelriseModeleoftrendPc4Enum);
     5496
     5497                for (int i=0;i<4;i++)steric_rate[i]=pc1*eof1[i]+pc2*eof2[i]+pc3*eof3[i]+pc4*eof4[i];
     5498
     5499                //upate input:
     5500                this->AddInput2(SealevelriseStericRateEnum,&steric_rate[0],P1Enum);
     5501                */
     5502        }
     5503        else{
     5504                _error_("dslmodel " << dslmodel  << " not supported yet!");
    54665505        }
    54675506}
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r24443 r24469  
    163163                #endif
    164164                #ifdef _HAVE_SEALEVELRISE_
    165                 void UpdateStericRate(int steric_rate_model);
     165                void UpdateDynamicRate(int dslmodel);
     166                void UpdateStericRate(int dslmodel);
    166167                IssmDouble OceanArea(void);
    167168                IssmDouble OceanAverage(IssmDouble* Sg);
  • issm/trunk-jpl/src/c/cores/cores.h

    r24099 r24469  
    6161void sealevelrise_diagnostics(FemModel* femmodel,Vector<IssmDouble>* RSLg);
    6262IssmDouble objectivefunction(IssmDouble search_scalar,FemModel* femmodel);
     63void GetStericRate(Vector<IssmDouble> ** psteric_rate_g, FemModel* femmodel);
     64void GetDynamicRate(Vector<IssmDouble> ** pdynamic_rate_g, FemModel* femmodel);
    6365
    6466//optimization
  • issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp

    r24335 r24469  
    99#include "../modules/modules.h"
    1010#include "../solutionsequences/solutionsequences.h"
     11
    1112
    1213/*cores:*/
     
    225226        Vector<IssmDouble> *SL  = NULL;
    226227        Vector<IssmDouble> *steric_rate_g  = NULL;
     228        Vector<IssmDouble> *dynamic_rate_g = NULL;
    227229        Vector<IssmDouble> *hydro_rate_g  = NULL;
    228230        Vector<IssmDouble> *U_esa_rate= NULL;
     
    255257        GetVectorFromInputsx(&bedrock,femmodel,BedEnum,VertexSIdEnum);
    256258        GetVectorFromInputsx(&SL,femmodel,SealevelEnum,VertexSIdEnum);
    257         GetVectorFromInputsx(&steric_rate_g,femmodel,SealevelriseStericRateEnum,VertexSIdEnum);
     259        GetStericRate(&steric_rate_g,femmodel);
     260        GetDynamicRate(&dynamic_rate_g,femmodel);
    258261        GetVectorFromInputsx(&hydro_rate_g,femmodel,SealevelriseHydroRateEnum,VertexSIdEnum);
    259262        if(geodetic){
     
    264267        }
    265268
    266         /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate)  * dt + steric_rate + hydro_rate* dt*/
     269        /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate)  * dt + steric_rate + dynamic_rate + hydro_rate* dt*/
    267270        if(geodetic){
    268271                SL->AXPY(N_gia_rate,dt);
     
    270273        }
    271274        SL->AXPY(steric_rate_g,dt);
     275        SL->AXPY(dynamic_rate_g,dt);
    272276        SL->AXPY(hydro_rate_g,dt);
    273277
     
    286290        delete SL;
    287291        delete steric_rate_g;
     292        delete dynamic_rate_g;
    288293        delete hydro_rate_g;
    289294        if(geodetic){
     
    558563}
    559564/*}}}*/
     565void GetDynamicRate(Vector<IssmDouble> ** pdynamic_rate_g, FemModel* femmodel){ /*{{{*/
     566
     567        int dslmodel=0;
     568
     569        /*variables:*/
     570        Vector<IssmDouble> *dynamic_rate_g  = NULL;
     571
     572        /*Update dynamic rates before retrieving them on Vertex SID set:*/
     573        femmodel->parameters->FindParam(&dslmodel,DslModelEnum);
     574
     575        for(int el=0;el<femmodel->elements->Size();el++){
     576                Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(el));
     577                element->UpdateDynamicRate(dslmodel);
     578        }
     579
     580        GetVectorFromInputsx(&dynamic_rate_g,femmodel,DslDynamicRateEnum,VertexSIdEnum);
     581        *pdynamic_rate_g=dynamic_rate_g;
     582}
     583/*}}}*/
     584void GetStericRate(Vector<IssmDouble> ** psteric_rate_g, FemModel* femmodel){ /*{{{*/
     585
     586        int dslmodel=-1;
     587
     588        /*variables:*/
     589        Vector<IssmDouble> *steric_rate_g  = NULL;
     590
     591        /*Update steric rates before retrieving them on Vertex SID set:*/
     592        femmodel->parameters->FindParam(&dslmodel,DslModelEnum);
     593
     594        for(int el=0;el<femmodel->elements->Size();el++){
     595                Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(el));
     596                element->UpdateStericRate(dslmodel);
     597        }
     598        GetVectorFromInputsx(&steric_rate_g,femmodel,DslStericRateEnum,VertexSIdEnum);
     599        *psteric_rate_g=steric_rate_g;
     600}
     601/*}}}*/
    560602
    561603/*support routines:*/
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r24450 r24469  
    6262        parameters->AddObject(iomodel->CopyConstantObject("md.inversion.type",InversionTypeEnum));
    6363        parameters->AddObject(iomodel->CopyConstantObject("md.calving.law",CalvingLawEnum));
     64        parameters->AddObject(iomodel->CopyConstantObject("md.dsl.model",DslModelEnum));
    6465        parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.parameterization",FrontalForcingsParamEnum));
    6566        parameters->AddObject(new IntParam(SealevelriseRunCountEnum,1)); 
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r24449 r24469  
    130130syn keyword cConstant DomainDimensionEnum
    131131syn keyword cConstant DomainTypeEnum
     132syn keyword cConstant DslGlobalAverageThermostericSeaLevelChangeEnum
     133syn keyword cConstant DslModelEnum
    132134syn keyword cConstant EarthIdEnum
    133135syn keyword cConstant EplZigZagCounterEnum
     
    519521syn keyword cConstant DrivingStressXEnum
    520522syn keyword cConstant DrivingStressYEnum
     523syn keyword cConstant DslSeaSurfaceHeightChangeAboveGeoidEnum
     524syn keyword cConstant DslStericRateEnum
     525syn keyword cConstant DslDynamicRateEnum
    521526syn keyword cConstant DummyEnum
    522527syn keyword cConstant EffectivePressureEnum
     
    668673syn keyword cConstant SealevelriseDeltathicknessEnum
    669674syn keyword cConstant SealevelriseSpcthicknessEnum
    670 syn keyword cConstant SealevelriseStericRateEnum
    671675syn keyword cConstant SealevelriseHydroRateEnum
    672 syn keyword cConstant SealevelriseModeleoftrendEof1Enum
    673 syn keyword cConstant SealevelriseModeleoftrendEof2Enum
    674 syn keyword cConstant SealevelriseModeleoftrendEof3Enum
    675 syn keyword cConstant SealevelriseModeleoftrendEof4Enum
    676 syn keyword cConstant SealevelriseModeleoftrendPc1Enum
    677 syn keyword cConstant SealevelriseModeleoftrendPc2Enum
    678 syn keyword cConstant SealevelriseModeleoftrendPc3Enum
    679 syn keyword cConstant SealevelriseModeleoftrendPc4Enum
    680676syn keyword cConstant SedimentHeadEnum
    681677syn keyword cConstant SedimentHeadOldEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r24449 r24469  
    124124        DomainDimensionEnum,
    125125        DomainTypeEnum,
     126        DslGlobalAverageThermostericSeaLevelChangeEnum,
     127        DslModelEnum,
    126128        EarthIdEnum,
    127129        EplZigZagCounterEnum,
     
    515517        DrivingStressXEnum,
    516518        DrivingStressYEnum,
     519        DslSeaSurfaceHeightChangeAboveGeoidEnum,
     520        DslSeaWaterPressureChangeAtSeaFloor,
     521        DslStericRateEnum,
     522        DslDynamicRateEnum,
    517523        DummyEnum,
    518524   EffectivePressureEnum,
     
    664670        SealevelriseDeltathicknessEnum,
    665671        SealevelriseSpcthicknessEnum,
    666         SealevelriseStericRateEnum,
    667672        SealevelriseHydroRateEnum,
    668         SealevelriseModeleoftrendEof1Enum,
    669         SealevelriseModeleoftrendEof2Enum,
    670         SealevelriseModeleoftrendEof3Enum,
    671         SealevelriseModeleoftrendEof4Enum,
    672         SealevelriseModeleoftrendPc1Enum,
    673         SealevelriseModeleoftrendPc2Enum,
    674         SealevelriseModeleoftrendPc3Enum,
    675         SealevelriseModeleoftrendPc4Enum,
    676    SedimentHeadEnum,
    677    SedimentHeadOldEnum,
     673        SedimentHeadEnum,
     674        SedimentHeadOldEnum,
    678675        SedimentHeadSubstepEnum,
    679676        SedimentHeadTransientEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r24449 r24469  
    132132                case DomainDimensionEnum : return "DomainDimension";
    133133                case DomainTypeEnum : return "DomainType";
     134                case DslGlobalAverageThermostericSeaLevelChangeEnum : return "DslGlobalAverageThermostericSeaLevelChange";
     135                case DslModelEnum : return "DslModel";
    134136                case EarthIdEnum : return "EarthId";
    135137                case EplZigZagCounterEnum : return "EplZigZagCounter";
     
    521523                case DrivingStressXEnum : return "DrivingStressX";
    522524                case DrivingStressYEnum : return "DrivingStressY";
     525                case DslSeaSurfaceHeightChangeAboveGeoidEnum : return "DslSeaSurfaceHeightChangeAboveGeoid";
     526                case DslStericRateEnum : return "DslStericRate";
     527                case DslDynamicRateEnum : return "DslDynamicRate";
    523528                case DummyEnum : return "Dummy";
    524529                case EffectivePressureEnum : return "EffectivePressure";
     
    670675                case SealevelriseDeltathicknessEnum : return "SealevelriseDeltathickness";
    671676                case SealevelriseSpcthicknessEnum : return "SealevelriseSpcthickness";
    672                 case SealevelriseStericRateEnum : return "SealevelriseStericRate";
    673677                case SealevelriseHydroRateEnum : return "SealevelriseHydroRate";
    674                 case SealevelriseModeleoftrendEof1Enum : return "SealevelriseModeleoftrendEof1";
    675                 case SealevelriseModeleoftrendEof2Enum : return "SealevelriseModeleoftrendEof2";
    676                 case SealevelriseModeleoftrendEof3Enum : return "SealevelriseModeleoftrendEof3";
    677                 case SealevelriseModeleoftrendEof4Enum : return "SealevelriseModeleoftrendEof4";
    678                 case SealevelriseModeleoftrendPc1Enum : return "SealevelriseModeleoftrendPc1";
    679                 case SealevelriseModeleoftrendPc2Enum : return "SealevelriseModeleoftrendPc2";
    680                 case SealevelriseModeleoftrendPc3Enum : return "SealevelriseModeleoftrendPc3";
    681                 case SealevelriseModeleoftrendPc4Enum : return "SealevelriseModeleoftrendPc4";
    682678                case SedimentHeadEnum : return "SedimentHead";
    683679                case SedimentHeadOldEnum : return "SedimentHeadOld";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r24449 r24469  
    132132              else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
    133133              else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
     134              else if (strcmp(name,"DslGlobalAverageThermostericSeaLevelChange")==0) return DslGlobalAverageThermostericSeaLevelChangeEnum;
     135              else if (strcmp(name,"DslModel")==0) return DslModelEnum;
    134136              else if (strcmp(name,"EarthId")==0) return EarthIdEnum;
    135137              else if (strcmp(name,"EplZigZagCounter")==0) return EplZigZagCounterEnum;
    136138              else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum;
    137               else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum;
    138               else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;
    139139         else stage=2;
    140140   }
    141141   if(stage==2){
    142               if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
     142              if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum;
     143              else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;
     144              else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
    143145              else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum;
    144146              else if (strcmp(name,"FemModelComm")==0) return FemModelCommEnum;
     
    258260              else if (strcmp(name,"MaterialsLithosphereDensity")==0) return MaterialsLithosphereDensityEnum;
    259261              else if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum;
    260               else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;
    261               else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
     265              if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;
     266              else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
     267              else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
    266268              else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
    267269              else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
     
    381383              else if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum;
    382384              else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum;
    383               else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
    384               else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
     388              if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
     389              else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
     390              else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
    389391              else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;
    390392              else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
     
    504506              else if (strcmp(name,"CalvingFluxLevelset")==0) return CalvingFluxLevelsetEnum;
    505507              else if (strcmp(name,"CalvingMeltingFluxLevelset")==0) return CalvingMeltingFluxLevelsetEnum;
    506               else if (strcmp(name,"Converged")==0) return ConvergedEnum;
    507               else if (strcmp(name,"CrevasseDepth")==0) return CrevasseDepthEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"DamageD")==0) return DamageDEnum;
     511              if (strcmp(name,"Converged")==0) return ConvergedEnum;
     512              else if (strcmp(name,"CrevasseDepth")==0) return CrevasseDepthEnum;
     513              else if (strcmp(name,"DamageD")==0) return DamageDEnum;
    512514              else if (strcmp(name,"DamageDOld")==0) return DamageDOldEnum;
    513515              else if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum;
     
    533535              else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
    534536              else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
     537              else if (strcmp(name,"DslSeaSurfaceHeightChangeAboveGeoid")==0) return DslSeaSurfaceHeightChangeAboveGeoidEnum;
     538              else if (strcmp(name,"DslStericRate")==0) return DslStericRateEnum;
     539              else if (strcmp(name,"DslDynamicRate")==0) return DslDynamicRateEnum;
    535540              else if (strcmp(name,"Dummy")==0) return DummyEnum;
    536541              else if (strcmp(name,"EffectivePressure")==0) return EffectivePressureEnum;
     
    624629              else if (strcmp(name,"LoadingforceY")==0) return LoadingforceYEnum;
    625630              else if (strcmp(name,"LoadingforceZ")==0) return LoadingforceZEnum;
    626               else if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum;
     631         else stage=6;
     632   }
     633   if(stage==6){
     634              if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum;
    627635              else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum;
    628636              else if (strcmp(name,"MaskLandLevelset")==0) return MaskLandLevelsetEnum;
    629637              else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum;
    630638              else if (strcmp(name,"MasstransportSpcthickness")==0) return MasstransportSpcthicknessEnum;
    631          else stage=6;
    632    }
    633    if(stage==6){
    634               if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
     639              else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
    635640              else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
    636641              else if (strcmp(name,"MaterialsRheologyE")==0) return MaterialsRheologyEEnum;
     
    685690              else if (strcmp(name,"SealevelriseDeltathickness")==0) return SealevelriseDeltathicknessEnum;
    686691              else if (strcmp(name,"SealevelriseSpcthickness")==0) return SealevelriseSpcthicknessEnum;
    687               else if (strcmp(name,"SealevelriseStericRate")==0) return SealevelriseStericRateEnum;
    688692              else if (strcmp(name,"SealevelriseHydroRate")==0) return SealevelriseHydroRateEnum;
    689               else if (strcmp(name,"SealevelriseModeleoftrendEof1")==0) return SealevelriseModeleoftrendEof1Enum;
    690               else if (strcmp(name,"SealevelriseModeleoftrendEof2")==0) return SealevelriseModeleoftrendEof2Enum;
    691               else if (strcmp(name,"SealevelriseModeleoftrendEof3")==0) return SealevelriseModeleoftrendEof3Enum;
    692               else if (strcmp(name,"SealevelriseModeleoftrendEof4")==0) return SealevelriseModeleoftrendEof4Enum;
    693               else if (strcmp(name,"SealevelriseModeleoftrendPc1")==0) return SealevelriseModeleoftrendPc1Enum;
    694               else if (strcmp(name,"SealevelriseModeleoftrendPc2")==0) return SealevelriseModeleoftrendPc2Enum;
    695               else if (strcmp(name,"SealevelriseModeleoftrendPc3")==0) return SealevelriseModeleoftrendPc3Enum;
    696               else if (strcmp(name,"SealevelriseModeleoftrendPc4")==0) return SealevelriseModeleoftrendPc4Enum;
    697693              else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
    698694              else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum;
     
    752748              else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
    753749              else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
     750              else if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum;
     751              else if (strcmp(name,"SmbNetSW")==0) return SmbNetSWEnum;
     752              else if (strcmp(name,"SmbPAir")==0) return SmbPAirEnum;
     753              else if (strcmp(name,"SmbP")==0) return SmbPEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum;
    758               else if (strcmp(name,"SmbNetSW")==0) return SmbNetSWEnum;
    759               else if (strcmp(name,"SmbPAir")==0) return SmbPAirEnum;
    760               else if (strcmp(name,"SmbP")==0) return SmbPEnum;
    761               else if (strcmp(name,"SmbPddfacIce")==0) return SmbPddfacIceEnum;
     757              if (strcmp(name,"SmbPddfacIce")==0) return SmbPddfacIceEnum;
    762758              else if (strcmp(name,"SmbPddfacSnow")==0) return SmbPddfacSnowEnum;
    763759              else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum;
     
    875871              else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum;
    876872              else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum;
     873              else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum;
     874              else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum;
     875              else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum;
     876              else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum;
    881               else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum;
    882               else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum;
    883               else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
    884               else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;
     880              if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;
    885881              else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;
    886882              else if (strcmp(name,"Outputdefinition2")==0) return Outputdefinition2Enum;
     
    998994              else if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum;
    999995              else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum;
     996              else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
     997              else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum;
     998              else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum;
     999              else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
    1004               else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum;
    1005               else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum;
    1006               else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum;
    1007               else if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum;
     1003              if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum;
    10081004              else if (strcmp(name,"Channel")==0) return ChannelEnum;
    10091005              else if (strcmp(name,"ChannelArea")==0) return ChannelAreaEnum;
     
    11211117              else if (strcmp(name,"IntInput")==0) return IntInputEnum;
    11221118              else if (strcmp(name,"ElementInput2")==0) return ElementInput2Enum;
     1119              else if (strcmp(name,"SegInput2")==0) return SegInput2Enum;
     1120              else if (strcmp(name,"TriaInput2")==0) return TriaInput2Enum;
     1121              else if (strcmp(name,"PentaInput2")==0) return PentaInput2Enum;
     1122              else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"SegInput2")==0) return SegInput2Enum;
    1127               else if (strcmp(name,"TriaInput2")==0) return TriaInput2Enum;
    1128               else if (strcmp(name,"PentaInput2")==0) return PentaInput2Enum;
    1129               else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum;
    1130               else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
     1126              if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
    11311127              else if (strcmp(name,"IntParam")==0) return IntParamEnum;
    11321128              else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
     
    12441240              else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
    12451241              else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
     1242              else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
     1243              else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
     1244              else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
     1245              else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
    1250               else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
    1251               else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
    1252               else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
    1253               else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum;
     1249              if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum;
    12541250              else if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum;
    12551251              else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
  • issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r24259 r24469  
    173173                fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
    174174        }
    175         else if(strcmp(string_in,"SealevelriseStericRate")==0){
    176                 const char* field = "md.slr.steric_rate";
    177                 input_enum        = SealevelriseStericRateEnum;
     175        else if(strcmp(string_in,"DslGlobalAverageThermostericSeaLevelChange")==0){
     176                const char* field = "md.dsl.global_average_thermosteric_sea_level_change";
     177                input_enum        = DslGlobalAverageThermostericSeaLevelChangeEnum;
    178178                fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
    179179        }
  • issm/trunk-jpl/src/m/classes/model.js

    r22972 r24469  
    2222                        console.log(sprintf("//19s: //-22s -- //s","rifts"           ,"[1x1 " + typeof(this.rifts) + "]","rifts properties"));
    2323                        console.log(sprintf("//19s: //-22s -- //s","slr"             ,"[1x1 " + typeof(this.slr) + "]","slr forcings"));
     24                        console.log(sprintf("//19s: //-22s -- //s","dsl"             ,"[1x1 " + typeof(this.dsl) + "]","dynamic sea level"));
    2425                        console.log(sprintf("//19s: //-22s -- //s","debug"           ,"[1x1 " + typeof(this.debug) + "]","debugging tools (valgrind, gprof)"));
    2526                        console.log(sprintf("//19s: //-22s -- //s","verbose"         ,"[1x1 " + typeof(this.verbose) + "]","verbosity level in solve"));
     
    6667                        this.rifts            = new rifts();
    6768                        this.slr              = new slr();
     69                        this.dsl              = new dsl();
    6870
    6971                        this.debug            = new debug();
     
    739741                this.rifts            = 0;
    740742                this.slr              = 0;
     743                this.dsl              = 0;
    741744
    742745                this.debug            = 0;
  • issm/trunk-jpl/src/m/classes/model.m

    r24465 r24469  
    2222                initialization   = 0;
    2323                rifts            = 0;
     24                dsl              = 0;
    2425                slr              = 0;
    2526
     
    871872                        md.hydrology = extrude(md.hydrology,md);
    872873                        md.slr = extrude(md.slr,md);
     874                        md.dsl = extrude(md.dsl,md);
    873875
    874876                        %connectivity
     
    11911193                        md.rifts            = rifts();
    11921194                        md.slr              = slr();
     1195                        md.dsl              = dsl();
    11931196                        md.timestepping     = timestepping();
    11941197                        md.groundingline    = groundingline();
     
    13711374                        disp(sprintf('%19s: %-22s -- %s','rifts'           ,['[1x1 ' class(self.rifts) ']'],'rifts properties'));
    13721375                        disp(sprintf('%19s: %-22s -- %s','slr'             ,['[1x1 ' class(self.slr) ']'],'slr forcings'));
     1376                        disp(sprintf('%19s: %-22s -- %s','dsl'             ,['[1x1 ' class(self.dsl) ']'],'dynamic sea-level '));
    13731377                        disp(sprintf('%19s: %-22s -- %s','debug'           ,['[1x1 ' class(self.debug) ']'],'debugging tools (valgrind, gprof)'));
    13741378                        disp(sprintf('%19s: %-22s -- %s','verbose'         ,['[1x1 ' class(self.verbose) ']'],'verbosity level in solve'));
  • issm/trunk-jpl/src/m/classes/model.py

    r24465 r24469  
    3030from rifts import rifts
    3131from slr import slr
     32from dsl import dsl
    3233from debug import debug
    3334from verbose import verbose
     
    9495        self.rifts = rifts()
    9596        self.slr = slr()
     97        self.dsl = dsl()
    9698
    9799        self.debug = debug()
     
    142144                'initialization',
    143145                'rifts',
    144                 'slr',
     146                'slr',
     147                'dsl',
    145148                'debug',
    146149                'verbose',
     
    189192        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("rifts", "[%s, %s]" % ("1x1", obj.rifts.__class__.__name__), "rifts properties"))
    190193        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("slr", "[%s, %s]" % ("1x1", obj.slr.__class__.__name__), "slr forcings"))
     194        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("dsl", "[%s, %s]" % ("1x1", obj.dsl.__class__.__name__), "dynamic sea level"))
    191195        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("debug", "[%s, %s]" % ("1x1", obj.debug.__class__.__name__), "debugging tools (valgrind, gprof)"))
    192196        string = "%s\n%s" % (string, "%19s: % - 22s - -  %s" % ("verbose", "[%s, %s]" % ("1x1", obj.verbose.__class__.__name__), "verbosity level in solve"))
  • issm/trunk-jpl/src/m/classes/slr.m

    r24259 r24469  
    2525                rotation               = 0;
    2626                ocean_area_scaling     = 0;
    27                 steric_rate            = 0; %rate of ocean expansion from steric effects.
    2827                hydro_rate             = 0; %rate of steric expansion from hydrological effects.
    2928                geodetic_run_frequency = 1; %how many time steps we skip before we run the geodetic part of the solver during transient
     
    3433                Ngia                   = NaN;
    3534                Ugia                   = NaN;
     35
    3636                requested_outputs      = {};
    3737                transitions            = {};
     
    8080                self.degacc=.01;
    8181
    82                 %steric:
    83                 self.steric_rate=0;
     82                %hydro
    8483                self.hydro_rate=0;
    8584       
     
    116115                        md = checkfield(md,'fieldname','slr.maxiter','size',[1 1],'>=',1);
    117116                        md = checkfield(md,'fieldname','slr.geodetic_run_frequency','size',[1 1],'>=',1);
    118                         md = checkfield(md,'fieldname','slr.steric_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
    119117                        md = checkfield(md,'fieldname','slr.hydro_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
    120118                        md = checkfield(md,'fieldname','slr.degacc','size',[1 1],'>=',1e-10);
     
    176174                        fielddisplay(self,'angular_velocity','mean rotational velocity of earth [per second]');
    177175                        fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]');
    178                         fielddisplay(self,'steric_rate','rate of steric ocean expansion (in mm/yr)');
    179176                        fielddisplay(self,'hydro_rate','rate of hydrological expansion (in mm/yr)');
    180177                        fielddisplay(self,'Ngia','rate of viscous (GIA) geoid expansion (in mm/yr)');
     
    214211                        WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','format','Boolean');
    215212                        WriteData(fid,prefix,'object',self,'fieldname','geodetic_run_frequency','format','Integer');
    216                         WriteData(fid,prefix,'object',self,'fieldname','steric_rate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
    217213                        WriteData(fid,prefix,'object',self,'fieldname','hydro_rate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
    218214                        WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts);
     
    256252                        writejsdouble(fid,[modelname '.slr.ocean_area_scaling'],self.ocean_area_scaling);
    257253                        writejsdouble(fid,[modelname '.slr.geodetic_run_frequency'],self.geodetic_run_frequency);
    258                         writejs1Darray(fid,[modelname '.slr.steric_rate'],self.steric_rate);
    259254                        writejs1Darray(fid,[modelname '.slr.hydro_rate'],self.hydro_rate);
    260255                        writejsdouble(fid,[modelname '.slr.degacc'],self.degacc);
Note: See TracChangeset for help on using the changeset viewer.