Changeset 25066
- Timestamp:
- 06/18/20 18:48:50 (5 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 26 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r24985 r25066 499 499 #}}} 500 500 #Gia sources (only if have fortran){{{ 501 if GIA IVINS501 if GIA 502 502 if FORTRAN 503 503 issm_sources += \ 504 504 ./cores/gia_core.cpp \ 505 ./analyses/Gia IvinsAnalysis.cpp \505 ./analyses/GiaAnalysis.cpp \ 506 506 ./modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp \ 507 507 ./modules/GiaDeflectionCorex/distme.f \ -
issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
r23936 r25066 65 65 case GLheightadvectionAnalysisEnum : return new GLheightadvectionAnalysis(); 66 66 #endif 67 #ifdef _HAVE_GIA IVINS_68 case Gia IvinsAnalysisEnum : return new GiaIvinsAnalysis();67 #ifdef _HAVE_GIA_ 68 case GiaAnalysisEnum : return new GiaAnalysis(); 69 69 #endif 70 70 #ifdef _HAVE_HYDROLOGYDCEFFICIENT_ -
issm/trunk-jpl/src/c/analyses/GiaAnalysis.cpp
r25065 r25066 1 #include "./Gia IvinsAnalysis.h"1 #include "./GiaAnalysis.h" 2 2 #include "../toolkits/toolkits.h" 3 3 #include "../classes/classes.h" … … 6 6 7 7 /*Model processing*/ 8 void Gia IvinsAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/8 void GiaAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/ 9 9 /*No constraints*/ 10 10 }/*}}}*/ 11 void Gia IvinsAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/11 void GiaAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/ 12 12 /*No loads*/ 13 13 }/*}}}*/ 14 void Gia IvinsAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/15 ::CreateNodes(nodes,iomodel,Gia IvinsAnalysisEnum,P1Enum);14 void GiaAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/ 15 ::CreateNodes(nodes,iomodel,GiaAnalysisEnum,P1Enum); 16 16 }/*}}}*/ 17 int Gia IvinsAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/17 int GiaAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/ 18 18 return 1; 19 19 }/*}}}*/ 20 void GiaIvinsAnalysis::UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ 20 void GiaAnalysis::UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ 21 22 int giamodel=0; 23 int nummodels=0; 21 24 22 25 /*Update elements: */ … … 30 33 } 31 34 32 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.thickness",ThicknessEnum); 33 iomodel->FetchDataToInput(inputs2,elements,"md.gia.mantle_viscosity",GiaMantleViscosityEnum); 34 iomodel->FetchDataToInput(inputs2,elements,"md.gia.lithosphere_thickness",GiaLithosphereThicknessEnum); 35 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 35 /*fetch gia model type: */ 36 iomodel->FetchData(&giamodel,"md.gia.model"); 37 if(giamodel==1){ //GiaIvins 38 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.thickness",ThicknessEnum); 39 iomodel->FetchDataToInput(inputs2,elements,"md.gia.mantle_viscosity",GiaMantleViscosityEnum); 40 iomodel->FetchDataToInput(inputs2,elements,"md.gia.lithosphere_thickness",GiaLithosphereThicknessEnum); 41 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 42 } 43 else if(giamodel==2){ //GiaCaron: not implemneted yet 44 } 45 else if(giamodel==3){ 46 int nummodels=0; 47 iomodel->FetchData(&nummodels,"md.gia.nummodels"); 48 if(nummodels){ 49 /*take Ngia and Ugia from the offline models and plug into the element inputs:*/ 50 iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ngia",GiaMmeNgiaEnum); 51 iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ugia",GiaMmeUgiaEnum); 52 } 53 else{ 54 /*we have been provided no models, just an zero array, use it to fill NGiaRate and UGiaRate:*/ 55 iomodel->FetchDataToInput(inputs2,elements,"md.gia.Ngia",NGiaRateEnum); 56 iomodel->FetchDataToInput(inputs2,elements,"md.gia.Ugia",UGiaRateEnum); 57 } 58 } 36 59 }/*}}}*/ 37 void Gia IvinsAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/60 void GiaAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/ 38 61 39 parameters->AddObject(iomodel->CopyConstantObject("md.gia.cross_section_shape",GiaCrossSectionShapeEnum)); 62 int giamodel; 63 IssmDouble modelid; 64 int nummodels; 65 66 /*find gia model type: */ 67 parameters->AddObject(iomodel->CopyConstantObject("md.gia.model",GiaModelEnum)); 68 parameters->FindParam(&giamodel,GiaModelEnum); 69 70 if(giamodel==1){ //GiaIvins 71 parameters->AddObject(iomodel->CopyConstantObject("md.gia.cross_section_shape",GiaCrossSectionShapeEnum)); 72 parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_shear_modulus",MaterialsLithosphereShearModulusEnum)); 73 parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_density",MaterialsLithosphereDensityEnum)); 74 parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_shear_modulus",MaterialsMantleShearModulusEnum)); 75 parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_density",MaterialsMantleDensityEnum)); 76 } 77 else if(giamodel==2){ //GiaCaron 78 } 79 else if(giamodel==3){ //GiaMme 80 81 parameters->AddObject(iomodel->CopyConstantObject("md.gia.nummodels",GiaNummodelsEnum)); 82 parameters->FindParam(&nummodels,GiaNummodelsEnum); 83 84 if(nummodels){ 85 iomodel->FetchData(&modelid,"md.gia.modelid"); 86 /*create double param, not int param, because Dakota will be updating it as 87 * a double potentially: */ 88 parameters->AddObject(new DoubleParam(GiaModelidEnum,modelid)); 89 90 /*quick checks: */ 91 if(nummodels<=0)_error_("giamme object in md.gia field should contain at least 1 ensemble model!"); 92 if(modelid<=0 || modelid>nummodels)_error_("modelid field in giamme object of md.gia field should be between 1 and the number of ensemble runs!"); 93 } 94 } 95 40 96 41 97 }/*}}}*/ 42 98 43 99 /*Finite Element Analysis*/ 44 void Gia IvinsAnalysis::Core(FemModel* femmodel){/*{{{*/100 void GiaAnalysis::Core(FemModel* femmodel){/*{{{*/ 45 101 _error_("not implemented"); 46 102 }/*}}}*/ 47 ElementVector* Gia IvinsAnalysis::CreateDVector(Element* element){/*{{{*/103 ElementVector* GiaAnalysis::CreateDVector(Element* element){/*{{{*/ 48 104 /*Default, return NULL*/ 49 105 return NULL; 50 106 }/*}}}*/ 51 ElementMatrix* Gia IvinsAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/107 ElementMatrix* GiaAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/ 52 108 _error_("Not implemented"); 53 109 }/*}}}*/ 54 ElementMatrix* Gia IvinsAnalysis::CreateKMatrix(Element* element){/*{{{*/110 ElementMatrix* GiaAnalysis::CreateKMatrix(Element* element){/*{{{*/ 55 111 _error_("not implemented yet"); 56 112 }/*}}}*/ 57 ElementVector* Gia IvinsAnalysis::CreatePVector(Element* element){/*{{{*/113 ElementVector* GiaAnalysis::CreatePVector(Element* element){/*{{{*/ 58 114 _error_("not implemented yet"); 59 115 }/*}}}*/ 60 void Gia IvinsAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/116 void GiaAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/ 61 117 _error_("not implemented yet"); 62 118 }/*}}}*/ 63 void Gia IvinsAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/119 void GiaAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/ 64 120 _error_("Not implemented yet"); 65 121 }/*}}}*/ 66 void Gia IvinsAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/122 void GiaAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/ 67 123 _error_("not implemented yet"); 68 124 }/*}}}*/ 69 void Gia IvinsAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/125 void GiaAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/ 70 126 /*Default, do nothing*/ 71 127 return; -
issm/trunk-jpl/src/c/analyses/GiaAnalysis.h
r25065 r25066 1 /*! \file Gia IvinsAnalysis.h1 /*! \file GiaAnalysis.h 2 2 * \brief: header file for generic external result object 3 3 */ 4 4 5 #ifndef _Gia IvinsAnalysis_6 #define _Gia IvinsAnalysis_5 #ifndef _GiaAnalysis_ 6 #define _GiaAnalysis_ 7 7 8 8 /*Headers*/ 9 9 #include "./Analysis.h" 10 10 11 class Gia IvinsAnalysis: public Analysis{11 class GiaAnalysis: public Analysis{ 12 12 13 13 public: -
issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
r25060 r25066 24 24 int geodetic=0; 25 25 int dslmodel=0; 26 int giamodel=0;27 26 28 27 /*Update elements: */ … … 44 43 iomodel->FetchDataToInput(inputs2,elements,"md.slr.sealevel",SealevelEnum,0); 45 44 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.bed",BedEnum); 46 iomodel->FetchDataToInput(inputs2,elements,"md.slr.Ngia",SealevelNGiaRateEnum);47 iomodel->FetchDataToInput(inputs2,elements,"md.slr.Ugia",SealevelUGiaRateEnum);48 45 iomodel->FetchDataToInput(inputs2,elements,"md.slr.hydro_rate",SealevelriseHydroRateEnum); 49 46 … … 267 264 else _error_("Dsl model " << dslmodel << " not implemented yet!"); 268 265 269 /*gia mme model: */ 270 iomodel->FetchData(&giamodel,"md.gia.model"); 271 if(giamodel==3){ 272 /*deal with Ngia and Ugia: */ 273 iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ngia",GiaMmeNgiaEnum); 274 iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ugia",GiaMmeUgiaEnum); 275 } 266 276 267 277 268 /*Initialize cumdeltalthickness and sealevel rise rate input*/ … … 291 282 IssmDouble* love_l=NULL; 292 283 int dslmodel=0; 293 int giamodel=0;294 284 295 285 IssmDouble* G_rigid = NULL; … … 317 307 /*some constant parameters: */ 318 308 parameters->AddObject(iomodel->CopyConstantObject("md.dsl.model",DslModelEnum)); 319 parameters->AddObject(iomodel->CopyConstantObject("md.gia.model",GiaModelEnum));320 309 parameters->AddObject(iomodel->CopyConstantObject("md.slr.geodetic_run_frequency",SealevelriseGeodeticRunFrequencyEnum)); 321 310 parameters->AddObject(iomodel->CopyConstantObject("md.slr.reltol",SealevelriseReltolEnum)); … … 357 346 if(modelid<=0 || modelid>nummodels)_error_("modelid field in dslmme object of md.dsl field should be between 1 and the number of ensemble runs!"); 358 347 } /*}}}*/ 359 /*Deal with gia multi-model ensembles: {{{*/360 iomodel->FetchData(&giamodel,"md.gia.model");361 if(giamodel==3){362 IssmDouble modelid;363 int nummodels;364 365 parameters->AddObject(iomodel->CopyConstantObject("md.gia.nummodels",GiaNummodelsEnum));366 iomodel->FetchData(&modelid,"md.gia.modelid");367 /*create double param, not int param, because Dakota will be updating it as368 * a double potentially: */369 parameters->AddObject(new DoubleParam(GiaModelidEnum,modelid));370 371 iomodel->FetchData(&nummodels,"md.gia.nummodels");372 373 /*quick checks: */374 if(nummodels<=0)_error_("giamme object in md.gia field should contain at least 1 ensemble model!");375 if(modelid<=0 || modelid>nummodels)_error_("modelid field in giamme object of md.gia field should be between 1 and the number of ensemble runs!");376 } /*}}}*/377 348 /*Deal with elasticity {{{*/ 378 349 /*love numbers: */ -
issm/trunk-jpl/src/c/analyses/analyses.h
r23936 r25066 23 23 #include "./FreeSurfaceBaseAnalysis.h" 24 24 #include "./FreeSurfaceTopAnalysis.h" 25 #include "./Gia IvinsAnalysis.h"25 #include "./GiaAnalysis.h" 26 26 #include "./GLheightadvectionAnalysis.h" 27 27 #include "./LoveAnalysis.h" -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r24947 r25066 366 366 virtual void WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue){_error_("not implemented yet");}; 367 367 368 #ifdef _HAVE_GIA IVINS_368 #ifdef _HAVE_GIA_ 369 369 virtual void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y)=0; 370 370 #endif -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r25024 r25066 4706 4706 /*}}}*/ 4707 4707 4708 #ifdef _HAVE_GIA IVINS_4708 #ifdef _HAVE_GIA_ 4709 4709 void Penta::GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){/*{{{*/ 4710 4710 _error_("GIA deflection not implemented yet!"); -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r24947 r25066 204 204 #endif 205 205 206 #ifdef _HAVE_GIA IVINS_206 #ifdef _HAVE_GIA_ 207 207 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y); 208 208 #endif -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r24947 r25066 164 164 IssmDouble GetAreaSpherical(void){_error_("not implemented yet!");}; 165 165 166 #ifdef _HAVE_GIA IVINS_166 #ifdef _HAVE_GIA_ 167 167 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");}; 168 168 #endif -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r24947 r25066 170 170 void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input2* vx_input,Input2* vy_input,Input2* vz_input); 171 171 172 #ifdef _HAVE_GIA IVINS_172 #ifdef _HAVE_GIA_ 173 173 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");}; 174 174 #endif -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r25024 r25066 21 21 #include "../Inputs2/TransientInput2.h" 22 22 #include "../../shared/shared.h" 23 #ifdef _HAVE_GIA IVINS_23 #ifdef _HAVE_GIA_ 24 24 #include "../../modules/GiaDeflectionCorex/GiaDeflectionCorex.h" 25 25 #endif … … 4951 4951 /*}}}*/ 4952 4952 4953 #ifdef _HAVE_GIA IVINS_4953 #ifdef _HAVE_GIA_ 4954 4954 void Tria::GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x, IssmDouble* y){/*{{{*/ 4955 4955 -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r24968 r25066 155 155 void WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue); 156 156 157 #ifdef _HAVE_GIA IVINS_157 #ifdef _HAVE_GIA_ 158 158 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y); 159 159 #endif -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r24998 r25066 770 770 771 771 case GiaSolutionEnum: 772 analyses_temp[numanalyses++]=Gia IvinsAnalysisEnum;772 analyses_temp[numanalyses++]=GiaAnalysisEnum; 773 773 break; 774 774 … … 783 783 case SealevelriseSolutionEnum: 784 784 analyses_temp[numanalyses++]=SealevelriseAnalysisEnum; 785 analyses_temp[numanalyses++]=GiaAnalysisEnum; 785 786 break; 786 787 … … 845 846 } 846 847 if(isslr){ 848 analyses_temp[numanalyses++]=GiaAnalysisEnum; 847 849 analyses_temp[numanalyses++]=SealevelriseAnalysisEnum; 848 850 } … … 851 853 } 852 854 if(isgia){ 853 analyses_temp[numanalyses++]=Gia IvinsAnalysisEnum;855 analyses_temp[numanalyses++]=GiaAnalysisEnum; 854 856 } 855 857 … … 4602 4604 /*}}}*/ 4603 4605 #endif 4604 #ifdef _HAVE_GIA IVINS_4606 #ifdef _HAVE_GIA_ 4605 4607 void FemModel::Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y){ /*{{{*/ 4606 4608 -
issm/trunk-jpl/src/c/classes/FemModel.h
r24984 r25066 155 155 void ThicknessAbsGradientx( IssmDouble* pJ); 156 156 void ThicknessPositivex(IssmDouble* pJ); 157 #ifdef _HAVE_GIA IVINS_157 #ifdef _HAVE_GIA_ 158 158 void Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y); 159 159 #endif -
issm/trunk-jpl/src/c/cores/CorePointerFromSolutionEnum.cpp
r24984 r25066 66 66 break; 67 67 case GiaSolutionEnum: 68 #if _HAVE_GIA IVINS_68 #if _HAVE_GIA_ 69 69 solutioncore=&gia_core; 70 70 #else -
issm/trunk-jpl/src/c/cores/gia_core.cpp
r23589 r25066 6 6 #include "../toolkits/toolkits.h" 7 7 #include "../classes/classes.h" 8 #include "../classes/Inputs2/TriaInput2.h" 9 #include "../classes/Inputs2/DatasetInput2.h" 8 10 #include "../shared/shared.h" 9 11 #include "../modules/modules.h" … … 11 13 void gia_core(FemModel* femmodel){ 12 14 13 /*Start profiler*/14 femmodel->profiler->Start(GIACORE);15 16 15 Vector<IssmDouble> *wg = NULL; 17 16 Vector<IssmDouble> *dwdtg = NULL; 18 17 IssmDouble *x = NULL; 19 18 IssmDouble *y = NULL; 19 int nummodels,giamodel; 20 IssmDouble modelid; 20 21 21 22 /*parameters: */ 22 23 bool save_results; 23 24 int gsize; 25 26 /*Start profiler*/ 27 femmodel->profiler->Start(GIACORE); 24 28 25 29 /*Recover some parameters: */ … … 29 33 30 34 /*Call on core computations: */ 31 femmodel->SetCurrentConfiguration(Gia IvinsAnalysisEnum);35 femmodel->SetCurrentConfiguration(GiaAnalysisEnum); 32 36 33 /*Figure out size of g-set deflection vector and allocate solution vector: */ 34 gsize = femmodel->nodes->NumberOfDofs(GsetEnum); 35 wg = new Vector<IssmDouble>(gsize); 36 dwdtg = new Vector<IssmDouble>(gsize); 37 /*Figure out type of gia model:*/ 38 femmodel->parameters->FindParam(&giamodel,GiaModelEnum); 37 39 38 /*first, recover x and y vectors from vertices: */ 39 VertexCoordinatesx(&x,&y,NULL,femmodel->vertices); //no need for z coordinate 40 if(giamodel==1){ //GiaIvins 41 /*Figure out size of g-set deflection vector and allocate solution vector: */ 42 gsize = femmodel->nodes->NumberOfDofs(GsetEnum); 43 wg = new Vector<IssmDouble>(gsize); 44 dwdtg = new Vector<IssmDouble>(gsize); 40 45 41 /*call the main module: */42 femmodel->Deflection(wg,dwdtg,x,y);46 /*first, recover x and y vectors from vertices: */ 47 VertexCoordinatesx(&x,&y,NULL,femmodel->vertices); //no need for z coordinate 43 48 44 /*assemble vector: */ 45 wg->Assemble(); 46 dwdtg->Assemble(); 49 /*call the main module: */ 50 femmodel->Deflection(wg,dwdtg,x,y); 47 51 48 InputUpdateFromVectorx(femmodel,wg,GiaWEnum,VertexSIdEnum); 49 InputUpdateFromVectorx(femmodel,dwdtg,GiadWdtEnum,VertexSIdEnum); 52 /*assemble vector: */ 53 wg->Assemble(); 54 dwdtg->Assemble(); 50 55 51 if(save_results){ 52 if(VerboseSolution()) _printf0_(" saving results\n"); 53 int outputs[2] = {GiaWEnum,GiadWdtEnum}; 54 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2); 56 InputUpdateFromVectorx(femmodel,wg,UGiaEnum,VertexSIdEnum); 57 InputUpdateFromVectorx(femmodel,dwdtg,UGiaRateEnum,VertexSIdEnum); 58 59 if(save_results){ 60 if(VerboseSolution()) _printf0_(" saving results\n"); 61 int outputs[2] = {UGiaEnum,UGiaRateEnum}; 62 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2); 63 } 64 65 xDelete<IssmDouble>(x); 66 xDelete<IssmDouble>(y); 55 67 } 68 else if(giamodel==2){ //GiaCaron 69 /*not implemneted yet*/ 70 } 71 else if(giamodel==3){ //GiaMme 72 56 73 57 xDelete<IssmDouble>(x); 58 xDelete<IssmDouble>(y); 74 /*Go grab the values for Ngia and Ugia in the offline GiaMme class:*/ 75 femmodel->parameters->FindParam(&nummodels,GiaNummodelsEnum); 76 if(nummodels){ 77 femmodel->parameters->FindParam(&modelid,GiaModelidEnum); 78 modelid--; //from matlab 79 80 /*find the Ngia and Ugia dataset:*/ 81 DatasetInput2* dataset_input_ngia=femmodel->inputs2->GetDatasetInput2(GiaMmeNgiaEnum); 82 DatasetInput2* dataset_input_ugia=femmodel->inputs2->GetDatasetInput2(GiaMmeUgiaEnum); 83 /*Go find the modelid'th input:*/ 84 TriaInput2* tria_input_ngia=dataset_input_ngia->GetTriaInputByOffset(modelid); 85 TriaInput2* tria_input_ugia=dataset_input_ugia->GetTriaInputByOffset(modelid); 86 87 /*Plug into SealevelUGiaRate and SealevelNGiaRate inputs:*/ 88 Input2* tria_input_copy_ngia=tria_input_ngia->copy(); 89 Input2* tria_input_copy_ugia=tria_input_ugia->copy(); 90 tria_input_copy_ngia->ChangeEnum(NGiaRateEnum); 91 tria_input_copy_ugia->ChangeEnum(UGiaRateEnum); 92 femmodel->inputs2->AddInput(tria_input_copy_ngia); 93 femmodel->inputs2->AddInput(tria_input_copy_ugia); 94 } 95 } 59 96 60 97 /*End profiler*/ -
issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp
r25060 r25066 191 191 InputUpdateFromVectorx(femmodel,U_esa_rate,SealevelUEsaRateEnum,VertexSIdEnum); 192 192 InputUpdateFromVectorx(femmodel,N_esa_rate,SealevelNEsaRateEnum,VertexSIdEnum); 193 InputUpdateFromVectorx(femmodel,U_gia_rate, SealevelUGiaRateEnum,VertexSIdEnum);194 InputUpdateFromVectorx(femmodel,N_gia_rate, SealevelNGiaRateEnum,VertexSIdEnum);193 InputUpdateFromVectorx(femmodel,U_gia_rate,UGiaRateEnum,VertexSIdEnum); 194 InputUpdateFromVectorx(femmodel,N_gia_rate,NGiaRateEnum,VertexSIdEnum); 195 195 InputUpdateFromVectorx(femmodel,RSLg_rate,SealevelRSLRateEnum,VertexSIdEnum); 196 196 InputUpdateFromVectorx(femmodel,U_esa,SealevelUEsaEnum,VertexSIdEnum); 197 197 InputUpdateFromVectorx(femmodel,N_esa,SealevelNEsaEnum,VertexSIdEnum); 198 InputUpdateFromVectorx(femmodel,U_gia, SealevelUGiaEnum,VertexSIdEnum);199 InputUpdateFromVectorx(femmodel,N_gia, SealevelNGiaEnum,VertexSIdEnum);198 InputUpdateFromVectorx(femmodel,U_gia,UGiaEnum,VertexSIdEnum); 199 InputUpdateFromVectorx(femmodel,N_gia,NGiaEnum,VertexSIdEnum); 200 200 InputUpdateFromVectorx(femmodel,RSLg,SealevelRSLEnum,VertexSIdEnum); 201 201 InputUpdateFromVectorx(femmodel,RSLg_eustatic,SealevelRSLEustaticEnum,VertexSIdEnum); … … 210 210 /*transfer sea level back to ice caps:*/ 211 211 TransferSealevel(femmodel,SealevelNEsaRateEnum); 212 TransferSealevel(femmodel, SealevelNGiaRateEnum);212 TransferSealevel(femmodel,NGiaRateEnum); 213 213 TransferSealevel(femmodel,SealevelUEsaRateEnum); 214 TransferSealevel(femmodel, SealevelUGiaRateEnum);214 TransferSealevel(femmodel,UGiaRateEnum); 215 215 216 216 //reset cumdeltathickness to 0: … … 286 286 if(geodetic){ 287 287 GetVectorFromInputsx(&U_esa_rate,femmodel,SealevelUEsaRateEnum,VertexSIdEnum); 288 GetVectorFromInputsx(&U_gia_rate,femmodel, SealevelUGiaRateEnum,VertexSIdEnum);288 GetVectorFromInputsx(&U_gia_rate,femmodel,UGiaRateEnum,VertexSIdEnum); 289 289 GetVectorFromInputsx(&N_esa_rate,femmodel,SealevelNEsaRateEnum,VertexSIdEnum); 290 GetVectorFromInputsx(&N_gia_rate,femmodel, SealevelNGiaRateEnum,VertexSIdEnum);290 GetVectorFromInputsx(&N_gia_rate,femmodel,NGiaRateEnum,VertexSIdEnum); 291 291 } 292 292 … … 625 625 /*parameters:*/ 626 626 int frequency; 627 int giamodel;628 IssmDouble modelid;629 627 IssmDouble dt; 630 628 … … 634 632 femmodel->parameters->FindParam(&frequency,SealevelriseGeodeticRunFrequencyEnum); 635 633 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 636 femmodel->parameters->FindParam(&giamodel,GiaModelEnum); 637 638 if(giamodel==3){ 639 /*need to actively get GIA from the MME ensemble, and plug it into 640 * the elements as inputs SealevelUGiaRateEnum and SealevelNGiaRateEnum :*/ 641 femmodel->parameters->FindParam(&modelid,GiaModelidEnum); 642 643 modelid--; //from matlab 644 645 /*find the GiaMmeNgiaEnum dataset:*/ 646 DatasetInput2* dataset_input_ngia=femmodel->inputs2->GetDatasetInput2(GiaMmeNgiaEnum); 647 DatasetInput2* dataset_input_ugia=femmodel->inputs2->GetDatasetInput2(GiaMmeUgiaEnum); 648 649 /*Go find the modelid'th input:*/ 650 TriaInput2* tria_input_ngia=dataset_input_ngia->GetTriaInputByOffset(modelid); 651 TriaInput2* tria_input_ugia=dataset_input_ugia->GetTriaInputByOffset(modelid); 652 653 /*Plug into SealevelUGiaRate and SealevelNGiaRate inputs:*/ 654 Input2* tria_input_copy_ngia=tria_input_ngia->copy(); 655 Input2* tria_input_copy_ugia=tria_input_ugia->copy(); 656 tria_input_copy_ngia->ChangeEnum(SealevelNGiaRateEnum); 657 tria_input_copy_ugia->ChangeEnum(SealevelUGiaRateEnum); 658 femmodel->inputs2->AddInput(tria_input_copy_ngia); 659 femmodel->inputs2->AddInput(tria_input_copy_ugia); 660 } 661 634 662 635 /*recover GIA rates:*/ 663 GetVectorFromInputsx(&U_gia,femmodel, SealevelUGiaRateEnum,VertexSIdEnum);664 GetVectorFromInputsx(&N_gia,femmodel, SealevelNGiaRateEnum,VertexSIdEnum);636 GetVectorFromInputsx(&U_gia,femmodel,UGiaRateEnum,VertexSIdEnum); 637 GetVectorFromInputsx(&N_gia,femmodel,NGiaRateEnum,VertexSIdEnum); 665 638 666 639 /*we just loaded rates, that's not what's being asked, scale by time:*/ -
issm/trunk-jpl/src/c/cores/transient_core.cpp
r24984 r25066 217 217 if(isgia){ 218 218 if(VerboseSolution()) _printf0_(" computing glacial isostatic adjustment\n"); 219 #ifdef _HAVE_GIA IVINS_219 #ifdef _HAVE_GIA_ 220 220 gia_core(femmodel); 221 221 #else -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r24903 r25066 326 326 parameters->AddObject(iomodel->CopyConstantObject("md.constants.g",ConstantsGEnum)); 327 327 parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum)); 328 329 /*gia: */330 parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_shear_modulus",MaterialsLithosphereShearModulusEnum));331 parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_density",MaterialsLithosphereDensityEnum));332 parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_shear_modulus",MaterialsMantleShearModulusEnum));333 parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_density",MaterialsMantleDensityEnum));334 335 /*slr:*/336 328 parameters->AddObject(iomodel->CopyConstantObject("md.materials.earth_density",MaterialsEarthDensityEnum)); 329 337 330 break; 338 331 case MaterialsEnum:{ … … 365 358 parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum)); 366 359 367 /*gia: */368 parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_shear_modulus",MaterialsLithosphereShearModulusEnum));369 parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_density",MaterialsLithosphereDensityEnum));370 parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_shear_modulus",MaterialsMantleShearModulusEnum));371 parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_density",MaterialsMantleDensityEnum));372 373 360 /*slr:*/ 374 361 parameters->AddObject(iomodel->CopyConstantObject("md.materials.earth_density",MaterialsEarthDensityEnum)); -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r25060 r25066 588 588 syn keyword cConstant GiaLithosphereThicknessEnum 589 589 syn keyword cConstant GiaMantleViscosityEnum 590 syn keyword cConstant GiaWEnum 591 syn keyword cConstant GiadWdtEnum 590 syn keyword cConstant NGiaEnum 591 syn keyword cConstant NGiaRateEnum 592 syn keyword cConstant UGiaEnum 593 syn keyword cConstant UGiaRateEnum 592 594 syn keyword cConstant GradientEnum 593 595 syn keyword cConstant GroundinglineHeightEnum … … 675 677 syn keyword cConstant SealevelNEsaEnum 676 678 syn keyword cConstant SealevelNEsaRateEnum 677 syn keyword cConstant SealevelNGiaEnum678 syn keyword cConstant SealevelNGiaRateEnum679 679 syn keyword cConstant SealevelRSLEnum 680 680 syn keyword cConstant SealevelRSLEustaticEnum … … 684 684 syn keyword cConstant SealevelUEsaEnum 685 685 syn keyword cConstant SealevelUEsaRateEnum 686 syn keyword cConstant SealevelUGiaEnum687 syn keyword cConstant SealevelUGiaRateEnum688 686 syn keyword cConstant SealevelUNorthEsaEnum 689 687 syn keyword cConstant SealevelriseCumDeltathicknessEnum … … 1080 1078 syn keyword cConstant GenericOptionEnum 1081 1079 syn keyword cConstant GenericParamEnum 1082 syn keyword cConstant Gia IvinsAnalysisEnum1080 syn keyword cConstant GiaAnalysisEnum 1083 1081 syn keyword cConstant GiaSolutionEnum 1084 1082 syn keyword cConstant Gradient1Enum … … 1490 1488 syn keyword cType FreeSurfaceTopAnalysis 1491 1489 syn keyword cType GLheightadvectionAnalysis 1492 syn keyword cType Gia IvinsAnalysis1490 syn keyword cType GiaAnalysis 1493 1491 syn keyword cType HydrologyDCEfficientAnalysis 1494 1492 syn keyword cType HydrologyDCInefficientAnalysis -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r25060 r25066 585 585 GiaLithosphereThicknessEnum, 586 586 GiaMantleViscosityEnum, 587 GiaWEnum, 588 GiadWdtEnum, 587 NGiaEnum, 588 NGiaRateEnum, 589 UGiaEnum, 590 UGiaRateEnum, 589 591 GradientEnum, 590 592 GroundinglineHeightEnum, … … 672 674 SealevelNEsaEnum, 673 675 SealevelNEsaRateEnum, 674 SealevelNGiaEnum,675 SealevelNGiaRateEnum,676 676 SealevelRSLEnum, 677 677 SealevelRSLEustaticEnum, … … 681 681 SealevelUEsaEnum, 682 682 SealevelUEsaRateEnum, 683 SealevelUGiaEnum,684 SealevelUGiaRateEnum,685 683 SealevelUNorthEsaEnum, 686 684 SealevelriseCumDeltathicknessEnum, … … 1080 1078 GenericOptionEnum, 1081 1079 GenericParamEnum, 1082 Gia IvinsAnalysisEnum,1080 GiaAnalysisEnum, 1083 1081 GiaSolutionEnum, 1084 1082 Gradient1Enum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r25060 r25066 590 590 case GiaLithosphereThicknessEnum : return "GiaLithosphereThickness"; 591 591 case GiaMantleViscosityEnum : return "GiaMantleViscosity"; 592 case GiaWEnum : return "GiaW"; 593 case GiadWdtEnum : return "GiadWdt"; 592 case NGiaEnum : return "NGia"; 593 case NGiaRateEnum : return "NGiaRate"; 594 case UGiaEnum : return "UGia"; 595 case UGiaRateEnum : return "UGiaRate"; 594 596 case GradientEnum : return "Gradient"; 595 597 case GroundinglineHeightEnum : return "GroundinglineHeight"; … … 677 679 case SealevelNEsaEnum : return "SealevelNEsa"; 678 680 case SealevelNEsaRateEnum : return "SealevelNEsaRate"; 679 case SealevelNGiaEnum : return "SealevelNGia";680 case SealevelNGiaRateEnum : return "SealevelNGiaRate";681 681 case SealevelRSLEnum : return "SealevelRSL"; 682 682 case SealevelRSLEustaticEnum : return "SealevelRSLEustatic"; … … 686 686 case SealevelUEsaEnum : return "SealevelUEsa"; 687 687 case SealevelUEsaRateEnum : return "SealevelUEsaRate"; 688 case SealevelUGiaEnum : return "SealevelUGia";689 case SealevelUGiaRateEnum : return "SealevelUGiaRate";690 688 case SealevelUNorthEsaEnum : return "SealevelUNorthEsa"; 691 689 case SealevelriseCumDeltathicknessEnum : return "SealevelriseCumDeltathickness"; … … 1082 1080 case GenericOptionEnum : return "GenericOption"; 1083 1081 case GenericParamEnum : return "GenericParam"; 1084 case Gia IvinsAnalysisEnum : return "GiaIvinsAnalysis";1082 case GiaAnalysisEnum : return "GiaAnalysis"; 1085 1083 case GiaSolutionEnum : return "GiaSolution"; 1086 1084 case Gradient1Enum : return "Gradient1"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r25060 r25066 602 602 else if (strcmp(name,"GiaLithosphereThickness")==0) return GiaLithosphereThicknessEnum; 603 603 else if (strcmp(name,"GiaMantleViscosity")==0) return GiaMantleViscosityEnum; 604 else if (strcmp(name,"GiaW")==0) return GiaWEnum; 605 else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum; 604 else if (strcmp(name,"NGia")==0) return NGiaEnum; 605 else if (strcmp(name,"NGiaRate")==0) return NGiaRateEnum; 606 else if (strcmp(name,"UGia")==0) return UGiaEnum; 607 else if (strcmp(name,"UGiaRate")==0) return UGiaRateEnum; 606 608 else if (strcmp(name,"Gradient")==0) return GradientEnum; 607 609 else if (strcmp(name,"GroundinglineHeight")==0) return GroundinglineHeightEnum; … … 627 629 else if (strcmp(name,"HydrologyHeadOld")==0) return HydrologyHeadOldEnum; 628 630 else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum; 629 else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;630 else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum; 634 if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum; 635 else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum; 636 else if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum; 635 637 else if (strcmp(name,"HydrologySheetThickness")==0) return HydrologySheetThicknessEnum; 636 638 else if (strcmp(name,"HydrologySheetThicknessOld")==0) return HydrologySheetThicknessOldEnum; … … 692 694 else if (strcmp(name,"SealevelNEsa")==0) return SealevelNEsaEnum; 693 695 else if (strcmp(name,"SealevelNEsaRate")==0) return SealevelNEsaRateEnum; 694 else if (strcmp(name,"SealevelNGia")==0) return SealevelNGiaEnum;695 else if (strcmp(name,"SealevelNGiaRate")==0) return SealevelNGiaRateEnum;696 696 else if (strcmp(name,"SealevelRSL")==0) return SealevelRSLEnum; 697 697 else if (strcmp(name,"SealevelRSLEustatic")==0) return SealevelRSLEustaticEnum; … … 701 701 else if (strcmp(name,"SealevelUEsa")==0) return SealevelUEsaEnum; 702 702 else if (strcmp(name,"SealevelUEsaRate")==0) return SealevelUEsaRateEnum; 703 else if (strcmp(name,"SealevelUGia")==0) return SealevelUGiaEnum;704 else if (strcmp(name,"SealevelUGiaRate")==0) return SealevelUGiaRateEnum;705 703 else if (strcmp(name,"SealevelUNorthEsa")==0) return SealevelUNorthEsaEnum; 706 704 else if (strcmp(name,"SealevelriseCumDeltathickness")==0) return SealevelriseCumDeltathicknessEnum; … … 752 750 else if (strcmp(name,"SmbEC")==0) return SmbECEnum; 753 751 else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum; 752 else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum; 753 else if (strcmp(name,"SmbEla")==0) return SmbElaEnum; 754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"SmbECini")==0) return SmbECiniEnum; 758 else if (strcmp(name,"SmbEla")==0) return SmbElaEnum; 759 else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum; 757 if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum; 760 758 else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum; 761 759 else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum; … … 875 873 else if (strcmp(name,"VzHO")==0) return VzHOEnum; 876 874 else if (strcmp(name,"VzMesh")==0) return VzMeshEnum; 875 else if (strcmp(name,"VzSSA")==0) return VzSSAEnum; 876 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; 877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"VzSSA")==0) return VzSSAEnum; 881 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; 882 else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum; 880 if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum; 883 881 else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum; 884 882 else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum; … … 998 996 else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 999 997 else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum; 998 else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum; 999 else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum; 1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum; 1004 else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum; 1005 else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum; 1003 if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum; 1006 1004 else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum; 1007 1005 else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum; … … 1106 1104 else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum; 1107 1105 else if (strcmp(name,"GenericParam")==0) return GenericParamEnum; 1108 else if (strcmp(name,"Gia IvinsAnalysis")==0) return GiaIvinsAnalysisEnum;1106 else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum; 1109 1107 else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum; 1110 1108 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum; … … 1121 1119 else if (strcmp(name,"Hook")==0) return HookEnum; 1122 1120 else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum; 1121 else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum; 1122 else if (strcmp(name,"HydrologyGlaDSAnalysis")==0) return HydrologyGlaDSAnalysisEnum; 1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum; 1127 else if (strcmp(name,"HydrologyGlaDSAnalysis")==0) return HydrologyGlaDSAnalysisEnum; 1128 else if (strcmp(name,"HydrologyGlaDS")==0) return HydrologyGlaDSEnum; 1126 if (strcmp(name,"HydrologyGlaDS")==0) return HydrologyGlaDSEnum; 1129 1127 else if (strcmp(name,"HydrologyPismAnalysis")==0) return HydrologyPismAnalysisEnum; 1130 1128 else if (strcmp(name,"HydrologyShaktiAnalysis")==0) return HydrologyShaktiAnalysisEnum; … … 1244 1242 else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum; 1245 1243 else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum; 1244 else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum; 1245 else if (strcmp(name,"P1xP2")==0) return P1xP2Enum; 1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum; 1250 else if (strcmp(name,"P1xP2")==0) return P1xP2Enum; 1251 else if (strcmp(name,"P1xP3")==0) return P1xP3Enum; 1249 if (strcmp(name,"P1xP3")==0) return P1xP3Enum; 1252 1250 else if (strcmp(name,"P1xP4")==0) return P1xP4Enum; 1253 1251 else if (strcmp(name,"P2")==0) return P2Enum; … … 1367 1365 else if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum; 1368 1366 else if (strcmp(name,"MeshZ")==0) return MeshZEnum; 1367 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 1368 else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum; 1369 1369 else stage=12; 1370 1370 } 1371 1371 if(stage==12){ 1372 if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 1373 else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum; 1374 else if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum; 1372 if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum; 1375 1373 else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum; 1376 1374 else if (strcmp(name,"StrainRate")==0) return StrainRateEnum; -
issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
r24753 r25066 168 168 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1)); 169 169 } 170 else if(strcmp(string_in," SealevelNGiaRate")==0){171 const char* field = "md. slr.Ngia";172 input_enum = SealevelNGiaRateEnum;170 else if(strcmp(string_in,"NGiaRate")==0){ 171 const char* field = "md.gia.Ngia"; 172 input_enum = NGiaRateEnum; 173 173 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1)); 174 174 } … … 183 183 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1)); 184 184 } 185 else if(strcmp(string_in," SealevelUGiaRate")==0){186 const char* field = "md. slr.Ugia";187 input_enum = SealevelUGiaRateEnum;185 else if(strcmp(string_in,"UGiaRate")==0){ 186 const char* field = "md.gia.Ugia"; 187 input_enum = UGiaRateEnum; 188 188 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1)); 189 189 } -
issm/trunk-jpl/src/m/classes/giamme.m
r25056 r25066 33 33 34 34 self.modelid=0; 35 self.Ngia= {};36 self.Ugia= {};35 self.Ngia=[]; 36 self.Ugia=[]; 37 37 38 38 end % }}} … … 44 44 md = checkfield(md,'field',self.Ngia,'NaN',1,'Inf',1); 45 45 md = checkfield(md,'field',self.Ugia,'NaN',1,'Inf',1); 46 md = checkfield(md,'field',self.modelid,'NaN',1,'Inf',1,'>=', 1,'<=',length(self.Ngia));46 md = checkfield(md,'field',self.modelid,'NaN',1,'Inf',1,'>=',0,'<=',length(self.Ngia)); 47 47 end % }}} 48 48 function disp(self) % {{{ … … 56 56 57 57 WriteData(fid,prefix,'name','md.gia.model','data',3,'format','Integer'); 58 WriteData(fid,prefix,'name','md.gia.nummodels','data', length(self.Ngia),'format','Integer');58 WriteData(fid,prefix,'name','md.gia.nummodels','data',size(self.Ngia,2),'format','Integer'); 59 59 WriteData(fid,prefix,'object',self,'fieldname','modelid','format','Double'); 60 WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat'); 61 WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat'); 62 60 if size(self.Ngia,2)==0, 61 WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ngia'); 62 WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ugia'); 63 else 64 WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat'); 65 WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat'); 66 end 63 67 end % }}} 64 68 function savemodeljs(self,fid,modelname) % {{{ -
issm/trunk-jpl/src/m/classes/model.m
r24861 r25066 136 136 end 137 137 %2017 April 10th 138 if isa(md.gia,'gia'), md.gia=gia ivins(); end138 if isa(md.gia,'gia'), md.gia=giamme(); end 139 139 %2017 May 4th 140 140 if isa(md.amr,'double'); md.amr=amr(); end … … 1229 1229 md.calving = calving(); 1230 1230 md.frontalforcings = frontalforcings(); 1231 md.gia = gia ivins();1231 md.gia = giamme(); 1232 1232 md.esa = esa(); 1233 1233 md.love = fourierlove(); -
issm/trunk-jpl/src/m/classes/slr.m
r24960 r25066 30 30 degacc = 0; 31 31 horiz = 0; 32 Ngia = NaN;33 Ugia = NaN;34 32 planetradius = planetradius('earth'); 35 33 … … 125 123 md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1); 126 124 md = checkfield(md,'fieldname','slr.horiz','NaN',1,'Inf',1,'values',[0 1]); 127 md = checkfield(md,'fieldname','slr.Ngia','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);128 md = checkfield(md,'fieldname','slr.Ugia','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);129 125 130 126 %check that love numbers are provided at the same level of accuracy: … … 179 175 fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]'); 180 176 fielddisplay(self,'hydro_rate','rate of hydrological expansion (in mm/yr)'); 181 fielddisplay(self,'Ngia','rate of viscous (GIA) geoid expansion (in mm/yr)');182 fielddisplay(self,'Ugia','rate of viscous (GIA) bedrock uplift (in mm/yr)');183 177 fielddisplay(self,'geodetic','compute geodetic SLR? ( in addition to steric?) default 0'); 184 178 fielddisplay(self,'geodetic_run_frequency','how many time steps we skip before we run SLR solver during transient (default: 1)'); … … 215 209 WriteData(fid,prefix,'object',self,'fieldname','geodetic_run_frequency','format','Integer'); 216 210 WriteData(fid,prefix,'object',self,'fieldname','hydro_rate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts); 217 WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts);218 WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts);219 211 WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double'); 220 212 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray');
Note:
See TracChangeset
for help on using the changeset viewer.