Changeset 25947
- Timestamp:
- 01/25/21 16:35:15 (4 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 6 added
- 2 deleted
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r25840 r25947 552 552 issm_sources += \ 553 553 ./cores/sealevelchange_core.cpp \ 554 ./analyses/Sealevel riseAnalysis.cpp554 ./analyses/SealevelchangeAnalysis.cpp 555 555 endif 556 556 #}}} -
issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
r25066 r25947 105 105 #endif 106 106 #ifdef _HAVE_SEALEVELRISE_ 107 case Sealevel riseAnalysisEnum : return new SealevelriseAnalysis();107 case SealevelchangeAnalysisEnum : return new SealevelchangeAnalysis(); 108 108 #endif 109 109 #ifdef _HAVE_SMB_ -
issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
r25833 r25947 156 156 if(isgroundingline) iomodel->FetchDataToInput(inputs,elements,"md.geometry.bed",BedEnum); 157 157 /*Initialize cumdeltalthickness input*/ 158 InputUpdateFromConstantx(inputs,elements,0.,Sealevel riseCumDeltathicknessEnum);158 InputUpdateFromConstantx(inputs,elements,0.,SealevelchangeCumDeltathicknessEnum); 159 159 /*Initialize ThicknessResidual input*/ 160 160 InputUpdateFromConstantx(inputs,elements,0.,ThicknessResidualEnum); … … 856 856 basalelement->GetInputListOnVertices(&phi[0],MaskOceanLevelsetEnum); 857 857 basalelement->GetInputListOnVertices(&sealevel[0],SealevelEnum); 858 basalelement->GetInputListOnVertices(&cumdeltathickness[0],Sealevel riseCumDeltathicknessOldEnum);858 basalelement->GetInputListOnVertices(&cumdeltathickness[0],SealevelchangeCumDeltathicknessOldEnum); 859 859 860 860 /*Do we do grounding line migration?*/ … … 863 863 if(isgroundingline) basalelement->GetInputListOnVertices(&bed[0],BedEnum); 864 864 865 /*What is the delta thickness forcing the sea-level rise core: cumulated over time, hence the +=:*/865 /*What is the delta thickness forcing the sea-level change core: cumulated over time, hence the +=:*/ 866 866 for(int i=0;i<numvertices;i++){ 867 867 cumdeltathickness[i] += newthickness[i]-oldthickness[i]; … … 902 902 element->AddBasalInput(SurfaceEnum,newsurface,P1Enum); 903 903 element->AddBasalInput(BaseEnum,newbase,P1Enum); 904 element->AddBasalInput(Sealevel riseCumDeltathicknessEnum,cumdeltathickness,P1Enum);904 element->AddBasalInput(SealevelchangeCumDeltathicknessEnum,cumdeltathickness,P1Enum); 905 905 element->AddBasalInput(SurfaceloadIceThicknessChangeEnum,deltathickness,P1Enum); 906 906 -
issm/trunk-jpl/src/c/analyses/analyses.h
r25066 r25947 36 36 #include "./MasstransportAnalysis.h" 37 37 #include "./SmbAnalysis.h" 38 #include "./Sealevel riseAnalysis.h"38 #include "./SealevelchangeAnalysis.h" 39 39 #include "./MeltingAnalysis.h" 40 40 #include "./SmoothAnalysis.h" -
issm/trunk-jpl/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp
r24986 r25947 95 95 96 96 /*Hack:*/ 97 for(int i=0;i<femmodel_init->nummodels;i++) if(femmodel_init->analysis_type_list[i]==Sealevel riseAnalysisEnum) sealevelrise_core_geometry(femmodel_init);97 for(int i=0;i<femmodel_init->nummodels;i++) if(femmodel_init->analysis_type_list[i]==SealevelchangeAnalysisEnum) sealevelchange_geometry(femmodel_init); 98 98 99 99 /*Make a copy of femmodel, so we start this new evaluation run for this specific sample with a brand -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r25839 r25947 377 377 virtual IssmDouble GetAreaSpherical(void)=0; 378 378 virtual IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks)=0; 379 virtual void Sealevel riseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks)=0;380 virtual IssmDouble Sealevel riseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks,Vector<IssmDouble>* barystatic_contribution,IssmDouble* partition,IssmDouble oceanarea)=0;381 virtual IssmDouble Sealevel riseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks,Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea)=0;382 virtual void Sealevel riseEustaticBottomPressure(IssmDouble* Sgi, SealevelMasks* masks)=0;383 virtual void Sealevel riseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz)=0;384 virtual void Sealevel riseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old,SealevelMasks* mask)=0;385 virtual void SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks)=0;379 virtual void SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks)=0; 380 virtual IssmDouble SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks,Vector<IssmDouble>* barystatic_contribution,IssmDouble* partition,IssmDouble oceanarea)=0; 381 virtual IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks,Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea)=0; 382 virtual void SealevelchangeBarystaticBottomPressure(IssmDouble* Sgi, SealevelMasks* masks)=0; 383 virtual void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz)=0; 384 virtual void SealevelchangeSal(IssmDouble* Sgo, IssmDouble* Sg_old,SealevelMasks* mask)=0; 385 virtual void DeformationFromSurfaceLoads(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks)=0; 386 386 #endif 387 387 -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r25839 r25947 216 216 IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");}; 217 217 void SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");}; 218 void Sealevel riseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};219 void Sealevel riseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};220 IssmDouble Sealevel riseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");};221 IssmDouble Sealevel riseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");};222 void Sealevel riseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");};223 void Sealevel riseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};224 void SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};218 void SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 219 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");}; 220 IssmDouble SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");}; 221 IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");}; 222 void SealevelchangeBarystaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");}; 223 void SealevelchangeSal(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 224 void DeformationFromSurfaceLoads(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");}; 225 225 #endif 226 226 -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r25752 r25947 170 170 #endif 171 171 #ifdef _HAVE_SEALEVELRISE_ 172 void Sealevel riseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};172 void SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 173 173 void SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");}; 174 void Sealevel riseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};175 IssmDouble Sealevel riseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");};176 IssmDouble Sealevel riseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");};177 void Sealevel riseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");};178 void Sealevel riseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};179 void SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};174 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");}; 175 IssmDouble SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");}; 176 IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");}; 177 void SealevelchangeBarystaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");}; 178 void SealevelchangeSal(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 179 void DeformationFromSurfaceLoads(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");}; 180 180 IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");}; 181 181 #endif -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r25752 r25947 177 177 #ifdef _HAVE_SEALEVELRISE_ 178 178 void SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");}; 179 void Sealevel riseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};180 void Sealevel riseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};181 IssmDouble Sealevel riseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");};182 IssmDouble Sealevel riseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");};183 void Sealevel riseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");};184 void Sealevel riseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};185 void SealevelriseGeodetic(IssmDouble* Up ,IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};179 void SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 180 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");}; 181 IssmDouble SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");}; 182 IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");}; 183 void SealevelchangeBarystaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");}; 184 void SealevelchangeSal(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 185 void DeformationFromSurfaceLoads(IssmDouble* Up ,IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");}; 186 186 IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");}; 187 187 #endif -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r25942 r25947 5387 5387 this->parameters->FindParam(&gsize,MeshNumberofverticesEnum); 5388 5388 5389 /*Get area of element: precomputed in the sealevel rise_core_geometry:*/5389 /*Get area of element: precomputed in the sealevelchange_geometry:*/ 5390 5390 area=GetAreaSpherical(); 5391 5391 … … 5522 5522 } 5523 5523 /*}}}*/ 5524 void Tria::Sealevel riseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){/*{{{*/5524 void Tria::SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){/*{{{*/ 5525 5525 /*early return if we are not on an ice cap OR ocean:*/ 5526 5526 if(!masks->isiceonly[this->lid] && !masks->isoceanin[this->lid]){ … … 5586 5586 rho_water=FindParam(MaterialsRhoSeawaterEnum); 5587 5587 5588 /*From Sg_old, recover water sea level rise:*/5588 /*From Sg_old, recover water sea level change:*/ 5589 5589 S=0; for(int i=0;i<NUMVERTICES;i++) S+=Sg_old[this->vertices[i]->Sid()]/NUMVERTICES; 5590 5590 … … 5606 5606 /*Compute ice thickness change: */ 5607 5607 Input* deltathickness_input=this->GetInput(SurfaceloadIceThicknessChangeEnum); 5608 if (!deltathickness_input)_error_("delta thickness input needed to compute sea level rise!");5608 if (!deltathickness_input)_error_("delta thickness input needed to compute sea level change!"); 5609 5609 deltathickness_input->GetInputAverage(&I); 5610 5610 … … 5632 5632 } 5633 5633 /*}}}*/ 5634 void Tria::Sealevel riseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){ /*{{{*/5634 void Tria::SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){ /*{{{*/ 5635 5635 /*diverse:*/ 5636 5636 int gsize; … … 5693 5693 5694 5694 /*recover precomputed green function kernels:*/ 5695 DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(Sealevel riseGRigidEnum)); _assert_(parameter);5695 DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGRigidEnum)); _assert_(parameter); 5696 5696 parameter->GetParameterValueByPointer((IssmDouble**)&G_rigid_precomputed,&M); 5697 5697 … … 5701 5701 5702 5702 if(computeelastic){ 5703 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(Sealevel riseGElasticEnum)); _assert_(parameter);5703 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeGElasticEnum)); _assert_(parameter); 5704 5704 parameter->GetParameterValueByPointer((IssmDouble**)&G_elastic_precomputed,&M); 5705 5705 5706 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(Sealevel riseHElasticEnum)); _assert_(parameter);5706 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeHElasticEnum)); _assert_(parameter); 5707 5707 parameter->GetParameterValueByPointer((IssmDouble**)&H_elastic_precomputed,&M); 5708 5708 5709 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(Sealevel riseUElasticEnum)); _assert_(parameter);5709 parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelchangeUElasticEnum)); _assert_(parameter); 5710 5710 parameter->GetParameterValueByPointer((IssmDouble**)&U_elastic_precomputed,&M); 5711 5711 … … 5775 5775 5776 5776 /*Add in inputs:*/ 5777 this->inputs->SetArrayInput(Sealevel riseIndicesEnum,this->lid,indices,gsize);5778 this->inputs->SetArrayInput(Sealevel riseGEnum,this->lid,G,gsize);5777 this->inputs->SetArrayInput(SealevelchangeIndicesEnum,this->lid,indices,gsize); 5778 this->inputs->SetArrayInput(SealevelchangeGEnum,this->lid,G,gsize); 5779 5779 if(computeelastic){ 5780 this->inputs->SetArrayInput(Sealevel riseGUEnum,this->lid,GU,gsize);5780 this->inputs->SetArrayInput(SealevelchangeGUEnum,this->lid,GU,gsize); 5781 5781 if(horiz){ 5782 this->inputs->SetArrayInput(Sealevel riseGNEnum,this->lid,GN,gsize);5783 this->inputs->SetArrayInput(Sealevel riseGEEnum,this->lid,GE,gsize);5782 this->inputs->SetArrayInput(SealevelchangeGNEnum,this->lid,GN,gsize); 5783 this->inputs->SetArrayInput(SealevelchangeGEEnum,this->lid,GE,gsize); 5784 5784 } 5785 5785 } … … 5813 5813 } 5814 5814 /*}}}*/ 5815 IssmDouble Tria::Sealevel riseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){ /*{{{*/5815 IssmDouble Tria::SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){ /*{{{*/ 5816 5816 5817 5817 /*diverse:*/ 5818 5818 int gsize; 5819 5819 IssmDouble area; 5820 IssmDouble phi=1.0; //WARNING: do not touch this, default is entire elemnt contributes eustatic5820 IssmDouble phi=1.0; //WARNING: do not touch this, default is entire elemnt contributes barystatic 5821 5821 IssmDouble I; //change in ice thickness or water level(Farrel and Clarke, Equ. 4) 5822 5822 bool notfullygrounded=false; … … 5840 5840 if(!masks->isiceonly[this->lid]){ 5841 5841 #ifdef _ISSM_DEBUG_ 5842 constant=0; this->AddInput(Sealevel EustaticMaskEnum,&constant,P0Enum);5842 constant=0; this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 5843 5843 #endif 5844 5844 bslrice=0; … … 5850 5850 constant=0; 5851 5851 #ifdef _ISSM_DEBUG_ 5852 this->AddInput(Sealevel EustaticMaskEnum,&constant,P0Enum);5852 this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 5853 5853 #endif 5854 5854 bslrice=0; … … 5862 5862 constant=1; 5863 5863 #ifdef _ISSM_DEBUG_ 5864 this->AddInput(Sealevel EustaticMaskEnum,&constant,P0Enum);5864 this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 5865 5865 #endif 5866 5866 … … 5873 5873 5874 5874 /*retrieve precomputed G:*/ 5875 if(computerigid)this->inputs->GetArrayPtr(Sealevel riseGEnum,this->lid,&G,&gsize);5876 5877 /*Get area of element: precomputed in the sealevel rise_core_geometry:*/5875 if(computerigid)this->inputs->GetArrayPtr(SealevelchangeGEnum,this->lid,&G,&gsize); 5876 5877 /*Get area of element: precomputed in the sealevelchange_geometry:*/ 5878 5878 this->Element::GetInputValue(&area,AreaEnum); 5879 5879 … … 5886 5886 if(glfraction==0)phi=1; 5887 5887 #ifdef _ISSM_DEBUG_ 5888 this->AddInput(Sealevel EustaticMaskEnum,&phi,P0Enum);5888 this->AddInput(SealevelBarystaticMaskEnum,&phi,P0Enum); 5889 5889 #endif 5890 5890 } … … 5893 5893 /*Retrieve ice thickness at vertices: */ 5894 5894 Input* deltathickness_input=this->GetInput(SurfaceloadIceThicknessChangeEnum); 5895 if (!deltathickness_input)_error_("delta thickness input needed to compute sea level rise!");5895 if (!deltathickness_input)_error_("delta thickness input needed to compute sea level change!"); 5896 5896 5897 5897 /*/Average ice thickness over grounded area of the element only: {{{*/ … … 5944 5944 } 5945 5945 /*}}}*/ 5946 IssmDouble Tria::Sealevel riseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){ /*{{{*/5946 IssmDouble Tria::SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){ /*{{{*/ 5947 5947 5948 5948 /*diverse:*/ … … 5987 5987 5988 5988 /*retrieve precomputed G:*/ 5989 if(computeelastic)this->inputs->GetArrayPtr(Sealevel riseGEnum,this->lid,&G,&gsize);5990 5991 /*Get area of element: precomputed in the sealevel rise_core_geometry:*/5989 if(computeelastic)this->inputs->GetArrayPtr(SealevelchangeGEnum,this->lid,&G,&gsize); 5990 5991 /*Get area of element: precomputed in the sealevelchange_geometry:*/ 5992 5992 this->Element::GetInputValue(&area,AreaEnum); 5993 5993 5994 5994 /*Retrieve water height at vertices: */ 5995 5995 Input* deltathickness_input=this->GetInput(SurfaceloadWaterHeightChangeEnum); 5996 if (!deltathickness_input)_error_("SurfaceloadWaterHeightChangeEnum input needed to compute sea level rise!");5996 if (!deltathickness_input)_error_("SurfaceloadWaterHeightChangeEnum input needed to compute sea level change!"); 5997 5997 deltathickness_input->GetInputAverage(&W); 5998 5998 … … 6020 6020 } 6021 6021 /*}}}*/ 6022 void Tria::Sealevel riseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){ /*{{{*/6022 void Tria::SealevelchangeBarystaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){ /*{{{*/ 6023 6023 6024 6024 /*diverse:*/ … … 6044 6044 /*Inform mask: */ 6045 6045 #ifdef _ISSM_DEBUG_ 6046 constant=1; this->AddInput(Sealevel EustaticMaskEnum,&constant,P0Enum);6046 constant=1; this->AddInput(SealevelBarystaticMaskEnum,&constant,P0Enum); 6047 6047 #endif 6048 6048 … … 6051 6051 6052 6052 /*retrieve precomputed G:*/ 6053 this->inputs->GetArrayPtr(Sealevel riseGEnum,this->lid,&G,&gsize);6054 6055 /*Get area of element: precomputed in the sealevel rise_core_geometry:*/6053 this->inputs->GetArrayPtr(SealevelchangeGEnum,this->lid,&G,&gsize); 6054 6055 /*Get area of element: precomputed in the sealevelchange_geometry:*/ 6056 6056 this->Element::GetInputValue(&area,AreaEnum); 6057 6057 6058 6058 /*Retrieve bottom pressure change and average over the element: */ 6059 6059 Input* bottompressure_change_input=this->GetInput(DslSeaWaterPressureChangeAtSeaFloorEnum); 6060 if (!bottompressure_change_input)_error_("bottom pressure input needed to compute sea level rise fingerprint!");6060 if (!bottompressure_change_input)_error_("bottom pressure input needed to compute sea level change fingerprint!"); 6061 6061 bottompressure_change_input->GetInputAverage(&BP); 6062 6062 … … 6070 6070 } 6071 6071 /*}}}*/ 6072 void Tria::Sealevel riseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks){ /*{{{*/6072 void Tria::SealevelchangeSal(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks){ /*{{{*/ 6073 6073 6074 6074 /*diverse:*/ … … 6088 6088 constant=0; 6089 6089 #ifdef _ISSM_DEBUG_ 6090 this->AddInput(Sealevel EustaticOceanMaskEnum,&constant,P0Enum);6090 this->AddInput(SealevelBarystaticOceanMaskEnum,&constant,P0Enum); 6091 6091 #endif 6092 6092 return; … … 6094 6094 constant=1; 6095 6095 #ifdef _ISSM_DEBUG_ 6096 this->AddInput(Sealevel EustaticOceanMaskEnum,&constant,P0Enum);6096 this->AddInput(SealevelBarystaticOceanMaskEnum,&constant,P0Enum); 6097 6097 #endif 6098 6098 … … 6101 6101 6102 6102 /*retrieve precomputed G:*/ 6103 this->inputs->GetArrayPtr(Sealevel riseGEnum,this->lid,&G,&dummy); _assert_(dummy==gsize);6104 6105 /*From Sg_old, recover water sea level rise:*/6103 this->inputs->GetArrayPtr(SealevelchangeGEnum,this->lid,&G,&dummy); _assert_(dummy==gsize); 6104 6105 /*From Sg_old, recover water sea level change:*/ 6106 6106 S=0; for(int i=0;i<NUMVERTICES;i++) S+=Sg_old[this->vertices[i]->Sid()]/NUMVERTICES; 6107 6107 … … 6114 6114 } 6115 6115 /*}}}*/ 6116 void Tria:: SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North ,IssmDouble* East,IssmDouble* Sg, SealevelMasks* masks){ /*{{{*/6116 void Tria::DeformationFromSurfaceLoads(IssmDouble* Up, IssmDouble* North ,IssmDouble* East,IssmDouble* Sg, SealevelMasks* masks){ /*{{{*/ 6117 6117 6118 6118 /*diverse:*/ … … 6147 6147 6148 6148 /*recover elastic Green's functions for displacement:*/ 6149 this->inputs->GetArrayPtr(Sealevel riseGUEnum,this->lid,&GU,&gsize);6149 this->inputs->GetArrayPtr(SealevelchangeGUEnum,this->lid,&GU,&gsize); 6150 6150 if(horiz){ 6151 this->inputs->GetArrayPtr(Sealevel riseGEEnum,this->lid,&GE,&gsize);6152 this->inputs->GetArrayPtr(Sealevel riseGNEnum,this->lid,&GN,&gsize);6151 this->inputs->GetArrayPtr(SealevelchangeGEEnum,this->lid,&GE,&gsize); 6152 this->inputs->GetArrayPtr(SealevelchangeGNEnum,this->lid,&GN,&gsize); 6153 6153 } 6154 6154 6155 6155 6156 6156 if(masks->isoceanin[this->lid]){ 6157 /*From Sg, recover water sea level rise:*/6157 /*From Sg, recover water sea level change:*/ 6158 6158 S=0; for(int i=0;i<NUMVERTICES;i++) S+=Sg[this->vertices[i]->Sid()]/NUMVERTICES; 6159 6159 … … 6164 6164 if(bp_compute_fingerprints){ 6165 6165 Input* bottompressure_change_input=this->GetInput(DslSeaWaterPressureChangeAtSeaFloorEnum); 6166 if (!bottompressure_change_input)_error_("bottom pressure input needed to compute sea level rise fingerprint!");6166 if (!bottompressure_change_input)_error_("bottom pressure input needed to compute sea level change fingerprint!"); 6167 6167 bottompressure_change_input->GetInputAverage(&BP); 6168 6168 … … 6185 6185 /*Compute ice thickness change: */ 6186 6186 Input* deltathickness_input=this->GetInput(SurfaceloadIceThicknessChangeEnum); 6187 if (!deltathickness_input)_error_("delta thickness input needed to compute sea level rise!");6187 if (!deltathickness_input)_error_("delta thickness input needed to compute sea level change!"); 6188 6188 deltathickness_input->GetInputAverage(&I); 6189 6189 -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r25839 r25947 162 162 #ifdef _HAVE_SEALEVELRISE_ 163 163 IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks); 164 void Sealevel riseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,SealevelMasks* masks);164 void SealevelchangeMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,SealevelMasks* masks); 165 165 void SetSealevelMasks(SealevelMasks* masks); 166 void Sealevel riseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz);167 IssmDouble Sealevel riseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea);168 IssmDouble Sealevel riseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea);169 void Sealevel riseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks);170 void Sealevel riseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old,SealevelMasks* masks);171 void SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks);166 void SealevelchangeGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz); 167 IssmDouble SealevelchangeBarystaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea); 168 IssmDouble SealevelchangeBarystaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea); 169 void SealevelchangeBarystaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks); 170 void SealevelchangeSal(IssmDouble* Sgo,IssmDouble* Sg_old,SealevelMasks* masks); 171 void DeformationFromSurfaceLoads(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks); 172 172 #endif 173 173 /*}}}*/ -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r25827 r25947 833 833 break; 834 834 835 case Sealevel riseSolutionEnum:836 analyses_temp[numanalyses++]=Sealevel riseAnalysisEnum;835 case SealevelchangeSolutionEnum: 836 analyses_temp[numanalyses++]=SealevelchangeAnalysisEnum; 837 837 analyses_temp[numanalyses++]=GiaAnalysisEnum; 838 838 break; … … 899 899 if(isslr){ 900 900 analyses_temp[numanalyses++]=GiaAnalysisEnum; 901 analyses_temp[numanalyses++]=Sealevel riseAnalysisEnum;901 analyses_temp[numanalyses++]=SealevelchangeAnalysisEnum; 902 902 } 903 903 if(isesa){ … … 4757 4757 #endif 4758 4758 #ifdef _HAVE_SEALEVELRISE_ 4759 void FemModel::Sealevel riseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, IssmDouble** pbslrice_partition,IssmDouble** pbslrhydro_partition,SealevelMasks* masks) { /*{{{*/4759 void FemModel::SealevelchangeBarystatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, IssmDouble** pbslrice_partition,IssmDouble** pbslrhydro_partition,SealevelMasks* masks) { /*{{{*/ 4760 4760 4761 4761 /*serialized vectors:*/ … … 4780 4780 4781 4781 4782 /*Initialize temporary vector that will be used to sum eustatic components4782 /*Initialize temporary vector that will be used to sum barystatic components 4783 4783 * on all local elements, prior to assembly:*/ 4784 4784 int gsize = this->nodes->NumberOfDofs(GsetEnum); … … 4787 4787 for(int i=0;i<gsize;i++) indices[i]=i; 4788 4788 4789 /*First, figure out the area of the ocean, which is needed to compute the eustatic component: */4789 /*First, figure out the area of the ocean, which is needed to compute the barystatic component: */ 4790 4790 int i = -1; 4791 4791 for(Object* & object : this->elements->objects){ … … 4813 4813 4814 4814 4815 /*Call the sea level rise core for ice : */4815 /*Call the barystatic sea level change core for ice : */ 4816 4816 bslrice_cpu=0; 4817 4817 for(Object* & object : this->elements->objects){ 4818 4818 Element* element = xDynamicCast<Element*>(object); 4819 bslrice_cpu+=element->Sealevel riseEustaticIce(RSLgi,masks, bslrice_partition,partitionice,oceanarea);4820 } 4821 4822 /*Call the sea level rise core for hydro: */4819 bslrice_cpu+=element->SealevelchangeBarystaticIce(RSLgi,masks, bslrice_partition,partitionice,oceanarea); 4820 } 4821 4822 /*Call the barystatic sea level change core for hydro: */ 4823 4823 bslrhydro_cpu=0; 4824 4824 for(int i=0;i<elements->Size();i++){ 4825 4825 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 4826 bslrhydro_cpu+=element->Sealevel riseEustaticHydro(RSLgi,masks, bslrhydro_partition,partitionhydro,oceanarea);4827 } 4828 4829 /*Call the sea level rise core for bottom pressures: */4826 bslrhydro_cpu+=element->SealevelchangeBarystaticHydro(RSLgi,masks, bslrhydro_partition,partitionhydro,oceanarea); 4827 } 4828 4829 /*Call the barystatic sea level change core for bottom pressures: */ 4830 4830 this->parameters->FindParam(&bp_compute_fingerprints,DslComputeFingerprintsEnum); 4831 4831 if(bp_compute_fingerprints){ 4832 4832 for(int i=0;i<elements->Size();i++){ 4833 4833 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 4834 element->Sealevel riseEustaticBottomPressure(RSLgi,masks);4834 element->SealevelchangeBarystaticBottomPressure(RSLgi,masks); 4835 4835 } 4836 4836 } … … 4840 4840 pRSLgi->Assemble(); 4841 4841 4842 /*Sum all eustatic components from all cpus:*/4842 /*Sum all barystatic components from all cpus:*/ 4843 4843 ISSM_MPI_Reduce (&bslrice_cpu,&bslrice,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() ); 4844 4844 ISSM_MPI_Bcast(&bslrice,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); … … 4878 4878 } 4879 4879 /*}}}*/ 4880 void FemModel::Sealevel riseNonEustatic(Vector<IssmDouble>* pRSLgo, Vector<IssmDouble>* pRSLg_old, SealevelMasks* masks, bool verboseconvolution){/*{{{*/4880 void FemModel::SealevelchangeSal(Vector<IssmDouble>* pRSLgo, Vector<IssmDouble>* pRSLg_old, SealevelMasks* masks, bool verboseconvolution){/*{{{*/ 4881 4881 4882 4882 /*serialized vectors:*/ … … 4893 4893 this->parameters->FindParam(&computerigid,SolidearthSettingsRigidEnum); 4894 4894 4895 /*Initialize temporary vector that will be used to sum eustatic components on all local elements, prior4895 /*Initialize temporary vector that will be used to sum barystatic components on all local elements, prior 4896 4896 * to assembly:*/ 4897 4897 gsize = this->nodes->NumberOfDofs(GsetEnum); … … 4902 4902 RSLg_old=pRSLg_old->ToMPISerial(); 4903 4903 4904 /*Call the s ea level rise non-eustaticcore only if required: */4904 /*Call the sal sea level change core only if required: */ 4905 4905 if(computerigid){ 4906 4906 for(Object* & object : this->elements->objects){ 4907 4907 Element* element = xDynamicCast<Element*>(object); 4908 element->Sealevel riseNonEustatic(RSLgo,RSLg_old,masks);4908 element->SealevelchangeSal(RSLgo,RSLg_old,masks); 4909 4909 } 4910 4910 } … … 4919 4919 } 4920 4920 /*}}}*/ 4921 void FemModel::Sealevel riseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks){/*{{{*/4921 void FemModel::SealevelchangeRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks){/*{{{*/ 4922 4922 4923 4923 /*serialized vectors:*/ … … 4942 4942 for(Object* & object : this->elements->objects){ 4943 4943 Element* element = xDynamicCast<Element*>(object); 4944 element->Sealevel riseMomentOfInertia(&moi_list[0],RSLg_old,masks );4944 element->SealevelchangeMomentOfInertia(&moi_list[0],RSLg_old,masks ); 4945 4945 moi_list_cpu[0] += moi_list[0]; 4946 4946 moi_list_cpu[1] += moi_list[1]; … … 5013 5013 } 5014 5014 /*}}}*/ 5015 void FemModel::Sealevel riseElastic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pRSLg, SealevelMasks* masks){/*{{{*/5015 void FemModel::SealevelchangeDeformation(Vector<IssmDouble>* pgeoid, Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pRSLg, SealevelMasks* masks){/*{{{*/ 5016 5016 5017 5017 /*serialized vectors:*/ … … 5031 5031 RSLg=pRSLg->ToMPISerial(); 5032 5032 5033 /*Initialize temporary vector that will be used to sum eustatic components on all local elements, prior5033 /*Initialize temporary vector that will be used to sum barystatic components on all local elements, prior 5034 5034 * to assembly:*/ 5035 5035 gsize = this->nodes->NumberOfDofs(GsetEnum); … … 5041 5041 indices=xNew<int>(gsize); for (int i=0;i<gsize;i++)indices[i]=i; 5042 5042 5043 /*Call the sea level rise core:*/5043 /*Call the deformation from loading routines:*/ 5044 5044 for(Object* & object : this->elements->objects){ 5045 5045 Element* element = xDynamicCast<Element*>(object); 5046 element-> SealevelriseGeodetic(Up,North,East,RSLg,masks);5046 element->DeformationFromSurfaceLoads(Up,North,East,RSLg,masks); 5047 5047 } 5048 5048 5049 5049 pUp->SetValues(gsize,indices,Up,ADD_VAL); 5050 5050 pUp->Assemble(); 5051 5052 5053 /*Add RSL to Up to find the geoid: */ 5054 pUp->Copy(pgeoid); pgeoid->AXPY(pRSLg,1); 5055 5051 5056 if (horiz){ 5052 5057 pNorth->SetValues(gsize,indices,North,ADD_VAL); … … 5066 5071 } 5067 5072 /*}}}*/ 5068 IssmDouble FemModel::Sealevel riseOceanAverage(Vector<IssmDouble>* RSLg,SealevelMasks* masks, IssmDouble oceanarea) { /*{{{*/5073 IssmDouble FemModel::SealevelchangeOceanAverage(Vector<IssmDouble>* RSLg,SealevelMasks* masks, IssmDouble oceanarea) { /*{{{*/ 5069 5074 5070 5075 IssmDouble* RSLg_serial=NULL; -
issm/trunk-jpl/src/c/classes/FemModel.h
r25752 r25947 166 166 #endif 167 167 #ifdef _HAVE_SEALEVELRISE_ 168 void Sealevel riseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, IssmDouble** pbslrice_partition,IssmDouble** pbslrhydro_partition, SealevelMasks* masks);169 void Sealevel riseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, SealevelMasks* masks,bool verboseconvolution);170 void Sealevel riseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks);171 void Sealevel riseElastic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg_old, SealevelMasks* masks);172 IssmDouble Sealevel riseOceanAverage(Vector<IssmDouble>* Sg,SealevelMasks* masks, IssmDouble oceanarea);168 void SealevelchangeBarystatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, IssmDouble** pbslrice_partition,IssmDouble** pbslrhydro_partition, SealevelMasks* masks); 169 void SealevelchangeSal(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, SealevelMasks* masks,bool verboseconvolution); 170 void SealevelchangeRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks); 171 void SealevelchangeDeformation(Vector<IssmDouble>* pgeoid,Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg_old, SealevelMasks* masks); 172 IssmDouble SealevelchangeOceanAverage(Vector<IssmDouble>* Sg,SealevelMasks* masks, IssmDouble oceanarea); 173 173 #endif 174 174 void HydrologyEPLupdateDomainx(IssmDouble* pEplcount); -
issm/trunk-jpl/src/c/cores/CorePointerFromSolutionEnum.cpp
r25066 r25947 59 59 solutioncore=&masstransport_core; 60 60 break; 61 case Sealevel riseSolutionEnum:61 case SealevelchangeSolutionEnum: 62 62 solutioncore=&sealevelchange_core; 63 63 break; -
issm/trunk-jpl/src/c/cores/cores.h
r25627 r25947 54 54 void bmb_core(FemModel* femmodel); 55 55 void damage_core(FemModel* femmodel); 56 57 /*sealevel change cores:*/ 56 58 void sealevelchange_core(FemModel* femmodel); 57 59 void grd_core(FemModel* femmodel); 60 void solidearthexternal_core(FemModel* femmodel); 58 61 void dynstr_core(FemModel* femmodel); 59 void sealevelrise_core_geometry(FemModel* femmodel); 60 SealevelMasks* sealevelrise_core_masks(FemModel* femmodel); 61 Vector<IssmDouble>* sealevelrise_core_eustatic(FemModel* femmodel,SealevelMasks* mask, IssmDouble* poceanarea); 62 Vector<IssmDouble>* sealevelrise_core_noneustatic(FemModel* femmodel,SealevelMasks* masks, Vector<IssmDouble>* RSLg_eustatic,IssmDouble oceanarea); 63 void sealevelrise_core_elastic(Vector<IssmDouble>** pU_radial, Vector<IssmDouble>** pU_north,Vector<IssmDouble>** pU_east,FemModel* femmodel,Vector<IssmDouble>* RSLg, SealevelMasks* masks); 64 void sealevelrise_core_viscous(Vector<IssmDouble>** pU_gia,Vector<IssmDouble>** pN_gia,FemModel* femmodel,Vector<IssmDouble>* RSLg); 65 void sealevelrise_diagnostics(FemModel* femmodel,Vector<IssmDouble>* RSLg); 66 IssmDouble objectivefunction(IssmDouble search_scalar,FemModel* femmodel); 62 void sealevelchange_geometry(FemModel* femmodel); 63 SealevelMasks* sealevel_masks(FemModel* femmodel); 64 Vector<IssmDouble>* sealevelchange_core_barystatic(FemModel* femmodel,SealevelMasks* mask, IssmDouble* poceanarea); 65 Vector<IssmDouble>* sealevelchange_core_sal(FemModel* femmodel,SealevelMasks* masks, Vector<IssmDouble>* RSLg_barystatic,IssmDouble oceanarea); 66 void sealevelchange_core_deformation(Vector<IssmDouble>** pN_radial, Vector<IssmDouble>** pU_radial, Vector<IssmDouble>** pU_north,Vector<IssmDouble>** pU_east,FemModel* femmodel,Vector<IssmDouble>* RSLg, SealevelMasks* masks); 67 67 void GetStericRate(Vector<IssmDouble> ** psteric_rate_g, FemModel* femmodel); 68 68 void GetDynamicRate(Vector<IssmDouble> ** pdynamic_rate_g, FemModel* femmodel); … … 71 71 //optimization 72 72 int GradJSearch(IssmDouble* search_vector,FemModel* femmodel,int step); 73 IssmDouble objectivefunction(IssmDouble search_scalar,FemModel* femmodel); 73 74 74 75 //diverse -
issm/trunk-jpl/src/c/cores/masstransport_core.cpp
r25680 r25947 64 64 InputDuplicatex(femmodel,BaseEnum,BaseOldEnum); 65 65 InputDuplicatex(femmodel,SurfaceEnum,SurfaceOldEnum); 66 InputDuplicatex(femmodel,Sealevel riseCumDeltathicknessEnum,SealevelriseCumDeltathicknessOldEnum);66 InputDuplicatex(femmodel,SealevelchangeCumDeltathicknessEnum,SealevelchangeCumDeltathicknessOldEnum); 67 67 if(stabilization==4){ 68 68 solutionsequence_fct(femmodel); -
issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp
r25827 r25947 25 25 bool isgia=0; 26 26 int grd=0; 27 int isexternal=0; 28 int iscoupler=0; 27 29 int solution_type; 28 30 … … 32 34 femmodel->parameters->FindParam(&save_results,SaveResultsEnum); 33 35 femmodel->parameters->FindParam(&grd,SolidearthSettingsGRDEnum); 34 35 /*in case we are running SealevelriseSolutionEnum, then bypass transient settings:*/ 36 if(solution_type==SealevelriseSolutionEnum){ 36 femmodel->parameters->FindParam(&isexternal,SolidearthIsExternalEnum); 37 femmodel->parameters->FindParam(&iscoupler,TransientIscouplerEnum); 38 39 /*in case we are running SealevelchangeSolutionEnum, then bypass transient settings:*/ 40 if(solution_type==SealevelchangeSolutionEnum){ 37 41 isslr=1; 38 42 isgia=1; … … 43 47 44 48 /*Verbose: */ 45 if(VerboseSolution()) _printf0_(" computing sea level rise\n");49 if(VerboseSolution()) _printf0_(" computing sea level change\n"); 46 50 47 51 /*Run gia core: */ … … 55 59 56 60 /*set SLR configuration: */ 57 femmodel->SetCurrentConfiguration(Sealevel riseAnalysisEnum);61 femmodel->SetCurrentConfiguration(SealevelchangeAnalysisEnum); 58 62 59 63 /*run geometry core: */ 60 sealevelrise_core_geometry(femmodel); 64 sealevelchange_geometry(femmodel); 65 66 /*any external forcings?:*/ 67 if(isexternal)solidearthexternal_core(femmodel); 61 68 62 69 /*Run geodetic:*/ 70 //if(modelid==earthid) //not sure how we proceed yet on coupling. 63 71 if(grd)grd_core(femmodel); 64 72 65 73 /*Run steric core for sure:*/ 66 74 dynstr_core(femmodel); 75 76 if(iscoupler){ 77 /*transfer sea level back to ice caps:*/ 78 TransferSealevel(femmodel,SealevelEnum); 79 TransferSealevel(femmodel,BedEnum); 80 81 //reset cumdeltathickness to 0: 82 InputUpdateFromConstantx(femmodel->inputs,femmodel->elements,0.,SealevelchangeCumDeltathicknessEnum); 83 } 67 84 68 85 /*Save results: */ … … 71 88 char **requested_outputs = NULL; 72 89 if(VerboseSolution()) _printf0_(" saving results\n"); 73 femmodel->parameters->FindParam(&requested_outputs,&numoutputs,Sealevel riseRequestedOutputsEnum);90 femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SealevelchangeRequestedOutputsEnum); 74 91 femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs); 75 92 if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);} … … 77 94 78 95 /*requested dependents: */ 79 if(solution_type==Sealevel riseSolutionEnum)femmodel->RequestedDependentsx();96 if(solution_type==SealevelchangeSolutionEnum)femmodel->RequestedDependentsx(); 80 97 81 98 /*End profiler*/ … … 83 100 } 84 101 /*}}}*/ 102 void solidearthexternal_core(FemModel* femmodel){ /*{{{*/ 103 104 /*variables:*/ 105 Vector<IssmDouble> *bedrock = NULL; 106 Vector<IssmDouble> *bedrock_rate = NULL; 107 Vector<IssmDouble> *bedrockeast = NULL; 108 Vector<IssmDouble> *bedrockeast_rate = NULL; 109 Vector<IssmDouble> *bedrocknorth = NULL; 110 Vector<IssmDouble> *bedrocknorth_rate = NULL; 111 Vector<IssmDouble> *geoid= NULL; 112 Vector<IssmDouble> *geoid_rate= NULL; 113 int horiz=0; 114 int modelid=-1; 115 116 /*parameters: */ 117 bool isslr=0; 118 int solution_type; 119 IssmDouble dt; 120 121 /*Retrieve parameters:*/ 122 femmodel->parameters->FindParam(&isslr,TransientIsslrEnum); 123 femmodel->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum); 124 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 125 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 126 127 /*in case we are running SealevelchangeSolutionEnum, then bypass transient settings:*/ 128 if(solution_type==SealevelchangeSolutionEnum)isslr=1; 129 130 /*Should we be here?:*/ 131 if(!isslr)return; 132 133 /*Verbose: */ 134 if(VerboseSolution()) _printf0_(" computing external solid earth contributions\n"); 135 136 /*Retrieve geoid viscous and elastic rates, bedrock uplift viscous and elastic rates + steric rate, as vectors:*/ 137 GetVectorFromInputsx(&bedrock,femmodel,BedEnum,VertexSIdEnum); 138 GetVectorFromInputsx(&geoid,femmodel,SealevelEnum,VertexSIdEnum); //In ISSM, Sealevel is absolute. 139 if(horiz){ 140 GetVectorFromInputsx(&bedrockeast,femmodel,BedEastEnum,VertexSIdEnum); 141 GetVectorFromInputsx(&bedrocknorth,femmodel,BedNorthEnum,VertexSIdEnum); 142 } 143 /*Deal with Mme: */ 144 if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalDisplacementEastRateEnum)==DatasetInputEnum){ 145 /*retrieve model id: */ 146 femmodel->parameters->FindParam(&modelid,SolidearthExternalModelidEnum); 147 /*replace dataset of forcings with only one, the modelid'th:*/ 148 MmeToInputFromId(femmodel,modelid,SolidearthExternalDisplacementNorthRateEnum, P1Enum); 149 MmeToInputFromId(femmodel,modelid,SolidearthExternalDisplacementEastRateEnum, P1Enum); 150 MmeToInputFromId(femmodel,modelid,SolidearthExternalDisplacementUpRateEnum, P1Enum); 151 MmeToInputFromId(femmodel,modelid,SolidearthExternalGeoidRateEnum, P1Enum); 152 MmeToInputFromId(femmodel,modelid,SolidearthExternalBarystaticSeaLevelRateEnum, P1Enum); 153 } 154 155 GetVectorFromInputsx(&geoid_rate,femmodel,SolidearthExternalGeoidRateEnum,VertexSIdEnum); 156 GetVectorFromInputsx(&bedrock_rate,femmodel,SolidearthExternalDisplacementUpRateEnum,VertexSIdEnum); 157 if(horiz){ 158 GetVectorFromInputsx(&bedrockeast_rate,femmodel,SolidearthExternalDisplacementEastRateEnum,VertexSIdEnum); 159 GetVectorFromInputsx(&bedrocknorth_rate,femmodel,SolidearthExternalDisplacementNorthRateEnum,VertexSIdEnum); 160 } 161 162 /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate) * dt + steric_rate + dynamic_rate dt*/ 163 geoid->AXPY(geoid_rate,dt); 164 bedrock->AXPY(bedrock_rate,dt); 165 if(horiz){ 166 bedrockeast->AXPY(bedrockeast_rate,dt); 167 bedrocknorth->AXPY(bedrocknorth_rate,dt); 168 } 169 170 /*update element inputs:*/ 171 InputUpdateFromVectorx(femmodel,bedrock,BedEnum,VertexSIdEnum); 172 InputUpdateFromVectorx(femmodel,geoid,SealevelEnum,VertexSIdEnum); 173 if(horiz){ 174 InputUpdateFromVectorx(femmodel,bedrockeast,BedEastEnum,VertexSIdEnum); 175 InputUpdateFromVectorx(femmodel,bedrocknorth,BedNorthEnum,VertexSIdEnum); 176 } 177 178 /*Free ressources:*/ 179 delete bedrock; delete bedrock_rate; 180 delete geoid; delete geoid_rate; 181 if(horiz){ 182 delete bedrockeast; delete bedrockeast_rate; 183 delete bedrocknorth; delete bedrocknorth_rate; 184 } 185 } 186 /*}}}*/ 85 187 void grd_core(FemModel* femmodel){ /*{{{*/ 86 188 … … 89 191 /*variables:*/ 90 192 Vector<IssmDouble> *RSLg = NULL; 91 Vector<IssmDouble> *BPg = NULL; 92 Vector<IssmDouble> *RSLg_rate = NULL; 93 Vector<IssmDouble> *RSLg_eustatic = NULL; 94 Vector<IssmDouble> *U_esa = NULL; 95 Vector<IssmDouble> *U_esa_rate = NULL; 96 Vector<IssmDouble> *N_esa = NULL; 97 Vector<IssmDouble> *N_esa_rate = NULL; 98 Vector<IssmDouble> *U_north_esa = NULL; 99 Vector<IssmDouble> *U_east_esa = NULL; 100 Vector<IssmDouble> *N_gia= NULL; 101 Vector<IssmDouble> *U_gia= NULL; 102 Vector<IssmDouble> *N_gia_rate= NULL; 103 Vector<IssmDouble> *U_gia_rate= NULL; 193 Vector<IssmDouble> *RSLg_barystatic = NULL; 194 Vector<IssmDouble> *U_grd = NULL; 195 Vector<IssmDouble> *N_grd = NULL; 196 Vector<IssmDouble> *U_north_grd = NULL; 197 Vector<IssmDouble> *U_east_grd = NULL; 198 Vector<IssmDouble> *bedrock = NULL; 199 Vector<IssmDouble> *bedrockeast = NULL; 200 Vector<IssmDouble> *bedrocknorth = NULL; 201 Vector<IssmDouble> *geoid= NULL; 104 202 SealevelMasks* masks=NULL; 105 203 … … 113 211 IssmDouble dt; 114 212 IssmDouble oceanarea; 115 int bp_compute_fingerprints=0; 116 117 213 int bp_compute_fingerprints=0; 214 118 215 /*Verbose: */ 119 216 if(VerboseSolution()) _printf0_(" computing GRD sea level patterns\n"); … … 122 219 femmodel->parameters->FindParam(&iscoupler,TransientIscouplerEnum); 123 220 femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum); 124 femmodel->parameters->FindParam(&count,Sealevel riseRunCountEnum);221 femmodel->parameters->FindParam(&count,SealevelchangeRunCountEnum); 125 222 femmodel->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum); 126 223 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); … … 136 233 * so make sure we are identified as being the Earth.:*/ 137 234 modelid=1; earthid=1; 138 /* in addition, if we are running solution_type Sealevel riseSolutionEnum, make sure we235 /* in addition, if we are running solution_type SealevelchangeSolutionEnum, make sure we 139 236 * run, irresepective of the time settings:*/ 140 237 count=frequency; … … 148 245 /*increment counter, or call solution core if count==frequency:*/ 149 246 if (count<frequency){ 150 count++; femmodel->parameters->SetParam(count,Sealevel riseRunCountEnum);247 count++; femmodel->parameters->SetParam(count,SealevelchangeRunCountEnum); 151 248 return; 152 249 } 153 250 154 /*call sea-level rise sub cores:*/251 /*call sea-level change sub cores:*/ 155 252 if(iscoupler){ 156 253 /*transfer cumulated deltathickness forcing from ice caps to earth model: */ 157 TransferForcing(femmodel,Sealevel riseCumDeltathicknessEnum);254 TransferForcing(femmodel,SealevelchangeCumDeltathicknessEnum); 158 255 159 256 /*we have accumulated thicknesses, dump them in deltathcikness: */ 160 if(modelid==earthid)InputDuplicatex(femmodel,Sealevel riseCumDeltathicknessEnum,SurfaceloadIceThicknessChangeEnum);257 if(modelid==earthid)InputDuplicatex(femmodel,SealevelchangeCumDeltathicknessEnum,SurfaceloadIceThicknessChangeEnum); 161 258 } 162 259 … … 165 262 166 263 /*call masks core: */ 167 masks=sealevel rise_core_masks(femmodel);264 masks=sealevel_masks(femmodel); 168 265 169 266 /*set bottom pressures:*/ 170 267 SetBottomPressure(femmodel); 171 268 172 173 /*call eustatic core (generalized eustatic - Farrel and Clark, Eq 4, 1st, 3rd and 4rd terms on the RHS) */ 174 RSLg_eustatic=sealevelrise_core_eustatic(femmodel,masks,&oceanarea); 175 176 /*call non-eustatic core (ocean loading tems - 2nd and 5th terms on the RHS of Farrel and Clark) */ 177 RSLg=sealevelrise_core_noneustatic(femmodel,masks,RSLg_eustatic,oceanarea); 178 179 /*compute other elastic signatures, such as components of 3-D crustal motion: */ 180 sealevelrise_core_elastic(&U_esa,&U_north_esa,&U_east_esa,femmodel,RSLg,masks); 181 182 /*compute viscosus (GIA) signatures:*/ 183 sealevelrise_core_viscous(&U_gia,&N_gia,femmodel,RSLg); 184 185 /*compute sea-level rise (low-order spherical harmonics coefficients) diagnostics:*/ 186 sealevelrise_diagnostics(femmodel,RSLg); 187 188 /*recover N_esa = U_esa + RSLg:*/ 189 N_esa=U_esa->Duplicate(); U_esa->Copy(N_esa); N_esa->AXPY(RSLg,1); 190 191 /*transform these values into rates (as we only run this once each frequency turn:*/ 192 N_esa_rate=N_esa->Duplicate(); N_esa->Copy(N_esa_rate); N_esa_rate->Scale(1/(dt*frequency)); 193 U_esa_rate=U_esa->Duplicate(); U_esa->Copy(U_esa_rate); U_esa_rate->Scale(1/(dt*frequency)); 194 N_gia_rate=N_gia->Duplicate(); N_gia->Copy(N_gia_rate); N_gia_rate->Scale(1/(dt*frequency)); 195 U_gia_rate=U_gia->Duplicate(); U_gia->Copy(U_gia_rate); U_gia_rate->Scale(1/(dt*frequency)); 196 RSLg_rate=RSLg->Duplicate(); RSLg->Copy(RSLg_rate); RSLg_rate->Scale(1/(dt*frequency)); 197 198 /*get some results into elements:{{{*/ 199 InputUpdateFromVectorx(femmodel,U_esa_rate,SealevelUEsaRateEnum,VertexSIdEnum); 200 InputUpdateFromVectorx(femmodel,N_esa_rate,SealevelNEsaRateEnum,VertexSIdEnum); 201 InputUpdateFromVectorx(femmodel,U_gia_rate,UGiaRateEnum,VertexSIdEnum); 202 InputUpdateFromVectorx(femmodel,N_gia_rate,NGiaRateEnum,VertexSIdEnum); 203 InputUpdateFromVectorx(femmodel,RSLg_rate,SealevelRSLRateEnum,VertexSIdEnum); 204 InputUpdateFromVectorx(femmodel,U_esa,SealevelUEsaEnum,VertexSIdEnum); 205 InputUpdateFromVectorx(femmodel,N_esa,SealevelNEsaEnum,VertexSIdEnum); 206 InputUpdateFromVectorx(femmodel,U_gia,UGiaEnum,VertexSIdEnum); 207 InputUpdateFromVectorx(femmodel,N_gia,NGiaEnum,VertexSIdEnum); 269 /*call barystatic core (generalized eustatic - Farrel and Clark, Eq 4, 1st, 3rd and 4rd terms on the RHS) */ 270 RSLg_barystatic=sealevelchange_core_barystatic(femmodel,masks,&oceanarea); 271 272 /*call self attraction and loading module (ocean loading tems - 2nd and 5th terms on the RHS of Farrel and Clark) */ 273 RSLg=sealevelchange_core_sal(femmodel,masks,RSLg_barystatic,oceanarea); 274 275 /*compute bedrock motion and derive geoid: */ 276 sealevelchange_core_deformation(&N_grd,&U_grd,&U_north_grd,&U_east_grd,femmodel,RSLg,masks); 277 278 /*Update bedrock motion and geoid:*/ 279 GetVectorFromInputsx(&geoid,femmodel,SealevelEnum,VertexSIdEnum); 280 GetVectorFromInputsx(&bedrock,femmodel,BedEnum,VertexSIdEnum); 281 if(horiz){ 282 GetVectorFromInputsx(&bedrockeast,femmodel,BedEastEnum,VertexSIdEnum); 283 GetVectorFromInputsx(&bedrocknorth,femmodel,BedNorthEnum,VertexSIdEnum); 284 } 285 286 geoid->AXPY(N_grd,1); 287 bedrock->AXPY(U_grd,1); 288 if(horiz){ 289 bedrockeast->AXPY(U_east_grd,1); 290 bedrocknorth->AXPY(U_north_grd,1); 291 } 292 293 /*get some of the updates into elements:*/ 294 InputUpdateFromVectorx(femmodel,U_grd,SealevelUEsaEnum,VertexSIdEnum); 295 InputUpdateFromVectorx(femmodel,N_grd,SealevelNEsaEnum,VertexSIdEnum); 208 296 InputUpdateFromVectorx(femmodel,RSLg,SealevelRSLEnum,VertexSIdEnum); 209 InputUpdateFromVectorx(femmodel,RSLg_eustatic,SealevelRSLEustaticEnum,VertexSIdEnum); 210 297 InputUpdateFromVectorx(femmodel,RSLg_barystatic,SealevelRSLBarystaticEnum,VertexSIdEnum); 211 298 if (horiz){ 212 InputUpdateFromVectorx(femmodel,U_north_esa,SealevelUNorthEsaEnum,VertexSIdEnum); // north motion 213 InputUpdateFromVectorx(femmodel,U_east_esa,SealevelUEastEsaEnum,VertexSIdEnum); // east motion 214 } /*}}}*/ 215 } 216 217 if(iscoupler){ 218 /*transfer sea level back to ice caps:*/ 219 TransferSealevel(femmodel,SealevelNEsaRateEnum); 220 TransferSealevel(femmodel,NGiaRateEnum); 221 TransferSealevel(femmodel,SealevelUEsaRateEnum); 222 TransferSealevel(femmodel,UGiaRateEnum); 223 224 //reset cumdeltathickness to 0: 225 InputUpdateFromConstantx(femmodel->inputs,femmodel->elements,0.,SealevelriseCumDeltathicknessEnum); 299 InputUpdateFromVectorx(femmodel,U_north_grd,SealevelUNorthEsaEnum,VertexSIdEnum); 300 InputUpdateFromVectorx(femmodel,U_east_grd,SealevelUEastEsaEnum,VertexSIdEnum); 301 } 226 302 } 227 303 228 304 /*reset counter to 1:*/ 229 femmodel->parameters->SetParam(1,Sealevel riseRunCountEnum); //reset counter.305 femmodel->parameters->SetParam(1,SealevelchangeRunCountEnum); //reset counter. 230 306 231 307 /*free ressources:{{{*/ 232 308 delete RSLg; 233 delete RSLg_rate; 234 delete RSLg_eustatic; 235 delete U_esa; 236 delete U_esa_rate; 237 delete N_esa; 238 delete N_esa_rate; 239 delete BPg; 240 309 delete RSLg_barystatic; 310 delete U_grd; 311 delete N_grd; 312 delete bedrock; 313 delete geoid; 241 314 if(horiz){ 242 delete U_north_esa; 243 delete U_east_esa; 244 } 245 delete N_gia; 246 delete U_gia; 247 delete N_gia_rate; 248 delete U_gia_rate; 249 //delete masks; 315 delete U_north_grd; 316 delete U_east_grd; 317 delete bedrockeast; 318 delete bedrocknorth; 319 } 320 delete masks; 250 321 /*}}}*/ 251 322 … … 255 326 256 327 /*variables:*/ 257 Vector<IssmDouble> *bedrock = NULL; 258 Vector<IssmDouble> *SL = NULL; 328 Vector<IssmDouble> *sealevel = NULL; 259 329 Vector<IssmDouble> *steric_rate_g = NULL; 260 330 Vector<IssmDouble> *dynamic_rate_g = NULL; 261 Vector<IssmDouble> *U_esa_rate= NULL;262 Vector<IssmDouble> *N_esa_rate= NULL;263 Vector<IssmDouble> *U_gia_rate= NULL;264 Vector<IssmDouble> *N_gia_rate= NULL;265 331 266 332 /*parameters: */ … … 268 334 int solution_type; 269 335 IssmDouble dt; 270 int grd=0;271 336 int step; 272 337 IssmDouble time; 338 273 339 IssmDouble cumgmtslr=0; 274 340 IssmDouble cumbslr=0; … … 277 343 278 344 /*Retrieve parameters:*/ 345 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 279 346 femmodel->parameters->FindParam(&isslr,TransientIsslrEnum); 347 348 /*in case we are running SealevelchangeSolutionEnum, then bypass transient settings:*/ 349 if(solution_type==SealevelchangeSolutionEnum)isslr=1; 350 351 /*Should we be here?:*/ 352 if(!isslr)return; 353 354 /*Verbose: */ 355 if(VerboseSolution()) _printf0_(" computing steric sea level change\n"); 356 357 /*Retrieve sealevel and add steric + dynamic rates:*/ 358 GetVectorFromInputsx(&sealevel,femmodel,SealevelEnum,VertexSIdEnum); 359 GetStericRate(&steric_rate_g,femmodel); 360 GetDynamicRate(&dynamic_rate_g,femmodel); 361 362 /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate) * dt + steric_rate + dynamic_rate dt*/ 280 363 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 281 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 282 femmodel->parameters->FindParam(&grd,SolidearthSettingsGRDEnum); 364 sealevel->AXPY(steric_rate_g,dt); 365 sealevel->AXPY(dynamic_rate_g,dt); 366 367 /*cumulate thermal steric rate:*/ 283 368 femmodel->parameters->FindParam(&cumgmtslr,CumGmtslrEnum); 284 369 femmodel->parameters->FindParam(&cumbslr,CumBslrEnum); 285 femmodel->parameters->FindParam(&step,StepEnum); 286 femmodel->parameters->FindParam(&time,TimeEnum); 287 288 /*in case we are running SealevelriseSolutionEnum, then bypass transient settings:*/ 289 if(solution_type==SealevelriseSolutionEnum)isslr=1; 290 291 /*Should we be here?:*/ 292 if(!isslr)return; 293 294 /*Verbose: */ 295 if(VerboseSolution()) _printf0_(" computing steric sea level rise\n"); 296 297 /*Retrieve geoid viscous and elastic rates, bedrock uplift viscous and elastic rates + steric rate, as vectors:*/ 298 GetVectorFromInputsx(&bedrock,femmodel,BedEnum,VertexSIdEnum); 299 GetVectorFromInputsx(&SL,femmodel,SealevelEnum,VertexSIdEnum); 300 GetStericRate(&steric_rate_g,femmodel); 301 GetDynamicRate(&dynamic_rate_g,femmodel); 302 if(grd){ 303 GetVectorFromInputsx(&U_esa_rate,femmodel,SealevelUEsaRateEnum,VertexSIdEnum); 304 GetVectorFromInputsx(&U_gia_rate,femmodel,UGiaRateEnum,VertexSIdEnum); 305 GetVectorFromInputsx(&N_esa_rate,femmodel,SealevelNEsaRateEnum,VertexSIdEnum); 306 GetVectorFromInputsx(&N_gia_rate,femmodel,NGiaRateEnum,VertexSIdEnum); 307 } 308 309 /*Save steric rate, and cumulate it through time, cumulate with barystatic sea level rise, and cumulate through time:*/ 370 310 371 gmtslr=steric_rate_g->Max()*dt; 311 372 cumgmtslr+=gmtslr; 312 373 cumgmslr=cumbslr+cumgmtslr; 374 375 femmodel->parameters->SetParam(cumgmtslr,CumGmtslrEnum); 376 femmodel->parameters->SetParam(cumgmslr,CumGmslrEnum); 377 378 /*Outputs some metrics:*/ 379 femmodel->parameters->FindParam(&step,StepEnum); 380 femmodel->parameters->FindParam(&time,TimeEnum); 381 313 382 femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,GmtslrEnum,gmtslr,step,time)); 314 383 femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,CumGmtslrEnum,cumgmtslr,step,time)); 315 384 femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,CumGmslrEnum,cumgmslr,step,time)); 316 femmodel->parameters->SetParam(cumgmtslr,CumGmtslrEnum);317 318 /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate) * dt + steric_rate + dynamic_rate dt*/319 if(grd){320 SL->AXPY(N_gia_rate,dt);321 SL->AXPY(N_esa_rate,dt);322 }323 SL->AXPY(steric_rate_g,dt);324 SL->AXPY(dynamic_rate_g,dt);325 326 /*compute new bedrock position: */327 if(grd){328 bedrock->AXPY(U_esa_rate,dt);329 bedrock->AXPY(U_gia_rate,dt);330 }331 385 332 386 /*update element inputs:*/ 333 InputUpdateFromVectorx(femmodel,bedrock,BedEnum,VertexSIdEnum); 334 InputUpdateFromVectorx(femmodel,SL,SealevelEnum,VertexSIdEnum); 387 InputUpdateFromVectorx(femmodel,sealevel,SealevelEnum,VertexSIdEnum); 335 388 336 389 /*Free ressources:*/ 337 delete bedrock; 338 delete SL; 390 delete sealevel; 339 391 delete steric_rate_g; 340 392 delete dynamic_rate_g; 341 if(grd){342 delete U_esa_rate;343 delete U_gia_rate;344 delete N_esa_rate;345 delete N_gia_rate;346 }347 393 } 348 394 /*}}}*/ 349 395 350 SealevelMasks* sealevelrise_core_masks(FemModel* femmodel) { /*{{{*/ 396 //Geometry: 397 SealevelMasks* sealevel_masks(FemModel* femmodel) { /*{{{*/ 351 398 352 399 if(VerboseSolution()) _printf0_(" computing sea level masks\n"); … … 363 410 return masks; 364 411 }/*}}}*/ 365 void sealevel rise_core_geometry(FemModel* femmodel) { /*{{{*/412 void sealevelchange_geometry(FemModel* femmodel) { /*{{{*/ 366 413 367 414 /*Geometry core where we compute indices into tables pre computed in the SealevelRiseAnalysis: */ … … 381 428 /*retrieve parameters:*/ 382 429 femmodel->parameters->FindParam(&horiz,SolidearthSettingsHorizEnum); 383 femmodel->parameters->FindParam(&geometrydone,Sealevel riseGeometryDoneEnum);430 femmodel->parameters->FindParam(&geometrydone,SealevelchangeGeometryDoneEnum); 384 431 385 432 if(geometrydone){ … … 396 443 397 444 398 /*Run sealevel risegeometry routine in elements:*/445 /*Run sealevel geometry routine in elements:*/ 399 446 for(Object* & object : femmodel->elements->objects){ 400 447 Element* element=xDynamicCast<Element*>(object); 401 element->Sealevel riseGeometry(latitude,longitude,radius,xx,yy,zz);448 element->SealevelchangeGeometry(latitude,longitude,radius,xx,yy,zz); 402 449 } 403 450 … … 413 460 414 461 /*Record the fact that we ran this module already: */ 415 femmodel->parameters->SetParam(true,Sealevel riseGeometryDoneEnum);462 femmodel->parameters->SetParam(true,SealevelchangeGeometryDoneEnum); 416 463 417 464 418 465 }/*}}}*/ 419 Vector<IssmDouble>* sealevelrise_core_eustatic(FemModel* femmodel,SealevelMasks* masks, IssmDouble* poceanarea){ /*{{{*/ 420 421 /*Eustatic core of the SLR solution (terms that are constant with respect to sea-level)*/ 466 467 //GRD: 468 Vector<IssmDouble>* sealevelchange_core_barystatic(FemModel* femmodel,SealevelMasks* masks, IssmDouble* poceanarea){ /*{{{*/ 469 470 /*Barystatic core of the SLR solution (terms that are constant with respect to sea-level)*/ 422 471 423 472 Vector<IssmDouble> *RSLgi = NULL; … … 464 513 465 514 /*call the bslr main module: */ 466 femmodel->Sealevel riseEustatic(RSLgi,&oceanarea,&bslr, &bslrice, &bslrhydro, &bslrice_partition, &bslrhydro_partition,masks); //this computes515 femmodel->SealevelchangeBarystatic(RSLgi,&oceanarea,&bslr, &bslrice, &bslrhydro, &bslrice_partition, &bslrhydro_partition,masks); //this computes 467 516 468 517 /*we need to average RSLgi over the ocean: RHS term 4 in Eq.4 of Farrel and clarke. Only the elements can do that: */ 469 RSLgi_oceanaverage=femmodel->Sealevel riseOceanAverage(RSLgi,masks, oceanarea);518 RSLgi_oceanaverage=femmodel->SealevelchangeOceanAverage(RSLgi,masks, oceanarea); 470 519 471 520 /*RSLg is the sum of the pure bslr component (term 3) and the contribution from the perturbation to the graviation potential due to the … … 509 558 return RSLgi; 510 559 }/*}}}*/ 511 Vector<IssmDouble>* sealevel rise_core_noneustatic(FemModel* femmodel, SealevelMasks* masks, Vector<IssmDouble>* RSLg_eustatic,IssmDouble oceanarea){ /*{{{*/512 513 /* sealevelrise_core_noneustatic.cpp //thiscomputes the contributions from Eq.4 of Farrel and Clarke, rhs terms 2 and 5.514 non eustaticcore of the SLR solution */560 Vector<IssmDouble>* sealevelchange_core_sal(FemModel* femmodel, SealevelMasks* masks, Vector<IssmDouble>* RSLg_barystatic,IssmDouble oceanarea){ /*{{{*/ 561 562 /*this core computes the contributions from Eq.4 of Farrel and Clarke, rhs terms 2 and 5. 563 sal core of the SLR solution */ 515 564 516 565 Vector<IssmDouble> *RSLg = NULL; … … 549 598 RSLg = new Vector<IssmDouble>(gsize); 550 599 RSLg->Assemble(); 551 RSLg_ eustatic->Copy(RSLg); //first initialize RSLg with the eustatic component computed in sealevelrise_core_eustatic.600 RSLg_barystatic->Copy(RSLg); //first initialize RSLg with the barystatic component computed in sealevelchange_core_barystatic. 552 601 553 602 RSLg_old = new Vector<IssmDouble>(gsize); … … 560 609 for(;;){ 561 610 562 //save pointer to old sea level rise611 //save pointer to old sea level 563 612 delete RSLg_old; RSLg_old=RSLg; 564 613 … … 567 616 RSLgo = new Vector<IssmDouble>(gsize); RSLgo->Assemble(); 568 617 569 /*call the non eustaticmodule: */570 femmodel->Sealevel riseNonEustatic(RSLgo, RSLg_old, masks, verboseconvolution);618 /*call the sal module: */ 619 femmodel->SealevelchangeSal(RSLgo, RSLg_old, masks, verboseconvolution); 571 620 572 621 /*assemble solution vector: */ … … 577 626 /*call rotational feedback module: */ 578 627 RSLgo_rot = new Vector<IssmDouble>(gsize); RSLgo_rot->Assemble(); 579 femmodel->Sealevel riseRotationalFeedback(RSLgo_rot,RSLg_old,&Ixz,&Iyz,&Izz, masks);628 femmodel->SealevelchangeRotationalFeedback(RSLgo_rot,RSLg_old,&Ixz,&Iyz,&Izz, masks); 580 629 RSLgo_rot->Assemble(); 581 630 … … 589 638 590 639 /*we need to average RSLgo over the ocean: RHS term 5 in Eq.4 of Farrel and clarke. Only the elements can do that: */ 591 RSLgo_oceanaverage=femmodel->Sealevel riseOceanAverage(RSLgo,masks, oceanarea);592 593 /*RSLg is the sum of the eustatic term, and the ocean terms: */594 RSLg_ eustatic->Copy(RSLg); RSLg->AXPY(RSLgo,1);640 RSLgo_oceanaverage=femmodel->SealevelchangeOceanAverage(RSLgo,masks, oceanarea); 641 642 /*RSLg is the sum of the barystatic term, and the ocean terms: */ 643 RSLg_barystatic->Copy(RSLg); RSLg->AXPY(RSLgo,1); 595 644 RSLg->Shift(-RSLgo_oceanaverage); 596 645 … … 625 674 return RSLg; 626 675 } /*}}}*/ 627 void sealevelrise_core_elastic(Vector<IssmDouble>** pU_esa, Vector<IssmDouble>** pU_north_esa,Vector<IssmDouble>** pU_east_esa,FemModel* femmodel,Vector<IssmDouble>* RSLg, SealevelMasks* masks){ /*{{{*/ 628 629 Vector<IssmDouble> *U_esa = NULL; 630 Vector<IssmDouble> *U_north_esa = NULL; 631 Vector<IssmDouble> *U_east_esa = NULL; 676 void sealevelchange_core_deformation(Vector<IssmDouble>** pN_grd, Vector<IssmDouble>** pU_grd, Vector<IssmDouble>** pU_north_grd,Vector<IssmDouble>** pU_east_grd,FemModel* femmodel,Vector<IssmDouble>* RSLg, SealevelMasks* masks){ /*{{{*/ 677 678 Vector<IssmDouble> *U_grd = NULL; 679 Vector<IssmDouble> *N_grd = NULL; 680 Vector<IssmDouble> *U_north_grd = NULL; 681 Vector<IssmDouble> *U_east_grd = NULL; 632 682 633 683 /*parameters: */ … … 652 702 653 703 /*intialize vectors:*/ 654 U_esa = new Vector<IssmDouble>(gsize); 704 U_grd = new Vector<IssmDouble>(gsize); 705 N_grd = new Vector<IssmDouble>(gsize); 655 706 if (horiz){ 656 U_north_ esa= new Vector<IssmDouble>(gsize);657 U_east_ esa= new Vector<IssmDouble>(gsize);658 } 659 707 U_north_grd = new Vector<IssmDouble>(gsize); 708 U_east_grd = new Vector<IssmDouble>(gsize); 709 } 710 660 711 /*retrieve geometric information: */ 661 712 VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); … … 663 714 664 715 /*call the elastic main modlule:*/ 665 femmodel->Sealevel riseElastic(U_esa,U_north_esa,U_east_esa,RSLg, masks);716 femmodel->SealevelchangeDeformation(N_grd, U_grd,U_north_grd,U_east_grd,RSLg, masks); 666 717 667 718 /*Assign output pointers:*/ 668 *pU_esa=U_esa; 719 *pU_grd=U_grd; 720 *pN_grd=N_grd; 669 721 if(horiz){ 670 *pU_east_ esa=U_east_esa;671 *pU_north_ esa=U_north_esa;722 *pU_east_grd=U_east_grd; 723 *pU_north_grd=U_north_grd; 672 724 } 673 725 … … 681 733 } 682 734 /*}}}*/ 683 void sealevelrise_core_viscous(Vector<IssmDouble>** pU_gia, Vector<IssmDouble>** pN_gia,FemModel* femmodel,Vector<IssmDouble>* RSLg){ /*{{{*/ 684 685 /*variables:*/ 686 Vector<IssmDouble> *U_gia = NULL; 687 Vector<IssmDouble> *N_gia = NULL; 688 689 /*parameters:*/ 690 int frequency; 691 IssmDouble dt; 692 693 if(VerboseSolution()) _printf0_(" computing viscous components\n"); 694 695 /*retrieve some parameters:*/ 696 femmodel->parameters->FindParam(&frequency,SolidearthSettingsRunFrequencyEnum); 697 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 698 699 /*recover GIA rates:*/ 700 GetVectorFromInputsx(&U_gia,femmodel,UGiaRateEnum,VertexSIdEnum); 701 GetVectorFromInputsx(&N_gia,femmodel,NGiaRateEnum,VertexSIdEnum); 702 703 /*we just loaded rates, that's not what's being asked, scale by time:*/ 704 U_gia->Scale(frequency*dt); 705 N_gia->Scale(frequency*dt); 706 707 /*Assign output pointers:*/ 708 *pU_gia=U_gia; 709 *pN_gia=N_gia; 710 711 } 712 /*}}}*/ 713 void sealevelrise_diagnostics(FemModel* femmodel,Vector<IssmDouble>* RSLg){ /*{{{*/ 714 715 /*compute spherical harmonics deg 1 and deg 2 coefficeints:*/ 716 717 } 718 /*}}}*/ 735 736 //Ocean: 719 737 void GetDynamicRate(Vector<IssmDouble> ** pdynamic_rate_g, FemModel* femmodel){ /*{{{*/ 720 738 … … 837 855 /*}}}*/ 838 856 839 /* support routines:*/857 /*Support routines:*/ 840 858 void TransferForcing(FemModel* femmodel,int forcingenum){ /*{{{*/ 841 859 … … 913 931 914 932 /*Retrieve transition vectors, used to plug from each ice cap into the global forcing:*/ 915 femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,Sealevel riseTransitionsEnum);933 femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,SealevelchangeTransitionsEnum); 916 934 917 935 if(ntransitions!=earthid)_error_("TransferForcing error message: number of transition vectors is not equal to the number of icecaps!"); … … 1019 1037 1020 1038 /*Retrieve transition vectors, used to figure out global forcing contribution to each ice cap's own elements: */ 1021 femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,Sealevel riseTransitionsEnum);1039 femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,SealevelchangeTransitionsEnum); 1022 1040 1023 1041 if(ntransitions!=earthid)_error_("TransferSeaLevel error message: number of transition vectors is not equal to the number of icecaps!"); … … 1087 1105 /*This mass transport module for the Earth is because we might have thickness variations as spcs 1088 1106 * specified in the md.slr class, outside of what we will get from the icecaps. That's why we get t 1089 * the thickness variations from Sealevel riseSpcthicknessEnum.*/1107 * the thickness variations from SealevelchangeSpcthicknessEnum.*/ 1090 1108 1091 1109 /*No mass transport module was called, so we are just going to retrieve the geometry thickness … … 1095 1113 nv=femmodel->vertices->NumberOfVertices(); 1096 1114 1097 GetVectorFromInputsx(&newthickness,femmodel,Sealevel riseSpcthicknessEnum,VertexSIdEnum);1098 GetVectorFromInputsx(&oldthickness,femmodel,Sealevel riseSpcthicknessEnum,VertexSIdEnum,time-dt);*/1115 GetVectorFromInputsx(&newthickness,femmodel,SealevelchangeSpcthicknessEnum,VertexSIdEnum); 1116 GetVectorFromInputsx(&oldthickness,femmodel,SealevelchangeSpcthicknessEnum,VertexSIdEnum,time-dt);*/ 1099 1117 1100 1118 /*compute deltathickness: */ … … 1106 1124 1107 1125 /*add to cumulated delta thickness: */ 1108 /*GetVectorFromInputsx(&cumdeltathickness,femmodel,Sealevel riseCumDeltathicknessEnum,VertexSIdEnum);1126 /*GetVectorFromInputsx(&cumdeltathickness,femmodel,SealevelchangeCumDeltathicknessEnum,VertexSIdEnum); 1109 1127 cumdeltathickness->AXPY(deltathickness,1); 1110 InputUpdateFromVectorx(femmodel,cumdeltathickness,Sealevel riseCumDeltathicknessEnum,VertexSIdEnum);*/1128 InputUpdateFromVectorx(femmodel,cumdeltathickness,SealevelchangeCumDeltathicknessEnum,VertexSIdEnum);*/ 1111 1129 1112 1130 /*free ressources:*/ -
issm/trunk-jpl/src/c/cores/transient_core.cpp
r25829 r25947 62 62 #endif 63 63 64 if(isslr) sealevel rise_core_geometry(femmodel);64 if(isslr) sealevelchange_geometry(femmodel); 65 65 66 66 while(time < finaltime - (yts*DBL_EPSILON)){ //make sure we run up to finaltime. … … 235 235 if(isesa) esa_core(femmodel); 236 236 237 /*Sea level rise: */237 /*Sea level change: */ 238 238 if(isslr){ 239 if(VerboseSolution()) _printf0_(" computing sea level rise\n");239 if(VerboseSolution()) _printf0_(" computing sea level change\n"); 240 240 sealevelchange_core(femmodel); 241 241 } … … 275 275 femmodel->parameters->FindParam(&isslr,TransientIsslrEnum); 276 276 femmodel->parameters->FindParam(&checkpoint_frequency,SettingsCheckpointFrequencyEnum); _assert_(checkpoint_frequency>0); 277 if(isslr) sealevel rise_core_geometry(femmodel);277 if(isslr) sealevelchange_geometry(femmodel); 278 278 279 279 std::vector<IssmDouble> time_all; -
issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
r25767 r25947 160 160 161 161 /*Here, we put all the code that cannot be handled any other place: */ 162 if (strncmp(root,"SurfaceloadModelid",18)==0){ 162 if (strncmp(root,"SurfaceloadModelid",18)==0){ //surface load in solid earth class {{{ 163 163 164 164 if(VerboseQmu()){ … … 178 178 MmeToInput(femmodel,distributed_values,variable_partition,npart,MaskOceanLevelsetEnum, P1Enum); 179 179 180 } 180 } /*}}}*/ 181 if (strncmp(root,"SolidearthExternalModelid",18)==0){ //external solid earth solution in solid earth class {{{ 182 183 if(VerboseQmu()){ 184 _printf0_(" SolidearthExternalModelid MME, with ids: "); 185 for (int i=0;i<npart;i++)_printf0_((int)distributed_values[i] << " "); 186 _printf0_("\n"); 187 } 188 189 if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalDisplacementEastRateEnum)==DatasetInputEnum) 190 MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalDisplacementEastRateEnum, P1Enum); 191 192 if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalDisplacementUpRateEnum)==DatasetInputEnum) 193 MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalDisplacementUpRateEnum, P1Enum); 194 195 if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalDisplacementNorthRateEnum)==DatasetInputEnum) 196 MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalDisplacementNorthRateEnum, P1Enum); 197 198 if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalGeoidRateEnum)==DatasetInputEnum) 199 MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalGeoidRateEnum, P1Enum); 200 201 if (femmodel->inputs->GetInputObjectEnum(SolidearthExternalBarystaticSeaLevelRateEnum)==DatasetInputEnum) 202 MmeToInput(femmodel,distributed_values,variable_partition,npart,SolidearthExternalBarystaticSeaLevelRateEnum, P1Enum); 203 } /*}}}*/ 204 181 205 else _error_("InputUpdateSpecialtyCode error message: " << root << " not supported yet!"); 182 206 … … 241 265 transientinput2->Configure(femmodel->parameters); 242 266 } //}}} 267 void MmeToInputFromId(FemModel* femmodel,int id, int rootenum, int interpolationenum){ /*{{{*/ 268 269 TransientInput* transientinput = NULL; 270 TransientInput* transientinput2 = NULL; 271 Tria* element = NULL; 272 IssmDouble value; 273 IssmDouble* values = NULL; 274 IssmDouble* times = NULL; 275 int N; 276 277 /*find thickness dataset: */ 278 DatasetInput* datasetinput = femmodel->inputs->GetDatasetInput(rootenum); 279 280 /*Initialize new transient input: */ 281 transientinput = datasetinput->GetTransientInputByOffset(0); _assert_(transientinput); 282 transientinput->GetAllTimes(×,&N); 283 femmodel->inputs->SetTransientInput(DummyEnum,times,N); 284 transientinput2 = femmodel->inputs->GetTransientInput(DummyEnum); 285 286 for(Object* & object : femmodel->elements->objects){ 287 Tria* element=xDynamicCast<Tria*>(object); 288 289 /*recover the right field from the mme: */ 290 transientinput = datasetinput->GetTransientInputByOffset(id); _assert_(transientinput); 291 292 /*copy values from the transientinput to the final transientinput2: */ 293 for (int j=0;j<N;j++){ 294 TriaInput* tria_input=transientinput->GetTriaInput(j); 295 element->InputServe(tria_input); 296 if(interpolationenum==P0Enum){ 297 value=tria_input->element_values[0]; 298 transientinput2->AddTriaTimeInput( j,1,&(element->lid),&value,P0Enum); 299 } 300 else if(interpolationenum==P1Enum){ 301 302 /*Get values and lid list*/ 303 const int numvertices = element->GetNumberOfVertices(); 304 int *vertexlids = xNew<int>(numvertices); 305 int *vertexsids = xNew<int>(numvertices); 306 307 /*Recover vertices ids needed to initialize inputs*/ 308 element->GetVerticesLidList(&vertexlids[0]); 309 element->GetVerticesSidList(&vertexsids[0]); 310 values=tria_input->element_values; 311 transientinput2->AddTriaTimeInput( j,numvertices,vertexlids,values,P1Enum); 312 } 313 } 314 } 315 316 /*wipe out existing SurfaceloadIceThicknessChangeEnum dataset:*/ 317 femmodel->inputs->ChangeEnum(DummyEnum,rootenum); 318 319 //reconfigure: 320 transientinput2->Configure(femmodel->parameters); 321 } //}}} 243 322 void InputScaleFromDakotax(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* partition, int npart, int nt, int name){ /*{{{*/ 244 323 -
issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.h
r25258 r25947 11 11 void InputUpdateSpecialtyCode(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* variable_partition,int npart,char* root); 12 12 void MmeToInput(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* variable_partition,int npart,int rootenum, int interpolationenum); 13 void MmeToInputFromId(FemModel* femmodel,int id, int rootenum, int interpolationenum); 13 14 void InputScaleFromDakotax(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* partition, int npart, int nt, int name); 14 15 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r25777 r25947 63 63 parameters->AddObject(iomodel->CopyConstantObject("md.calving.law",CalvingLawEnum)); 64 64 parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.parameterization",FrontalForcingsParamEnum)); 65 parameters->AddObject(new IntParam(Sealevel riseRunCountEnum,1));65 parameters->AddObject(new IntParam(SealevelchangeRunCountEnum,1)); 66 66 67 67 {/*This is specific to ice...*/ -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r25942 r25947 138 138 syn keyword cConstant DslModelidEnum 139 139 syn keyword cConstant DslNummodelsEnum 140 syn keyword cConstant SolidearthIsExternalEnum 141 syn keyword cConstant SolidearthExternalNatureEnum 142 syn keyword cConstant SolidearthExternalModelidEnum 143 syn keyword cConstant SolidearthExternalNummodelsEnum 140 144 syn keyword cConstant DslComputeFingerprintsEnum 141 145 syn keyword cConstant EarthIdEnum … … 338 342 syn keyword cConstant RotationalAngularVelocityEnum 339 343 syn keyword cConstant SolidearthSettingsElasticEnum 340 syn keyword cConstant Sealevel riseGeometryDoneEnum344 syn keyword cConstant SealevelchangeGeometryDoneEnum 341 345 syn keyword cConstant RotationalEquatorialMoiEnum 342 346 syn keyword cConstant TidalLoveHEnum … … 347 351 syn keyword cConstant LoadLoveKEnum 348 352 syn keyword cConstant LoadLoveLEnum 349 syn keyword cConstant Sealevel riseGRigidEnum350 syn keyword cConstant Sealevel riseGElasticEnum353 syn keyword cConstant SealevelchangeGRigidEnum 354 syn keyword cConstant SealevelchangeGElasticEnum 351 355 syn keyword cConstant SolidearthSettingsComputesealevelchangeEnum 352 356 syn keyword cConstant SolidearthSettingsGRDEnum 353 357 syn keyword cConstant SolidearthSettingsGlfractionEnum 354 358 syn keyword cConstant SolidearthSettingsRunFrequencyEnum 355 syn keyword cConstant Sealevel riseHElasticEnum359 syn keyword cConstant SealevelchangeHElasticEnum 356 360 syn keyword cConstant SolidearthSettingsHorizEnum 357 361 syn keyword cConstant SolidearthSettingsMaxiterEnum … … 359 363 syn keyword cConstant RotationalPolarMoiEnum 360 364 syn keyword cConstant SolidearthSettingsReltolEnum 361 syn keyword cConstant Sealevel riseRequestedOutputsEnum365 syn keyword cConstant SealevelchangeRequestedOutputsEnum 362 366 syn keyword cConstant SolidearthSettingsRigidEnum 363 367 syn keyword cConstant SolidearthSettingsRotationEnum 364 syn keyword cConstant Sealevel riseRunCountEnum365 syn keyword cConstant Sealevel riseTransitionsEnum366 syn keyword cConstant Sealevel riseUElasticEnum368 syn keyword cConstant SealevelchangeRunCountEnum 369 syn keyword cConstant SealevelchangeTransitionsEnum 370 syn keyword cConstant SealevelchangeUElasticEnum 367 371 syn keyword cConstant SettingsIoGatherEnum 368 372 syn keyword cConstant SettingsNumResultsOnNodesEnum … … 532 536 syn keyword cConstant BaseSlopeYEnum 533 537 syn keyword cConstant BedEnum 538 syn keyword cConstant BedEastEnum 539 syn keyword cConstant BedNorthEnum 534 540 syn keyword cConstant BedSlopeXEnum 535 541 syn keyword cConstant BedSlopeYEnum … … 710 716 syn keyword cConstant RheologyBbarAbsGradientEnum 711 717 syn keyword cConstant SealevelEnum 712 syn keyword cConstant Sealevel EustaticMaskEnum713 syn keyword cConstant Sealevel EustaticOceanMaskEnum718 syn keyword cConstant SealevelBarystaticMaskEnum 719 syn keyword cConstant SealevelBarystaticOceanMaskEnum 714 720 syn keyword cConstant SealevelNEsaEnum 715 721 syn keyword cConstant SealevelNEsaRateEnum … … 720 726 syn keyword cConstant BslrRateEnum 721 727 syn keyword cConstant GmtslrEnum 722 syn keyword cConstant SealevelRSLEustaticEnum 723 syn keyword cConstant SealevelRSLEustaticRateEnum 728 syn keyword cConstant SealevelRSLBarystaticEnum 724 729 syn keyword cConstant SealevelRSLRateEnum 725 730 syn keyword cConstant SealevelUEastEsaEnum … … 727 732 syn keyword cConstant SealevelUEsaRateEnum 728 733 syn keyword cConstant SealevelUNorthEsaEnum 729 syn keyword cConstant Sealevel riseCumDeltathicknessEnum730 syn keyword cConstant Sealevel riseCumDeltathicknessOldEnum734 syn keyword cConstant SealevelchangeCumDeltathicknessEnum 735 syn keyword cConstant SealevelchangeCumDeltathicknessOldEnum 731 736 syn keyword cConstant SurfaceloadOtherEnum 732 737 syn keyword cConstant SurfaceloadIceThicknessChangeEnum 733 738 syn keyword cConstant SurfaceloadWaterHeightChangeEnum 734 syn keyword cConstant Sealevel riseIndicesEnum735 syn keyword cConstant Sealevel riseGEnum736 syn keyword cConstant Sealevel riseGUEnum737 syn keyword cConstant Sealevel riseGEEnum738 syn keyword cConstant Sealevel riseGNEnum739 syn keyword cConstant SealevelchangeIndicesEnum 740 syn keyword cConstant SealevelchangeGEnum 741 syn keyword cConstant SealevelchangeGUEnum 742 syn keyword cConstant SealevelchangeGEEnum 743 syn keyword cConstant SealevelchangeGNEnum 739 744 syn keyword cConstant SedimentHeadEnum 740 745 syn keyword cConstant SedimentHeadOldEnum … … 844 849 syn keyword cConstant SmbZTopEnum 845 850 syn keyword cConstant SmbZYEnum 851 syn keyword cConstant SolidearthExternalDisplacementEastRateEnum 852 syn keyword cConstant SolidearthExternalDisplacementNorthRateEnum 853 syn keyword cConstant SolidearthExternalDisplacementUpRateEnum 854 syn keyword cConstant SolidearthExternalGeoidRateEnum 855 syn keyword cConstant SolidearthExternalBarystaticSeaLevelRateEnum 846 856 syn keyword cConstant StrainRateeffectiveEnum 847 857 syn keyword cConstant StrainRateparallelEnum … … 1303 1313 syn keyword cConstant SealevelNmotionEnum 1304 1314 syn keyword cConstant SealevelUmotionEnum 1305 syn keyword cConstant Sealevel riseAnalysisEnum1306 syn keyword cConstant Sealevel riseSolutionEnum1315 syn keyword cConstant SealevelchangeAnalysisEnum 1316 syn keyword cConstant SealevelchangeSolutionEnum 1307 1317 syn keyword cConstant SegEnum 1308 1318 syn keyword cConstant SegInputEnum … … 1399 1409 syn keyword cType Cfsurfacesquare 1400 1410 syn keyword cType Channel 1401 syn keyword cType classes1402 1411 syn keyword cType Constraint 1403 1412 syn keyword cType Constraints … … 1406 1415 syn keyword cType ControlInput 1407 1416 syn keyword cType Covertree 1417 syn keyword cType DataSetParam 1408 1418 syn keyword cType DatasetInput 1409 syn keyword cType DataSetParam1410 1419 syn keyword cType Definition 1411 1420 syn keyword cType DependentObject … … 1420 1429 syn keyword cType ElementInput 1421 1430 syn keyword cType ElementMatrix 1431 syn keyword cType ElementVector 1422 1432 syn keyword cType Elements 1423 syn keyword cType ElementVector1424 1433 syn keyword cType ExponentialVariogram 1425 1434 syn keyword cType ExternalResult … … 1428 1437 syn keyword cType Friction 1429 1438 syn keyword cType Gauss 1430 syn keyword cType GaussianVariogram1431 syn keyword cType gaussobjects1432 1439 syn keyword cType GaussPenta 1433 1440 syn keyword cType GaussSeg 1434 1441 syn keyword cType GaussTetra 1435 1442 syn keyword cType GaussTria 1443 syn keyword cType GaussianVariogram 1436 1444 syn keyword cType GenericExternalResult 1437 1445 syn keyword cType GenericOption … … 1448 1456 syn keyword cType IssmDirectApplicInterface 1449 1457 syn keyword cType IssmParallelDirectApplicInterface 1450 syn keyword cType krigingobjects1451 1458 syn keyword cType Load 1452 1459 syn keyword cType Loads … … 1459 1466 syn keyword cType Matice 1460 1467 syn keyword cType Matlitho 1461 syn keyword cType matrixobjects1462 1468 syn keyword cType MatrixParam 1463 1469 syn keyword cType Misfit … … 1472 1478 syn keyword cType Observations 1473 1479 syn keyword cType Option 1480 syn keyword cType OptionUtilities 1474 1481 syn keyword cType Options 1475 syn keyword cType OptionUtilities1476 1482 syn keyword cType Param 1477 1483 syn keyword cType Parameters … … 1487 1493 syn keyword cType Regionaloutput 1488 1494 syn keyword cType Results 1495 syn keyword cType RiftStruct 1489 1496 syn keyword cType Riftfront 1490 syn keyword cType RiftStruct1491 1497 syn keyword cType SealevelMasks 1492 1498 syn keyword cType Seg 1493 1499 syn keyword cType SegInput 1500 syn keyword cType SegRef 1494 1501 syn keyword cType Segment 1495 syn keyword cType SegRef1496 1502 syn keyword cType SpcDynamic 1497 1503 syn keyword cType SpcStatic … … 1512 1518 syn keyword cType Vertex 1513 1519 syn keyword cType Vertices 1520 syn keyword cType classes 1521 syn keyword cType gaussobjects 1522 syn keyword cType krigingobjects 1523 syn keyword cType matrixobjects 1514 1524 syn keyword cType AdjointBalancethickness2Analysis 1515 1525 syn keyword cType AdjointBalancethicknessAnalysis … … 1530 1540 syn keyword cType FreeSurfaceBaseAnalysis 1531 1541 syn keyword cType FreeSurfaceTopAnalysis 1542 syn keyword cType GLheightadvectionAnalysis 1532 1543 syn keyword cType GiaAnalysis 1533 syn keyword cType GLheightadvectionAnalysis1534 1544 syn keyword cType HydrologyDCEfficientAnalysis 1535 1545 syn keyword cType HydrologyDCInefficientAnalysis … … 1544 1554 syn keyword cType MasstransportAnalysis 1545 1555 syn keyword cType MeltingAnalysis 1546 syn keyword cType Sealevel riseAnalysis1556 syn keyword cType SealevelchangeAnalysis 1547 1557 syn keyword cType SmbAnalysis 1548 1558 syn keyword cType SmoothAnalysis -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r25942 r25947 132 132 DslModelidEnum, 133 133 DslNummodelsEnum, 134 SolidearthIsExternalEnum, 135 SolidearthExternalNatureEnum, 136 SolidearthExternalModelidEnum, 137 SolidearthExternalNummodelsEnum, 134 138 DslComputeFingerprintsEnum, 135 139 EarthIdEnum, … … 332 336 RotationalAngularVelocityEnum, 333 337 SolidearthSettingsElasticEnum, 334 Sealevel riseGeometryDoneEnum,338 SealevelchangeGeometryDoneEnum, 335 339 RotationalEquatorialMoiEnum, 336 340 TidalLoveHEnum, … … 341 345 LoadLoveKEnum, 342 346 LoadLoveLEnum, 343 Sealevel riseGRigidEnum,344 Sealevel riseGElasticEnum,347 SealevelchangeGRigidEnum, 348 SealevelchangeGElasticEnum, 345 349 SolidearthSettingsComputesealevelchangeEnum, 346 350 SolidearthSettingsGRDEnum, 347 351 SolidearthSettingsGlfractionEnum, 348 352 SolidearthSettingsRunFrequencyEnum, 349 Sealevel riseHElasticEnum,353 SealevelchangeHElasticEnum, 350 354 SolidearthSettingsHorizEnum, 351 355 SolidearthSettingsMaxiterEnum, … … 353 357 RotationalPolarMoiEnum, 354 358 SolidearthSettingsReltolEnum, 355 Sealevel riseRequestedOutputsEnum,359 SealevelchangeRequestedOutputsEnum, 356 360 SolidearthSettingsRigidEnum, 357 361 SolidearthSettingsRotationEnum, 358 Sealevel riseRunCountEnum,359 Sealevel riseTransitionsEnum,360 Sealevel riseUElasticEnum,362 SealevelchangeRunCountEnum, 363 SealevelchangeTransitionsEnum, 364 SealevelchangeUElasticEnum, 361 365 SettingsIoGatherEnum, 362 366 SettingsNumResultsOnNodesEnum, … … 528 532 BaseSlopeYEnum, 529 533 BedEnum, 534 BedEastEnum, 535 BedNorthEnum, 530 536 BedSlopeXEnum, 531 537 BedSlopeYEnum, … … 706 712 RheologyBbarAbsGradientEnum, 707 713 SealevelEnum, 708 Sealevel EustaticMaskEnum,709 Sealevel EustaticOceanMaskEnum,714 SealevelBarystaticMaskEnum, 715 SealevelBarystaticOceanMaskEnum, 710 716 SealevelNEsaEnum, 711 717 SealevelNEsaRateEnum, … … 716 722 BslrRateEnum, 717 723 GmtslrEnum, 718 SealevelRSLEustaticEnum, 719 SealevelRSLEustaticRateEnum, 724 SealevelRSLBarystaticEnum, 720 725 SealevelRSLRateEnum, 721 726 SealevelUEastEsaEnum, … … 723 728 SealevelUEsaRateEnum, 724 729 SealevelUNorthEsaEnum, 725 Sealevel riseCumDeltathicknessEnum,726 Sealevel riseCumDeltathicknessOldEnum,730 SealevelchangeCumDeltathicknessEnum, 731 SealevelchangeCumDeltathicknessOldEnum, 727 732 SurfaceloadOtherEnum, 728 733 SurfaceloadIceThicknessChangeEnum, 729 734 SurfaceloadWaterHeightChangeEnum, 730 Sealevel riseIndicesEnum,731 Sealevel riseGEnum,732 Sealevel riseGUEnum,733 Sealevel riseGEEnum,734 Sealevel riseGNEnum,735 SealevelchangeIndicesEnum, 736 SealevelchangeGEnum, 737 SealevelchangeGUEnum, 738 SealevelchangeGEEnum, 739 SealevelchangeGNEnum, 735 740 SedimentHeadEnum, 736 741 SedimentHeadOldEnum, … … 841 846 SmbZTopEnum, 842 847 SmbZYEnum, 848 SolidearthExternalDisplacementEastRateEnum, 849 SolidearthExternalDisplacementNorthRateEnum, 850 SolidearthExternalDisplacementUpRateEnum, 851 SolidearthExternalGeoidRateEnum, 852 SolidearthExternalBarystaticSeaLevelRateEnum, 843 853 StrainRateeffectiveEnum, 844 854 StrainRateparallelEnum, … … 1302 1312 SealevelNmotionEnum, 1303 1313 SealevelUmotionEnum, 1304 Sealevel riseAnalysisEnum,1305 Sealevel riseSolutionEnum,1314 SealevelchangeAnalysisEnum, 1315 SealevelchangeSolutionEnum, 1306 1316 SegEnum, 1307 1317 SegInputEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r25839 r25947 140 140 case DslModelidEnum : return "DslModelid"; 141 141 case DslNummodelsEnum : return "DslNummodels"; 142 case SolidearthIsExternalEnum : return "SolidearthIsExternal"; 143 case SolidearthExternalNatureEnum : return "SolidearthExternalNature"; 144 case SolidearthExternalModelidEnum : return "SolidearthExternalModelid"; 145 case SolidearthExternalNummodelsEnum : return "SolidearthExternalNummodels"; 142 146 case DslComputeFingerprintsEnum : return "DslComputeFingerprints"; 143 147 case EarthIdEnum : return "EarthId"; … … 340 344 case RotationalAngularVelocityEnum : return "RotationalAngularVelocity"; 341 345 case SolidearthSettingsElasticEnum : return "SolidearthSettingsElastic"; 342 case Sealevel riseGeometryDoneEnum : return "SealevelriseGeometryDone";346 case SealevelchangeGeometryDoneEnum : return "SealevelchangeGeometryDone"; 343 347 case RotationalEquatorialMoiEnum : return "RotationalEquatorialMoi"; 344 348 case TidalLoveHEnum : return "TidalLoveH"; … … 349 353 case LoadLoveKEnum : return "LoadLoveK"; 350 354 case LoadLoveLEnum : return "LoadLoveL"; 351 case Sealevel riseGRigidEnum : return "SealevelriseGRigid";352 case Sealevel riseGElasticEnum : return "SealevelriseGElastic";355 case SealevelchangeGRigidEnum : return "SealevelchangeGRigid"; 356 case SealevelchangeGElasticEnum : return "SealevelchangeGElastic"; 353 357 case SolidearthSettingsComputesealevelchangeEnum : return "SolidearthSettingsComputesealevelchange"; 354 358 case SolidearthSettingsGRDEnum : return "SolidearthSettingsGRD"; 355 359 case SolidearthSettingsGlfractionEnum : return "SolidearthSettingsGlfraction"; 356 360 case SolidearthSettingsRunFrequencyEnum : return "SolidearthSettingsRunFrequency"; 357 case Sealevel riseHElasticEnum : return "SealevelriseHElastic";361 case SealevelchangeHElasticEnum : return "SealevelchangeHElastic"; 358 362 case SolidearthSettingsHorizEnum : return "SolidearthSettingsHoriz"; 359 363 case SolidearthSettingsMaxiterEnum : return "SolidearthSettingsMaxiter"; … … 361 365 case RotationalPolarMoiEnum : return "RotationalPolarMoi"; 362 366 case SolidearthSettingsReltolEnum : return "SolidearthSettingsReltol"; 363 case Sealevel riseRequestedOutputsEnum : return "SealevelriseRequestedOutputs";367 case SealevelchangeRequestedOutputsEnum : return "SealevelchangeRequestedOutputs"; 364 368 case SolidearthSettingsRigidEnum : return "SolidearthSettingsRigid"; 365 369 case SolidearthSettingsRotationEnum : return "SolidearthSettingsRotation"; 366 case Sealevel riseRunCountEnum : return "SealevelriseRunCount";367 case Sealevel riseTransitionsEnum : return "SealevelriseTransitions";368 case Sealevel riseUElasticEnum : return "SealevelriseUElastic";370 case SealevelchangeRunCountEnum : return "SealevelchangeRunCount"; 371 case SealevelchangeTransitionsEnum : return "SealevelchangeTransitions"; 372 case SealevelchangeUElasticEnum : return "SealevelchangeUElastic"; 369 373 case SettingsIoGatherEnum : return "SettingsIoGather"; 370 374 case SettingsNumResultsOnNodesEnum : return "SettingsNumResultsOnNodes"; … … 534 538 case BaseSlopeYEnum : return "BaseSlopeY"; 535 539 case BedEnum : return "Bed"; 540 case BedEastEnum : return "BedEast"; 541 case BedNorthEnum : return "BedNorth"; 536 542 case BedSlopeXEnum : return "BedSlopeX"; 537 543 case BedSlopeYEnum : return "BedSlopeY"; … … 712 718 case RheologyBbarAbsGradientEnum : return "RheologyBbarAbsGradient"; 713 719 case SealevelEnum : return "Sealevel"; 714 case Sealevel EustaticMaskEnum : return "SealevelEustaticMask";715 case Sealevel EustaticOceanMaskEnum : return "SealevelEustaticOceanMask";720 case SealevelBarystaticMaskEnum : return "SealevelBarystaticMask"; 721 case SealevelBarystaticOceanMaskEnum : return "SealevelBarystaticOceanMask"; 716 722 case SealevelNEsaEnum : return "SealevelNEsa"; 717 723 case SealevelNEsaRateEnum : return "SealevelNEsaRate"; … … 722 728 case BslrRateEnum : return "BslrRate"; 723 729 case GmtslrEnum : return "Gmtslr"; 724 case SealevelRSLEustaticEnum : return "SealevelRSLEustatic"; 725 case SealevelRSLEustaticRateEnum : return "SealevelRSLEustaticRate"; 730 case SealevelRSLBarystaticEnum : return "SealevelRSLBarystatic"; 726 731 case SealevelRSLRateEnum : return "SealevelRSLRate"; 727 732 case SealevelUEastEsaEnum : return "SealevelUEastEsa"; … … 729 734 case SealevelUEsaRateEnum : return "SealevelUEsaRate"; 730 735 case SealevelUNorthEsaEnum : return "SealevelUNorthEsa"; 731 case Sealevel riseCumDeltathicknessEnum : return "SealevelriseCumDeltathickness";732 case Sealevel riseCumDeltathicknessOldEnum : return "SealevelriseCumDeltathicknessOld";736 case SealevelchangeCumDeltathicknessEnum : return "SealevelchangeCumDeltathickness"; 737 case SealevelchangeCumDeltathicknessOldEnum : return "SealevelchangeCumDeltathicknessOld"; 733 738 case SurfaceloadOtherEnum : return "SurfaceloadOther"; 734 739 case SurfaceloadIceThicknessChangeEnum : return "SurfaceloadIceThicknessChange"; 735 740 case SurfaceloadWaterHeightChangeEnum : return "SurfaceloadWaterHeightChange"; 736 case Sealevel riseIndicesEnum : return "SealevelriseIndices";737 case Sealevel riseGEnum : return "SealevelriseG";738 case Sealevel riseGUEnum : return "SealevelriseGU";739 case Sealevel riseGEEnum : return "SealevelriseGE";740 case Sealevel riseGNEnum : return "SealevelriseGN";741 case SealevelchangeIndicesEnum : return "SealevelchangeIndices"; 742 case SealevelchangeGEnum : return "SealevelchangeG"; 743 case SealevelchangeGUEnum : return "SealevelchangeGU"; 744 case SealevelchangeGEEnum : return "SealevelchangeGE"; 745 case SealevelchangeGNEnum : return "SealevelchangeGN"; 741 746 case SedimentHeadEnum : return "SedimentHead"; 742 747 case SedimentHeadOldEnum : return "SedimentHeadOld"; … … 846 851 case SmbZTopEnum : return "SmbZTop"; 847 852 case SmbZYEnum : return "SmbZY"; 853 case SolidearthExternalDisplacementEastRateEnum : return "SolidearthExternalDisplacementEastRate"; 854 case SolidearthExternalDisplacementNorthRateEnum : return "SolidearthExternalDisplacementNorthRate"; 855 case SolidearthExternalDisplacementUpRateEnum : return "SolidearthExternalDisplacementUpRate"; 856 case SolidearthExternalGeoidRateEnum : return "SolidearthExternalGeoidRate"; 857 case SolidearthExternalBarystaticSeaLevelRateEnum : return "SolidearthExternalBarystaticSeaLevelRate"; 848 858 case StrainRateeffectiveEnum : return "StrainRateeffective"; 849 859 case StrainRateparallelEnum : return "StrainRateparallel"; … … 1305 1315 case SealevelNmotionEnum : return "SealevelNmotion"; 1306 1316 case SealevelUmotionEnum : return "SealevelUmotion"; 1307 case Sealevel riseAnalysisEnum : return "SealevelriseAnalysis";1308 case Sealevel riseSolutionEnum : return "SealevelriseSolution";1317 case SealevelchangeAnalysisEnum : return "SealevelchangeAnalysis"; 1318 case SealevelchangeSolutionEnum : return "SealevelchangeSolution"; 1309 1319 case SegEnum : return "Seg"; 1310 1320 case SegInputEnum : return "SegInput"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r25839 r25947 143 143 else if (strcmp(name,"DslModelid")==0) return DslModelidEnum; 144 144 else if (strcmp(name,"DslNummodels")==0) return DslNummodelsEnum; 145 else if (strcmp(name,"SolidearthIsExternal")==0) return SolidearthIsExternalEnum; 146 else if (strcmp(name,"SolidearthExternalNature")==0) return SolidearthExternalNatureEnum; 147 else if (strcmp(name,"SolidearthExternalModelid")==0) return SolidearthExternalModelidEnum; 148 else if (strcmp(name,"SolidearthExternalNummodels")==0) return SolidearthExternalNummodelsEnum; 145 149 else if (strcmp(name,"DslComputeFingerprints")==0) return DslComputeFingerprintsEnum; 146 150 else if (strcmp(name,"EarthId")==0) return EarthIdEnum; … … 256 260 else if (strcmp(name,"LoveFrequencies")==0) return LoveFrequenciesEnum; 257 261 else if (strcmp(name,"LoveG0")==0) return LoveG0Enum; 258 else if (strcmp(name,"LoveKernels")==0) return LoveKernelsEnum; 262 else stage=3; 263 } 264 if(stage==3){ 265 if (strcmp(name,"LoveKernels")==0) return LoveKernelsEnum; 259 266 else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum; 260 267 else if (strcmp(name,"LoveNfreq")==0) return LoveNfreqEnum; 261 268 else if (strcmp(name,"LoveR0")==0) return LoveR0Enum; 262 else stage=3; 263 } 264 if(stage==3){ 265 if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum; 269 else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum; 266 270 else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum; 267 271 else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum; … … 346 350 else if (strcmp(name,"RotationalAngularVelocity")==0) return RotationalAngularVelocityEnum; 347 351 else if (strcmp(name,"SolidearthSettingsElastic")==0) return SolidearthSettingsElasticEnum; 348 else if (strcmp(name,"Sealevel riseGeometryDone")==0) return SealevelriseGeometryDoneEnum;352 else if (strcmp(name,"SealevelchangeGeometryDone")==0) return SealevelchangeGeometryDoneEnum; 349 353 else if (strcmp(name,"RotationalEquatorialMoi")==0) return RotationalEquatorialMoiEnum; 350 354 else if (strcmp(name,"TidalLoveH")==0) return TidalLoveHEnum; … … 355 359 else if (strcmp(name,"LoadLoveK")==0) return LoadLoveKEnum; 356 360 else if (strcmp(name,"LoadLoveL")==0) return LoadLoveLEnum; 357 else if (strcmp(name,"Sealevel riseGRigid")==0) return SealevelriseGRigidEnum;358 else if (strcmp(name,"Sealevel riseGElastic")==0) return SealevelriseGElasticEnum;361 else if (strcmp(name,"SealevelchangeGRigid")==0) return SealevelchangeGRigidEnum; 362 else if (strcmp(name,"SealevelchangeGElastic")==0) return SealevelchangeGElasticEnum; 359 363 else if (strcmp(name,"SolidearthSettingsComputesealevelchange")==0) return SolidearthSettingsComputesealevelchangeEnum; 360 364 else if (strcmp(name,"SolidearthSettingsGRD")==0) return SolidearthSettingsGRDEnum; 361 365 else if (strcmp(name,"SolidearthSettingsGlfraction")==0) return SolidearthSettingsGlfractionEnum; 362 366 else if (strcmp(name,"SolidearthSettingsRunFrequency")==0) return SolidearthSettingsRunFrequencyEnum; 363 else if (strcmp(name,"Sealevel riseHElastic")==0) return SealevelriseHElasticEnum;367 else if (strcmp(name,"SealevelchangeHElastic")==0) return SealevelchangeHElasticEnum; 364 368 else if (strcmp(name,"SolidearthSettingsHoriz")==0) return SolidearthSettingsHorizEnum; 365 369 else if (strcmp(name,"SolidearthSettingsMaxiter")==0) return SolidearthSettingsMaxiterEnum; … … 367 371 else if (strcmp(name,"RotationalPolarMoi")==0) return RotationalPolarMoiEnum; 368 372 else if (strcmp(name,"SolidearthSettingsReltol")==0) return SolidearthSettingsReltolEnum; 369 else if (strcmp(name,"Sealevel riseRequestedOutputs")==0) return SealevelriseRequestedOutputsEnum;373 else if (strcmp(name,"SealevelchangeRequestedOutputs")==0) return SealevelchangeRequestedOutputsEnum; 370 374 else if (strcmp(name,"SolidearthSettingsRigid")==0) return SolidearthSettingsRigidEnum; 371 375 else if (strcmp(name,"SolidearthSettingsRotation")==0) return SolidearthSettingsRotationEnum; 372 else if (strcmp(name,"Sealevel riseRunCount")==0) return SealevelriseRunCountEnum;373 else if (strcmp(name,"Sealevel riseTransitions")==0) return SealevelriseTransitionsEnum;374 else if (strcmp(name,"Sealevel riseUElastic")==0) return SealevelriseUElasticEnum;376 else if (strcmp(name,"SealevelchangeRunCount")==0) return SealevelchangeRunCountEnum; 377 else if (strcmp(name,"SealevelchangeTransitions")==0) return SealevelchangeTransitionsEnum; 378 else if (strcmp(name,"SealevelchangeUElastic")==0) return SealevelchangeUElasticEnum; 375 379 else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum; 376 380 else if (strcmp(name,"SettingsNumResultsOnNodes")==0) return SettingsNumResultsOnNodesEnum; … … 379 383 else if (strcmp(name,"SettingsResultsOnNodes")==0) return SettingsResultsOnNodesEnum; 380 384 else if (strcmp(name,"SettingsSbCouplingFrequency")==0) return SettingsSbCouplingFrequencyEnum; 381 else if (strcmp(name,"SettingsSolverResidueThreshold")==0) return SettingsSolverResidueThresholdEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SettingsSolverResidueThreshold")==0) return SettingsSolverResidueThresholdEnum; 382 389 else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum; 383 390 else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum; 384 391 else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum; 392 else if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum; 389 393 else if (strcmp(name,"SmbAccualti")==0) return SmbAccualtiEnum; 390 394 else if (strcmp(name,"SmbAccugrad")==0) return SmbAccugradEnum; … … 502 506 else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum; 503 507 else if (strcmp(name,"Velocity")==0) return VelocityEnum; 504 else if (strcmp(name,"WorldComm")==0) return WorldCommEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"WorldComm")==0) return WorldCommEnum; 505 512 else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum; 506 513 else if (strcmp(name,"InputsSTART")==0) return InputsSTARTEnum; 507 514 else if (strcmp(name,"Adjoint")==0) return AdjointEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 515 else if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 512 516 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 513 517 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; … … 546 550 else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum; 547 551 else if (strcmp(name,"Bed")==0) return BedEnum; 552 else if (strcmp(name,"BedEast")==0) return BedEastEnum; 553 else if (strcmp(name,"BedNorth")==0) return BedNorthEnum; 548 554 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum; 549 555 else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum; … … 623 629 else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum; 624 630 else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum; 625 else if (strcmp(name,"FrictionM")==0) return FrictionMEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"FrictionM")==0) return FrictionMEnum; 626 635 else if (strcmp(name,"FrictionP")==0) return FrictionPEnum; 627 636 else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum; … … 629 638 else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum; 630 639 else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum; 640 else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum; 635 641 else if (strcmp(name,"Frictionf")==0) return FrictionfEnum; 636 642 else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum; … … 727 733 else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum; 728 734 else if (strcmp(name,"Sealevel")==0) return SealevelEnum; 729 else if (strcmp(name,"Sealevel EustaticMask")==0) return SealevelEustaticMaskEnum;730 else if (strcmp(name,"Sealevel EustaticOceanMask")==0) return SealevelEustaticOceanMaskEnum;735 else if (strcmp(name,"SealevelBarystaticMask")==0) return SealevelBarystaticMaskEnum; 736 else if (strcmp(name,"SealevelBarystaticOceanMask")==0) return SealevelBarystaticOceanMaskEnum; 731 737 else if (strcmp(name,"SealevelNEsa")==0) return SealevelNEsaEnum; 732 738 else if (strcmp(name,"SealevelNEsaRate")==0) return SealevelNEsaRateEnum; … … 737 743 else if (strcmp(name,"BslrRate")==0) return BslrRateEnum; 738 744 else if (strcmp(name,"Gmtslr")==0) return GmtslrEnum; 739 else if (strcmp(name,"SealevelRSLEustatic")==0) return SealevelRSLEustaticEnum; 740 else if (strcmp(name,"SealevelRSLEustaticRate")==0) return SealevelRSLEustaticRateEnum; 745 else if (strcmp(name,"SealevelRSLBarystatic")==0) return SealevelRSLBarystaticEnum; 741 746 else if (strcmp(name,"SealevelRSLRate")==0) return SealevelRSLRateEnum; 742 747 else if (strcmp(name,"SealevelUEastEsa")==0) return SealevelUEastEsaEnum; … … 744 749 else if (strcmp(name,"SealevelUEsaRate")==0) return SealevelUEsaRateEnum; 745 750 else if (strcmp(name,"SealevelUNorthEsa")==0) return SealevelUNorthEsaEnum; 746 else if (strcmp(name,"Sealevel riseCumDeltathickness")==0) return SealevelriseCumDeltathicknessEnum;747 else if (strcmp(name,"Sealevel riseCumDeltathicknessOld")==0) return SealevelriseCumDeltathicknessOldEnum;751 else if (strcmp(name,"SealevelchangeCumDeltathickness")==0) return SealevelchangeCumDeltathicknessEnum; 752 else if (strcmp(name,"SealevelchangeCumDeltathicknessOld")==0) return SealevelchangeCumDeltathicknessOldEnum; 748 753 else if (strcmp(name,"SurfaceloadOther")==0) return SurfaceloadOtherEnum; 749 else if (strcmp(name,"SurfaceloadIceThicknessChange")==0) return SurfaceloadIceThicknessChangeEnum;750 else if (strcmp(name,"SurfaceloadWaterHeightChange")==0) return SurfaceloadWaterHeightChangeEnum;751 else if (strcmp(name,"SealevelriseIndices")==0) return SealevelriseIndicesEnum;752 else if (strcmp(name,"SealevelriseG")==0) return SealevelriseGEnum;753 else if (strcmp(name,"SealevelriseGU")==0) return SealevelriseGUEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"SealevelriseGE")==0) return SealevelriseGEEnum; 758 else if (strcmp(name,"SealevelriseGN")==0) return SealevelriseGNEnum; 757 if (strcmp(name,"SurfaceloadIceThicknessChange")==0) return SurfaceloadIceThicknessChangeEnum; 758 else if (strcmp(name,"SurfaceloadWaterHeightChange")==0) return SurfaceloadWaterHeightChangeEnum; 759 else if (strcmp(name,"SealevelchangeIndices")==0) return SealevelchangeIndicesEnum; 760 else if (strcmp(name,"SealevelchangeG")==0) return SealevelchangeGEnum; 761 else if (strcmp(name,"SealevelchangeGU")==0) return SealevelchangeGUEnum; 762 else if (strcmp(name,"SealevelchangeGE")==0) return SealevelchangeGEEnum; 763 else if (strcmp(name,"SealevelchangeGN")==0) return SealevelchangeGNEnum; 759 764 else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum; 760 765 else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum; … … 864 869 else if (strcmp(name,"SmbZTop")==0) return SmbZTopEnum; 865 870 else if (strcmp(name,"SmbZY")==0) return SmbZYEnum; 871 else if (strcmp(name,"SolidearthExternalDisplacementEastRate")==0) return SolidearthExternalDisplacementEastRateEnum; 872 else if (strcmp(name,"SolidearthExternalDisplacementNorthRate")==0) return SolidearthExternalDisplacementNorthRateEnum; 873 else if (strcmp(name,"SolidearthExternalDisplacementUpRate")==0) return SolidearthExternalDisplacementUpRateEnum; 874 else if (strcmp(name,"SolidearthExternalGeoidRate")==0) return SolidearthExternalGeoidRateEnum; 875 else if (strcmp(name,"SolidearthExternalBarystaticSeaLevelRate")==0) return SolidearthExternalBarystaticSeaLevelRateEnum; 866 876 else if (strcmp(name,"StrainRateeffective")==0) return StrainRateeffectiveEnum; 867 else if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum; 868 881 else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum; 869 882 else if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum; … … 875 888 else if (strcmp(name,"StressMaxPrincipal")==0) return StressMaxPrincipalEnum; 876 889 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum; 890 else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum; 881 891 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum; 882 892 else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum; … … 988 998 else if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum; 989 999 else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum; 990 else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum; 991 1004 else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum; 992 1005 else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum; … … 998 1011 else if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum; 999 1012 else if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum; 1013 else if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum; 1004 1014 else if (strcmp(name,"Outputdefinition71")==0) return Outputdefinition71Enum; 1005 1015 else if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum; … … 1111 1121 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 1112 1122 else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum; 1113 else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum; 1114 1127 else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum; 1115 1128 else if (strcmp(name,"Element")==0) return ElementEnum; … … 1121 1134 else if (strcmp(name,"EsaTransitions")==0) return EsaTransitionsEnum; 1122 1135 else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum; 1136 else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum; 1127 1137 else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum; 1128 1138 else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum; … … 1234 1244 else if (strcmp(name,"Matenhancedice")==0) return MatenhancediceEnum; 1235 1245 else if (strcmp(name,"Materials")==0) return MaterialsEnum; 1236 else if (strcmp(name,"Matestar")==0) return MatestarEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"Matestar")==0) return MatestarEnum; 1237 1250 else if (strcmp(name,"Matice")==0) return MaticeEnum; 1238 1251 else if (strcmp(name,"Matlitho")==0) return MatlithoEnum; … … 1244 1257 else if (strcmp(name,"MaxDivergence")==0) return MaxDivergenceEnum; 1245 1258 else if (strcmp(name,"MaxVel")==0) return MaxVelEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"MaxVx")==0) return MaxVxEnum; 1259 else if (strcmp(name,"MaxVx")==0) return MaxVxEnum; 1250 1260 else if (strcmp(name,"MaxVy")==0) return MaxVyEnum; 1251 1261 else if (strcmp(name,"MaxVz")==0) return MaxVzEnum; … … 1335 1345 else if (strcmp(name,"SealevelNmotion")==0) return SealevelNmotionEnum; 1336 1346 else if (strcmp(name,"SealevelUmotion")==0) return SealevelUmotionEnum; 1337 else if (strcmp(name,"Sealevel riseAnalysis")==0) return SealevelriseAnalysisEnum;1338 else if (strcmp(name,"Sealevel riseSolution")==0) return SealevelriseSolutionEnum;1347 else if (strcmp(name,"SealevelchangeAnalysis")==0) return SealevelchangeAnalysisEnum; 1348 else if (strcmp(name,"SealevelchangeSolution")==0) return SealevelchangeSolutionEnum; 1339 1349 else if (strcmp(name,"Seg")==0) return SegEnum; 1340 1350 else if (strcmp(name,"SegInput")==0) return SegInputEnum; … … 1357 1367 else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum; 1358 1368 else if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum; 1359 else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; 1360 1373 else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum; 1361 1374 else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum; … … 1367 1380 else if (strcmp(name,"SubelementMelt1")==0) return SubelementMelt1Enum; 1368 1381 else if (strcmp(name,"SubelementMelt2")==0) return SubelementMelt2Enum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum; 1382 else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum; 1373 1383 else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum; 1374 1384 else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum; -
issm/trunk-jpl/src/m/classes/solidearth.m
r25767 r25947 41 41 self.partitionhydro=[]; 42 42 43 %no external solutions by defa lt:43 %no external solutions by default: 44 44 self.external=[]; 45 45 … … 120 120 self.rotational.marshall(prefix,md,fid); 121 121 if ~isempty(self.external), 122 WriteData(fid,prefix,'data',1,'format','Integer','name','md.solidearth.isexternal'); 122 123 self.external.marshall(prefix,md,fid); 124 else 125 WriteData(fid,prefix,'data',0,'format','Integer','name','md.solidearth.isexternal'); 123 126 end 124 127 -
issm/trunk-jpl/src/m/classes/solidearthsolution.m
r25763 r25947 40 40 end % }}} 41 41 function disp(self) % {{{ 42 fielddisplay(self,'displacementeast','solid-Earth Eastwards bedrock motion (m/yr)'); 43 fielddisplay(self,'displacementnorth','solid-Earth Northwards bedrock motion (m/yr)'); 44 fielddisplay(self,'displacementup','solid-Earth bedrock uplift rate (m/yr)'); 45 fielddisplay(self,'geoid','solid-Earth geoid motion (m/yr)'); 46 fielddisplay(self,'barystaticsealevel','barystatic absolute sea-level rate (m/yr)'); 42 disp(sprintf('%s',' units for time series is (yr)')); 43 fielddisplay(self,'displacementeast','solid-Earth Eastwards bedrock displacement series (m)'); 44 fielddisplay(self,'displacementnorth','solid-Earth Northwards bedrock displacement time series (m)'); 45 fielddisplay(self,'displacementup','solid-Earth bedrock uplift time series (m)'); 46 fielddisplay(self,'geoid','solid-Earth geoid time series (m)'); 47 fielddisplay(self,'barystaticsealevel','barystatic absolute sea-level time series (m)'); 47 48 48 49 end % }}} 49 50 function marshall(self,prefix,md,fid) % {{{ 50 51 yts=md.constants.yts; 51 WriteData(fid,prefix,'object',self,'class','solidearthsolution','fieldname','displacementeast','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 52 WriteData(fid,prefix,'object',self,'class','solidearthsolution','fieldname','displacementnorth','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 53 WriteData(fid,prefix,'object',self,'class','solidearthsolution','fieldname','displacementup','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 54 WriteData(fid,prefix,'object',self,'class','solidearthsolution','fieldname','geoid','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 55 WriteData(fid,prefix,'object',self,'class','solidearthsolution','fieldname','barystaticsealevel','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 52 53 %transform our time series into time series rates 54 time=self.displacementeast(end,:); 55 dt=diff(time,1,2); 56 57 displacementeast_rate=diff(displacementeast(1:end-1,:),1,2)./dt; 58 displacementnorth_rate=diff(displacementnorth(1:end-1,:),1,2)./dt; 59 displacementup_rate=diff(displacementup(1:end-1,:),1,2)./dt; 60 geoid_rate=diff(geoid(1:end-1,:),1,2)./dt; 61 barystaticsealevel_rate=diff(barystaticsealevel(1:end-1,:),1,2)./dt; 62 63 WriteData(fid,prefix,'name','md.solidearth.external.displacementeast','data',displacementeast_rate,'format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 64 WriteData(fid,prefix,'name','md.solidearth.external.displacementup','data',displacementup_rate,'format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 65 WriteData(fid,prefix,'name','md.solidearth.external.displacementnorth','data',displacementnorth_rate,'format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 66 WriteData(fid,prefix,'name','md.solidearth.external.geoid','data',geoid_rate,'format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 67 WriteData(fid,prefix,'name','md.solidearth.external.barystaticsealevel','data',barystaticsealevel_rate,'format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 56 68 57 69 end % }}}
Note:
See TracChangeset
for help on using the changeset viewer.