Changeset 25060
- Timestamp:
- 06/18/20 00:05:28 (5 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
r24977 r25060 24 24 int geodetic=0; 25 25 int dslmodel=0; 26 int giamodel=0; 26 27 27 28 /*Update elements: */ … … 265 266 } /*}}}*/ 266 267 else _error_("Dsl model " << dslmodel << " not implemented yet!"); 267 268 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 } 276 268 277 /*Initialize cumdeltalthickness and sealevel rise rate input*/ 269 278 InputUpdateFromConstantx(inputs2,elements,0.,SealevelriseCumDeltathicknessEnum); … … 282 291 IssmDouble* love_l=NULL; 283 292 int dslmodel=0; 293 int giamodel=0; 284 294 285 295 IssmDouble* G_rigid = NULL; … … 307 317 /*some constant parameters: */ 308 318 parameters->AddObject(iomodel->CopyConstantObject("md.dsl.model",DslModelEnum)); 319 parameters->AddObject(iomodel->CopyConstantObject("md.gia.model",GiaModelEnum)); 309 320 parameters->AddObject(iomodel->CopyConstantObject("md.slr.geodetic_run_frequency",SealevelriseGeodeticRunFrequencyEnum)); 310 321 parameters->AddObject(iomodel->CopyConstantObject("md.slr.reltol",SealevelriseReltolEnum)); … … 346 357 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!"); 347 358 } /*}}}*/ 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 as 368 * 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 } /*}}}*/ 348 377 /*Deal with elasticity {{{*/ 349 378 /*love numbers: */ -
issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp
r24985 r25060 625 625 /*parameters:*/ 626 626 int frequency; 627 int giamodel; 628 IssmDouble modelid; 627 629 IssmDouble dt; 628 630 … … 632 634 femmodel->parameters->FindParam(&frequency,SealevelriseGeodeticRunFrequencyEnum); 633 635 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 634 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 635 662 /*recover GIA rates:*/ 636 663 GetVectorFromInputsx(&U_gia,femmodel,SealevelUGiaRateEnum,VertexSIdEnum); -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r25019 r25060 159 159 syn keyword cConstant FrontalForcingsNumberofBasinsEnum 160 160 syn keyword cConstant FrontalForcingsParamEnum 161 syn keyword cConstant GiaModelEnum 162 syn keyword cConstant GiaModelidEnum 163 syn keyword cConstant GiaNummodelsEnum 161 164 syn keyword cConstant GiaCrossSectionShapeEnum 162 165 syn keyword cConstant GroundinglineFrictionInterpolationEnum … … 539 542 syn keyword cConstant DslStericRateEnum 540 543 syn keyword cConstant DslDynamicRateEnum 544 syn keyword cConstant GiaMmeNgiaEnum 545 syn keyword cConstant GiaMmeUgiaEnum 541 546 syn keyword cConstant DummyEnum 542 547 syn keyword cConstant EffectivePressureEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r25019 r25060 153 153 FrontalForcingsNumberofBasinsEnum, 154 154 FrontalForcingsParamEnum, 155 GiaModelEnum, 156 GiaModelidEnum, 157 GiaNummodelsEnum, 155 158 GiaCrossSectionShapeEnum, 156 159 GroundinglineFrictionInterpolationEnum, … … 536 539 DslStericRateEnum, 537 540 DslDynamicRateEnum, 541 GiaMmeNgiaEnum, 542 GiaMmeUgiaEnum, 538 543 DummyEnum, 539 544 EffectivePressureEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r25019 r25060 161 161 case FrontalForcingsNumberofBasinsEnum : return "FrontalForcingsNumberofBasins"; 162 162 case FrontalForcingsParamEnum : return "FrontalForcingsParam"; 163 case GiaModelEnum : return "GiaModel"; 164 case GiaModelidEnum : return "GiaModelid"; 165 case GiaNummodelsEnum : return "GiaNummodels"; 163 166 case GiaCrossSectionShapeEnum : return "GiaCrossSectionShape"; 164 167 case GroundinglineFrictionInterpolationEnum : return "GroundinglineFrictionInterpolation"; … … 541 544 case DslStericRateEnum : return "DslStericRate"; 542 545 case DslDynamicRateEnum : return "DslDynamicRate"; 546 case GiaMmeNgiaEnum : return "GiaMmeNgia"; 547 case GiaMmeUgiaEnum : return "GiaMmeUgia"; 543 548 case DummyEnum : return "Dummy"; 544 549 case EffectivePressureEnum : return "EffectivePressure"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r25019 r25060 164 164 else if (strcmp(name,"FrontalForcingsNumberofBasins")==0) return FrontalForcingsNumberofBasinsEnum; 165 165 else if (strcmp(name,"FrontalForcingsParam")==0) return FrontalForcingsParamEnum; 166 else if (strcmp(name,"GiaModel")==0) return GiaModelEnum; 167 else if (strcmp(name,"GiaModelid")==0) return GiaModelidEnum; 168 else if (strcmp(name,"GiaNummodels")==0) return GiaNummodelsEnum; 166 169 else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum; 167 170 else if (strcmp(name,"GroundinglineFrictionInterpolation")==0) return GroundinglineFrictionInterpolationEnum; … … 257 260 else if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum; 258 261 else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum; 259 else if (strcmp(name,"MaterialsEarthDensity")==0) return MaterialsEarthDensityEnum;260 else if (strcmp(name,"MaterialsEffectiveconductivityAveraging")==0) return MaterialsEffectiveconductivityAveragingEnum;261 else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum; 265 if (strcmp(name,"MaterialsEarthDensity")==0) return MaterialsEarthDensityEnum; 266 else if (strcmp(name,"MaterialsEffectiveconductivityAveraging")==0) return MaterialsEffectiveconductivityAveragingEnum; 267 else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum; 268 else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum; 266 269 else if (strcmp(name,"MaterialsLithosphereDensity")==0) return MaterialsLithosphereDensityEnum; 267 270 else if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum; … … 380 383 else if (strcmp(name,"SmbIssetpddfac")==0) return SmbIssetpddfacEnum; 381 384 else if (strcmp(name,"SmbIsshortwave")==0) return SmbIsshortwaveEnum; 382 else if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum;383 else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum;384 else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SmbK")==0) return SmbKEnum; 388 if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum; 389 else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum; 390 else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum; 391 else if (strcmp(name,"SmbK")==0) return SmbKEnum; 389 392 else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum; 390 393 else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum; … … 503 506 else if (strcmp(name,"Base")==0) return BaseEnum; 504 507 else if (strcmp(name,"BaseOld")==0) return BaseOldEnum; 505 else if (strcmp(name,"BaseSlopeX")==0) return BaseSlopeXEnum;506 else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum;507 else if (strcmp(name,"Bed")==0) return BedEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum; 511 if (strcmp(name,"BaseSlopeX")==0) return BaseSlopeXEnum; 512 else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum; 513 else if (strcmp(name,"Bed")==0) return BedEnum; 514 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum; 512 515 else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum; 513 516 else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum; … … 553 556 else if (strcmp(name,"DslStericRate")==0) return DslStericRateEnum; 554 557 else if (strcmp(name,"DslDynamicRate")==0) return DslDynamicRateEnum; 558 else if (strcmp(name,"GiaMmeNgia")==0) return GiaMmeNgiaEnum; 559 else if (strcmp(name,"GiaMmeUgia")==0) return GiaMmeUgiaEnum; 555 560 else if (strcmp(name,"Dummy")==0) return DummyEnum; 556 561 else if (strcmp(name,"EffectivePressure")==0) return EffectivePressureEnum; … … 624 629 else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum; 625 630 else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum; 626 else if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum; 627 635 else if (strcmp(name,"HydrologySheetThickness")==0) return HydrologySheetThicknessEnum; 628 636 else if (strcmp(name,"HydrologySheetThicknessOld")==0) return HydrologySheetThicknessOldEnum; 629 637 else if (strcmp(name,"HydrologyWatercolumnMax")==0) return HydrologyWatercolumnMaxEnum; 630 638 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 639 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 635 640 else if (strcmp(name,"Ice")==0) return IceEnum; 636 641 else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum; … … 747 752 else if (strcmp(name,"SmbEC")==0) return SmbECEnum; 748 753 else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum; 749 else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"SmbECini")==0) return SmbECiniEnum; 750 758 else if (strcmp(name,"SmbEla")==0) return SmbElaEnum; 751 759 else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum; 752 760 else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum; 753 761 else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum; 762 else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum; 758 763 else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum; 759 764 else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum; … … 870 875 else if (strcmp(name,"VzHO")==0) return VzHOEnum; 871 876 else if (strcmp(name,"VzMesh")==0) return VzMeshEnum; 872 else if (strcmp(name,"VzSSA")==0) return VzSSAEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"VzSSA")==0) return VzSSAEnum; 873 881 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; 874 882 else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum; 875 883 else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum; 876 884 else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum; 885 else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum; 881 886 else if (strcmp(name,"Waterheight")==0) return WaterheightEnum; 882 887 else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum; … … 993 998 else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 994 999 else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum; 995 else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum; 996 1004 else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum; 997 1005 else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum; 998 1006 else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum; 999 1007 else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum; 1008 else if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum; 1004 1009 else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum; 1005 1010 else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum; … … 1116 1121 else if (strcmp(name,"Hook")==0) return HookEnum; 1117 1122 else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum; 1118 else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum; 1119 1127 else if (strcmp(name,"HydrologyGlaDSAnalysis")==0) return HydrologyGlaDSAnalysisEnum; 1120 1128 else if (strcmp(name,"HydrologyGlaDS")==0) return HydrologyGlaDSEnum; 1121 1129 else if (strcmp(name,"HydrologyPismAnalysis")==0) return HydrologyPismAnalysisEnum; 1122 1130 else if (strcmp(name,"HydrologyShaktiAnalysis")==0) return HydrologyShaktiAnalysisEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum; 1131 else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum; 1127 1132 else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum; 1128 1133 else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum; … … 1239 1244 else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum; 1240 1245 else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum; 1241 else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum; 1242 1250 else if (strcmp(name,"P1xP2")==0) return P1xP2Enum; 1243 1251 else if (strcmp(name,"P1xP3")==0) return P1xP3Enum; 1244 1252 else if (strcmp(name,"P1xP4")==0) return P1xP4Enum; 1245 1253 else if (strcmp(name,"P2")==0) return P2Enum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"P2bubble")==0) return P2bubbleEnum; 1254 else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum; 1250 1255 else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum; 1251 1256 else if (strcmp(name,"P2xP1")==0) return P2xP1Enum; … … 1362 1367 else if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum; 1363 1368 else if (strcmp(name,"MeshZ")==0) return MeshZEnum; 1364 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 1365 1373 else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum; 1366 1374 else if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum; 1367 1375 else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum; 1368 1376 else if (strcmp(name,"StrainRate")==0) return StrainRateEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 1377 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 1373 1378 else if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum; 1374 1379 else if (strcmp(name,"SubelementMigration4")==0) return SubelementMigration4Enum;
Note:
See TracChangeset
for help on using the changeset viewer.