Changeset 24469
- Timestamp:
- 12/12/19 15:59:02 (5 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 3 added
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
r24335 r24469 21 21 22 22 int geodetic=0; 23 int dslmodel=0; 23 24 24 25 /*Update elements: */ … … 52 53 iomodel->FetchDataToInput(inputs2,elements,"md.slr.Ngia",SealevelNGiaRateEnum); 53 54 iomodel->FetchDataToInput(inputs2,elements,"md.slr.Ugia",SealevelUGiaRateEnum); 54 iomodel->FetchDataToInput(inputs2,elements,"md.slr.steric_rate",SealevelriseStericRateEnum);55 55 iomodel->FetchDataToInput(inputs2,elements,"md.slr.hydro_rate",SealevelriseHydroRateEnum); 56 56 57 /*dynamic sea level: */ 58 iomodel->FetchData(&dslmodel,"md.dsl.model"); 59 if (dslmodel==1){ 60 iomodel->FetchDataToInput(inputs2,elements,"md.dsl.sea_surface_height_change_above_geoid", DslSeaSurfaceHeightChangeAboveGeoidEnum); 61 iomodel->FetchDataToInput(inputs2,elements,"md.dsl.sea_water_pressure_change_at_sea_floor", DslSeaWaterPressureChangeAtSeaFloor); 62 } 63 else _error_("Dsl model " << dslmodel << " not implemented yet!"); 64 57 65 /*Initialize cumdeltalthickness and sealevel rise rate input*/ 58 66 InputUpdateFromConstantx(inputs2,elements,0.,SealevelriseCumDeltathicknessEnum); … … 70 78 IssmDouble* love_k=NULL; 71 79 IssmDouble* love_l=NULL; 80 int dslmodel=0; 72 81 73 82 bool elastic=false; … … 109 118 parameters->AddObject(iomodel->CopyConstantObject("md.slr.geodetic",SealevelriseGeodeticEnum)); 110 119 120 /*dsl model: */ 121 iomodel->FetchData(&dslmodel,"md.dsl.model"); 122 if (dslmodel==1){ 123 IssmDouble* temp=NULL; 124 int M,N; 125 bool interp; 126 iomodel->FindConstant(&interp,"md.timestepping.interp_forcings"); 127 iomodel->FetchData(&temp,&N,&M,"md.dsl.global_average_thermosteric_sea_level_change"); _assert_(N==2); 128 parameters->AddObject(new TransientParam(DslGlobalAverageThermostericSeaLevelChangeEnum,&temp[0],&temp[M],interp,M)); 129 iomodel->DeleteData(temp,"md.dsl.global_average_thermosteric_sea_level_change"); 130 } 131 else _error_("dslmodel " << dslmodel << " not supported yet"); 132 111 133 iomodel->FetchData(&elastic,"md.slr.elastic"); 112 134 if(elastic){ -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r24443 r24469 372 372 #endif 373 373 #ifdef _HAVE_SEALEVELRISE_ 374 virtual void UpdateStericRate(int steric_rate_model)=0; 374 virtual void UpdateStericRate(int dslmodel)=0; 375 virtual void UpdateDynamicRate(int dslmodel)=0; 375 376 virtual IssmDouble GetArea3D(void)=0; 376 377 virtual IssmDouble GetAreaSpherical(void)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r24443 r24469 210 210 #endif 211 211 #ifdef _HAVE_SEALEVELRISE_ 212 void UpdateStericRate(int steric_rate_model){_error_("not implemented yet!");}; 212 void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");}; 213 void UpdateStericRate(int dslmodel){_error_("not implemented yet!");}; 213 214 IssmDouble OceanArea(void){_error_("not implemented yet!");}; 214 215 IssmDouble OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");}; -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r24443 r24469 171 171 #endif 172 172 #ifdef _HAVE_SEALEVELRISE_ 173 void UpdateStericRate(int steric_rate_model){_error_("not implemented yet!");}; 173 void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");}; 174 void UpdateStericRate(int dslmodel){_error_("not implemented yet!");}; 174 175 void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){_error_("not implemented yet!");}; 175 176 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r24443 r24469 177 177 #endif 178 178 #ifdef _HAVE_SEALEVELRISE_ 179 void UpdateStericRate(int steric_rate_model){_error_("not implemented yet!");}; 179 void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");}; 180 void UpdateStericRate(int dslmodel){_error_("not implemented yet!");}; 180 181 void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){_error_("not implemented yet!");}; 181 182 void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r24447 r24469 5436 5436 #endif 5437 5437 #ifdef _HAVE_SEALEVELRISE_ 5438 void Tria::UpdateStericRate(int steric_rate_model){ /*{{{*/ 5439 5440 if (steric_rate_model==0){ 5441 //do nothing 5442 } 5443 else if (steric_rate_model==1){ 5444 IssmDouble eof1[3],eof2[3],eof3[3],eof4[3]; 5438 void Tria::UpdateDynamicRate(int dslmodel){ /*{{{*/ 5439 5440 if (dslmodel==1){ 5441 //do nothing for now 5442 IssmDouble dslrate[3]={0,0,0}; 5443 this->AddInput2(DslDynamicRateEnum,&dslrate[0],P1Enum); 5444 } 5445 else if (dslmodel==2){ 5446 /*IssmDouble eof1[3],eof2[3],eof3[3],eof4[3]; 5445 5447 IssmDouble steric_rate[3]; 5446 5448 IssmDouble pc1,pc2,pc3,pc4; … … 5458 5460 for (int i=0;i<4;i++)steric_rate[i]=pc1*eof1[i]+pc2*eof2[i]+pc3*eof3[i]+pc4*eof4[i]; 5459 5461 5460 / *upate input: */5462 //upate input: 5461 5463 this->AddInput2(SealevelriseStericRateEnum,&steric_rate[0],P1Enum); 5464 */ 5462 5465 5463 5466 } 5464 5467 else{ 5465 _error_("not supported??"); 5468 _error_("dslmodel " << dslmodel << " not supported yet!"); 5469 } 5470 } 5471 /*}}}*/ 5472 void Tria::UpdateStericRate(int dslmodel){ /*{{{*/ 5473 5474 IssmDouble dslrate = 0; 5475 IssmDouble time; 5476 if (dslmodel==1){ 5477 //grab value of GlobalAverageThermostericSeaLevelChange directly: 5478 this->parameters->FindParam(&time,TimeEnum); 5479 this->parameters->FindParam(&dslrate,DslGlobalAverageThermostericSeaLevelChangeEnum,time); 5480 this->AddInput2(DslStericRateEnum,&dslrate,P0Enum); 5481 } 5482 else if (dslmodel==2){ 5483 /*IssmDouble eof1[3],eof2[3],eof3[3],eof4[3]; 5484 IssmDouble steric_rate[3]; 5485 IssmDouble pc1,pc2,pc3,pc4; 5486 5487 Element::GetInputListOnVertices(&eof1[0],SealevelriseModeleoftrendEof1Enum); 5488 Element::GetInputListOnVertices(&eof2[0],SealevelriseModeleoftrendEof2Enum); 5489 Element::GetInputListOnVertices(&eof3[0],SealevelriseModeleoftrendEof3Enum); 5490 Element::GetInputListOnVertices(&eof4[0],SealevelriseModeleoftrendEof4Enum); 5491 5492 Element::GetInputValue(&pc1,SealevelriseModeleoftrendPc1Enum); 5493 Element::GetInputValue(&pc2,SealevelriseModeleoftrendPc2Enum); 5494 Element::GetInputValue(&pc3,SealevelriseModeleoftrendPc3Enum); 5495 Element::GetInputValue(&pc4,SealevelriseModeleoftrendPc4Enum); 5496 5497 for (int i=0;i<4;i++)steric_rate[i]=pc1*eof1[i]+pc2*eof2[i]+pc3*eof3[i]+pc4*eof4[i]; 5498 5499 //upate input: 5500 this->AddInput2(SealevelriseStericRateEnum,&steric_rate[0],P1Enum); 5501 */ 5502 } 5503 else{ 5504 _error_("dslmodel " << dslmodel << " not supported yet!"); 5466 5505 } 5467 5506 } -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r24443 r24469 163 163 #endif 164 164 #ifdef _HAVE_SEALEVELRISE_ 165 void UpdateStericRate(int steric_rate_model); 165 void UpdateDynamicRate(int dslmodel); 166 void UpdateStericRate(int dslmodel); 166 167 IssmDouble OceanArea(void); 167 168 IssmDouble OceanAverage(IssmDouble* Sg); -
issm/trunk-jpl/src/c/cores/cores.h
r24099 r24469 61 61 void sealevelrise_diagnostics(FemModel* femmodel,Vector<IssmDouble>* RSLg); 62 62 IssmDouble objectivefunction(IssmDouble search_scalar,FemModel* femmodel); 63 void GetStericRate(Vector<IssmDouble> ** psteric_rate_g, FemModel* femmodel); 64 void GetDynamicRate(Vector<IssmDouble> ** pdynamic_rate_g, FemModel* femmodel); 63 65 64 66 //optimization -
issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp
r24335 r24469 9 9 #include "../modules/modules.h" 10 10 #include "../solutionsequences/solutionsequences.h" 11 11 12 12 13 /*cores:*/ … … 225 226 Vector<IssmDouble> *SL = NULL; 226 227 Vector<IssmDouble> *steric_rate_g = NULL; 228 Vector<IssmDouble> *dynamic_rate_g = NULL; 227 229 Vector<IssmDouble> *hydro_rate_g = NULL; 228 230 Vector<IssmDouble> *U_esa_rate= NULL; … … 255 257 GetVectorFromInputsx(&bedrock,femmodel,BedEnum,VertexSIdEnum); 256 258 GetVectorFromInputsx(&SL,femmodel,SealevelEnum,VertexSIdEnum); 257 GetVectorFromInputsx(&steric_rate_g,femmodel,SealevelriseStericRateEnum,VertexSIdEnum); 259 GetStericRate(&steric_rate_g,femmodel); 260 GetDynamicRate(&dynamic_rate_g,femmodel); 258 261 GetVectorFromInputsx(&hydro_rate_g,femmodel,SealevelriseHydroRateEnum,VertexSIdEnum); 259 262 if(geodetic){ … … 264 267 } 265 268 266 /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate) * dt + steric_rate + hydro_rate* dt*/269 /*compute: sea level change = initial sea level + (N_gia_rate+N_esa_rate) * dt + steric_rate + dynamic_rate + hydro_rate* dt*/ 267 270 if(geodetic){ 268 271 SL->AXPY(N_gia_rate,dt); … … 270 273 } 271 274 SL->AXPY(steric_rate_g,dt); 275 SL->AXPY(dynamic_rate_g,dt); 272 276 SL->AXPY(hydro_rate_g,dt); 273 277 … … 286 290 delete SL; 287 291 delete steric_rate_g; 292 delete dynamic_rate_g; 288 293 delete hydro_rate_g; 289 294 if(geodetic){ … … 558 563 } 559 564 /*}}}*/ 565 void GetDynamicRate(Vector<IssmDouble> ** pdynamic_rate_g, FemModel* femmodel){ /*{{{*/ 566 567 int dslmodel=0; 568 569 /*variables:*/ 570 Vector<IssmDouble> *dynamic_rate_g = NULL; 571 572 /*Update dynamic rates before retrieving them on Vertex SID set:*/ 573 femmodel->parameters->FindParam(&dslmodel,DslModelEnum); 574 575 for(int el=0;el<femmodel->elements->Size();el++){ 576 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(el)); 577 element->UpdateDynamicRate(dslmodel); 578 } 579 580 GetVectorFromInputsx(&dynamic_rate_g,femmodel,DslDynamicRateEnum,VertexSIdEnum); 581 *pdynamic_rate_g=dynamic_rate_g; 582 } 583 /*}}}*/ 584 void GetStericRate(Vector<IssmDouble> ** psteric_rate_g, FemModel* femmodel){ /*{{{*/ 585 586 int dslmodel=-1; 587 588 /*variables:*/ 589 Vector<IssmDouble> *steric_rate_g = NULL; 590 591 /*Update steric rates before retrieving them on Vertex SID set:*/ 592 femmodel->parameters->FindParam(&dslmodel,DslModelEnum); 593 594 for(int el=0;el<femmodel->elements->Size();el++){ 595 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(el)); 596 element->UpdateStericRate(dslmodel); 597 } 598 GetVectorFromInputsx(&steric_rate_g,femmodel,DslStericRateEnum,VertexSIdEnum); 599 *psteric_rate_g=steric_rate_g; 600 } 601 /*}}}*/ 560 602 561 603 /*support routines:*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r24450 r24469 62 62 parameters->AddObject(iomodel->CopyConstantObject("md.inversion.type",InversionTypeEnum)); 63 63 parameters->AddObject(iomodel->CopyConstantObject("md.calving.law",CalvingLawEnum)); 64 parameters->AddObject(iomodel->CopyConstantObject("md.dsl.model",DslModelEnum)); 64 65 parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.parameterization",FrontalForcingsParamEnum)); 65 66 parameters->AddObject(new IntParam(SealevelriseRunCountEnum,1)); -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r24449 r24469 130 130 syn keyword cConstant DomainDimensionEnum 131 131 syn keyword cConstant DomainTypeEnum 132 syn keyword cConstant DslGlobalAverageThermostericSeaLevelChangeEnum 133 syn keyword cConstant DslModelEnum 132 134 syn keyword cConstant EarthIdEnum 133 135 syn keyword cConstant EplZigZagCounterEnum … … 519 521 syn keyword cConstant DrivingStressXEnum 520 522 syn keyword cConstant DrivingStressYEnum 523 syn keyword cConstant DslSeaSurfaceHeightChangeAboveGeoidEnum 524 syn keyword cConstant DslStericRateEnum 525 syn keyword cConstant DslDynamicRateEnum 521 526 syn keyword cConstant DummyEnum 522 527 syn keyword cConstant EffectivePressureEnum … … 668 673 syn keyword cConstant SealevelriseDeltathicknessEnum 669 674 syn keyword cConstant SealevelriseSpcthicknessEnum 670 syn keyword cConstant SealevelriseStericRateEnum671 675 syn keyword cConstant SealevelriseHydroRateEnum 672 syn keyword cConstant SealevelriseModeleoftrendEof1Enum673 syn keyword cConstant SealevelriseModeleoftrendEof2Enum674 syn keyword cConstant SealevelriseModeleoftrendEof3Enum675 syn keyword cConstant SealevelriseModeleoftrendEof4Enum676 syn keyword cConstant SealevelriseModeleoftrendPc1Enum677 syn keyword cConstant SealevelriseModeleoftrendPc2Enum678 syn keyword cConstant SealevelriseModeleoftrendPc3Enum679 syn keyword cConstant SealevelriseModeleoftrendPc4Enum680 676 syn keyword cConstant SedimentHeadEnum 681 677 syn keyword cConstant SedimentHeadOldEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r24449 r24469 124 124 DomainDimensionEnum, 125 125 DomainTypeEnum, 126 DslGlobalAverageThermostericSeaLevelChangeEnum, 127 DslModelEnum, 126 128 EarthIdEnum, 127 129 EplZigZagCounterEnum, … … 515 517 DrivingStressXEnum, 516 518 DrivingStressYEnum, 519 DslSeaSurfaceHeightChangeAboveGeoidEnum, 520 DslSeaWaterPressureChangeAtSeaFloor, 521 DslStericRateEnum, 522 DslDynamicRateEnum, 517 523 DummyEnum, 518 524 EffectivePressureEnum, … … 664 670 SealevelriseDeltathicknessEnum, 665 671 SealevelriseSpcthicknessEnum, 666 SealevelriseStericRateEnum,667 672 SealevelriseHydroRateEnum, 668 SealevelriseModeleoftrendEof1Enum, 669 SealevelriseModeleoftrendEof2Enum, 670 SealevelriseModeleoftrendEof3Enum, 671 SealevelriseModeleoftrendEof4Enum, 672 SealevelriseModeleoftrendPc1Enum, 673 SealevelriseModeleoftrendPc2Enum, 674 SealevelriseModeleoftrendPc3Enum, 675 SealevelriseModeleoftrendPc4Enum, 676 SedimentHeadEnum, 677 SedimentHeadOldEnum, 673 SedimentHeadEnum, 674 SedimentHeadOldEnum, 678 675 SedimentHeadSubstepEnum, 679 676 SedimentHeadTransientEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r24449 r24469 132 132 case DomainDimensionEnum : return "DomainDimension"; 133 133 case DomainTypeEnum : return "DomainType"; 134 case DslGlobalAverageThermostericSeaLevelChangeEnum : return "DslGlobalAverageThermostericSeaLevelChange"; 135 case DslModelEnum : return "DslModel"; 134 136 case EarthIdEnum : return "EarthId"; 135 137 case EplZigZagCounterEnum : return "EplZigZagCounter"; … … 521 523 case DrivingStressXEnum : return "DrivingStressX"; 522 524 case DrivingStressYEnum : return "DrivingStressY"; 525 case DslSeaSurfaceHeightChangeAboveGeoidEnum : return "DslSeaSurfaceHeightChangeAboveGeoid"; 526 case DslStericRateEnum : return "DslStericRate"; 527 case DslDynamicRateEnum : return "DslDynamicRate"; 523 528 case DummyEnum : return "Dummy"; 524 529 case EffectivePressureEnum : return "EffectivePressure"; … … 670 675 case SealevelriseDeltathicknessEnum : return "SealevelriseDeltathickness"; 671 676 case SealevelriseSpcthicknessEnum : return "SealevelriseSpcthickness"; 672 case SealevelriseStericRateEnum : return "SealevelriseStericRate";673 677 case SealevelriseHydroRateEnum : return "SealevelriseHydroRate"; 674 case SealevelriseModeleoftrendEof1Enum : return "SealevelriseModeleoftrendEof1";675 case SealevelriseModeleoftrendEof2Enum : return "SealevelriseModeleoftrendEof2";676 case SealevelriseModeleoftrendEof3Enum : return "SealevelriseModeleoftrendEof3";677 case SealevelriseModeleoftrendEof4Enum : return "SealevelriseModeleoftrendEof4";678 case SealevelriseModeleoftrendPc1Enum : return "SealevelriseModeleoftrendPc1";679 case SealevelriseModeleoftrendPc2Enum : return "SealevelriseModeleoftrendPc2";680 case SealevelriseModeleoftrendPc3Enum : return "SealevelriseModeleoftrendPc3";681 case SealevelriseModeleoftrendPc4Enum : return "SealevelriseModeleoftrendPc4";682 678 case SedimentHeadEnum : return "SedimentHead"; 683 679 case SedimentHeadOldEnum : return "SedimentHeadOld"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r24449 r24469 132 132 else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum; 133 133 else if (strcmp(name,"DomainType")==0) return DomainTypeEnum; 134 else if (strcmp(name,"DslGlobalAverageThermostericSeaLevelChange")==0) return DslGlobalAverageThermostericSeaLevelChangeEnum; 135 else if (strcmp(name,"DslModel")==0) return DslModelEnum; 134 136 else if (strcmp(name,"EarthId")==0) return EarthIdEnum; 135 137 else if (strcmp(name,"EplZigZagCounter")==0) return EplZigZagCounterEnum; 136 138 else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum; 137 else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum;138 else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum; 142 if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum; 143 else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum; 144 else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum; 143 145 else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum; 144 146 else if (strcmp(name,"FemModelComm")==0) return FemModelCommEnum; … … 258 260 else if (strcmp(name,"MaterialsLithosphereDensity")==0) return MaterialsLithosphereDensityEnum; 259 261 else if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum; 260 else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;261 else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum; 265 if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum; 266 else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum; 267 else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum; 266 268 else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum; 267 269 else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum; … … 381 383 else if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum; 382 384 else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum; 383 else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;384 else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum; 388 if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum; 389 else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum; 390 else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum; 389 391 else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum; 390 392 else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum; … … 504 506 else if (strcmp(name,"CalvingFluxLevelset")==0) return CalvingFluxLevelsetEnum; 505 507 else if (strcmp(name,"CalvingMeltingFluxLevelset")==0) return CalvingMeltingFluxLevelsetEnum; 506 else if (strcmp(name,"Converged")==0) return ConvergedEnum;507 else if (strcmp(name,"CrevasseDepth")==0) return CrevasseDepthEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"DamageD")==0) return DamageDEnum; 511 if (strcmp(name,"Converged")==0) return ConvergedEnum; 512 else if (strcmp(name,"CrevasseDepth")==0) return CrevasseDepthEnum; 513 else if (strcmp(name,"DamageD")==0) return DamageDEnum; 512 514 else if (strcmp(name,"DamageDOld")==0) return DamageDOldEnum; 513 515 else if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum; … … 533 535 else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum; 534 536 else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum; 537 else if (strcmp(name,"DslSeaSurfaceHeightChangeAboveGeoid")==0) return DslSeaSurfaceHeightChangeAboveGeoidEnum; 538 else if (strcmp(name,"DslStericRate")==0) return DslStericRateEnum; 539 else if (strcmp(name,"DslDynamicRate")==0) return DslDynamicRateEnum; 535 540 else if (strcmp(name,"Dummy")==0) return DummyEnum; 536 541 else if (strcmp(name,"EffectivePressure")==0) return EffectivePressureEnum; … … 624 629 else if (strcmp(name,"LoadingforceY")==0) return LoadingforceYEnum; 625 630 else if (strcmp(name,"LoadingforceZ")==0) return LoadingforceZEnum; 626 else if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum; 627 635 else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum; 628 636 else if (strcmp(name,"MaskLandLevelset")==0) return MaskLandLevelsetEnum; 629 637 else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum; 630 638 else if (strcmp(name,"MasstransportSpcthickness")==0) return MasstransportSpcthicknessEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum; 639 else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum; 635 640 else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum; 636 641 else if (strcmp(name,"MaterialsRheologyE")==0) return MaterialsRheologyEEnum; … … 685 690 else if (strcmp(name,"SealevelriseDeltathickness")==0) return SealevelriseDeltathicknessEnum; 686 691 else if (strcmp(name,"SealevelriseSpcthickness")==0) return SealevelriseSpcthicknessEnum; 687 else if (strcmp(name,"SealevelriseStericRate")==0) return SealevelriseStericRateEnum;688 692 else if (strcmp(name,"SealevelriseHydroRate")==0) return SealevelriseHydroRateEnum; 689 else if (strcmp(name,"SealevelriseModeleoftrendEof1")==0) return SealevelriseModeleoftrendEof1Enum;690 else if (strcmp(name,"SealevelriseModeleoftrendEof2")==0) return SealevelriseModeleoftrendEof2Enum;691 else if (strcmp(name,"SealevelriseModeleoftrendEof3")==0) return SealevelriseModeleoftrendEof3Enum;692 else if (strcmp(name,"SealevelriseModeleoftrendEof4")==0) return SealevelriseModeleoftrendEof4Enum;693 else if (strcmp(name,"SealevelriseModeleoftrendPc1")==0) return SealevelriseModeleoftrendPc1Enum;694 else if (strcmp(name,"SealevelriseModeleoftrendPc2")==0) return SealevelriseModeleoftrendPc2Enum;695 else if (strcmp(name,"SealevelriseModeleoftrendPc3")==0) return SealevelriseModeleoftrendPc3Enum;696 else if (strcmp(name,"SealevelriseModeleoftrendPc4")==0) return SealevelriseModeleoftrendPc4Enum;697 693 else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum; 698 694 else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum; … … 752 748 else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum; 753 749 else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum; 750 else if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum; 751 else if (strcmp(name,"SmbNetSW")==0) return SmbNetSWEnum; 752 else if (strcmp(name,"SmbPAir")==0) return SmbPAirEnum; 753 else if (strcmp(name,"SmbP")==0) return SmbPEnum; 754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum; 758 else if (strcmp(name,"SmbNetSW")==0) return SmbNetSWEnum; 759 else if (strcmp(name,"SmbPAir")==0) return SmbPAirEnum; 760 else if (strcmp(name,"SmbP")==0) return SmbPEnum; 761 else if (strcmp(name,"SmbPddfacIce")==0) return SmbPddfacIceEnum; 757 if (strcmp(name,"SmbPddfacIce")==0) return SmbPddfacIceEnum; 762 758 else if (strcmp(name,"SmbPddfacSnow")==0) return SmbPddfacSnowEnum; 763 759 else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum; … … 875 871 else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum; 876 872 else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum; 873 else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum; 874 else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum; 875 else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum; 876 else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum; 877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum; 881 else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum; 882 else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum; 883 else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum; 884 else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum; 880 if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum; 885 881 else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum; 886 882 else if (strcmp(name,"Outputdefinition2")==0) return Outputdefinition2Enum; … … 998 994 else if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum; 999 995 else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum; 996 else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum; 997 else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum; 998 else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum; 999 else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum; 1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum; 1004 else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum; 1005 else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum; 1006 else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum; 1007 else if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum; 1003 if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum; 1008 1004 else if (strcmp(name,"Channel")==0) return ChannelEnum; 1009 1005 else if (strcmp(name,"ChannelArea")==0) return ChannelAreaEnum; … … 1121 1117 else if (strcmp(name,"IntInput")==0) return IntInputEnum; 1122 1118 else if (strcmp(name,"ElementInput2")==0) return ElementInput2Enum; 1119 else if (strcmp(name,"SegInput2")==0) return SegInput2Enum; 1120 else if (strcmp(name,"TriaInput2")==0) return TriaInput2Enum; 1121 else if (strcmp(name,"PentaInput2")==0) return PentaInput2Enum; 1122 else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum; 1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"SegInput2")==0) return SegInput2Enum; 1127 else if (strcmp(name,"TriaInput2")==0) return TriaInput2Enum; 1128 else if (strcmp(name,"PentaInput2")==0) return PentaInput2Enum; 1129 else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum; 1130 else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum; 1126 if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum; 1131 1127 else if (strcmp(name,"IntParam")==0) return IntParamEnum; 1132 1128 else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; … … 1244 1240 else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 1245 1241 else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum; 1242 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; 1243 else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum; 1244 else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum; 1245 else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum; 1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; 1250 else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum; 1251 else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum; 1252 else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum; 1253 else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum; 1249 if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum; 1254 1250 else if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum; 1255 1251 else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum; -
issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
r24259 r24469 173 173 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1)); 174 174 } 175 else if(strcmp(string_in," SealevelriseStericRate")==0){176 const char* field = "md. slr.steric_rate";177 input_enum = SealevelriseStericRateEnum;175 else if(strcmp(string_in,"DslGlobalAverageThermostericSeaLevelChange")==0){ 176 const char* field = "md.dsl.global_average_thermosteric_sea_level_change"; 177 input_enum = DslGlobalAverageThermostericSeaLevelChangeEnum; 178 178 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1)); 179 179 } -
issm/trunk-jpl/src/m/classes/model.js
r22972 r24469 22 22 console.log(sprintf("//19s: //-22s -- //s","rifts" ,"[1x1 " + typeof(this.rifts) + "]","rifts properties")); 23 23 console.log(sprintf("//19s: //-22s -- //s","slr" ,"[1x1 " + typeof(this.slr) + "]","slr forcings")); 24 console.log(sprintf("//19s: //-22s -- //s","dsl" ,"[1x1 " + typeof(this.dsl) + "]","dynamic sea level")); 24 25 console.log(sprintf("//19s: //-22s -- //s","debug" ,"[1x1 " + typeof(this.debug) + "]","debugging tools (valgrind, gprof)")); 25 26 console.log(sprintf("//19s: //-22s -- //s","verbose" ,"[1x1 " + typeof(this.verbose) + "]","verbosity level in solve")); … … 66 67 this.rifts = new rifts(); 67 68 this.slr = new slr(); 69 this.dsl = new dsl(); 68 70 69 71 this.debug = new debug(); … … 739 741 this.rifts = 0; 740 742 this.slr = 0; 743 this.dsl = 0; 741 744 742 745 this.debug = 0; -
issm/trunk-jpl/src/m/classes/model.m
r24465 r24469 22 22 initialization = 0; 23 23 rifts = 0; 24 dsl = 0; 24 25 slr = 0; 25 26 … … 871 872 md.hydrology = extrude(md.hydrology,md); 872 873 md.slr = extrude(md.slr,md); 874 md.dsl = extrude(md.dsl,md); 873 875 874 876 %connectivity … … 1191 1193 md.rifts = rifts(); 1192 1194 md.slr = slr(); 1195 md.dsl = dsl(); 1193 1196 md.timestepping = timestepping(); 1194 1197 md.groundingline = groundingline(); … … 1371 1374 disp(sprintf('%19s: %-22s -- %s','rifts' ,['[1x1 ' class(self.rifts) ']'],'rifts properties')); 1372 1375 disp(sprintf('%19s: %-22s -- %s','slr' ,['[1x1 ' class(self.slr) ']'],'slr forcings')); 1376 disp(sprintf('%19s: %-22s -- %s','dsl' ,['[1x1 ' class(self.dsl) ']'],'dynamic sea-level ')); 1373 1377 disp(sprintf('%19s: %-22s -- %s','debug' ,['[1x1 ' class(self.debug) ']'],'debugging tools (valgrind, gprof)')); 1374 1378 disp(sprintf('%19s: %-22s -- %s','verbose' ,['[1x1 ' class(self.verbose) ']'],'verbosity level in solve')); -
issm/trunk-jpl/src/m/classes/model.py
r24465 r24469 30 30 from rifts import rifts 31 31 from slr import slr 32 from dsl import dsl 32 33 from debug import debug 33 34 from verbose import verbose … … 94 95 self.rifts = rifts() 95 96 self.slr = slr() 97 self.dsl = dsl() 96 98 97 99 self.debug = debug() … … 142 144 'initialization', 143 145 'rifts', 144 'slr', 146 'slr', 147 'dsl', 145 148 'debug', 146 149 'verbose', … … 189 192 string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("rifts", "[%s, %s]" % ("1x1", obj.rifts.__class__.__name__), "rifts properties")) 190 193 string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("slr", "[%s, %s]" % ("1x1", obj.slr.__class__.__name__), "slr forcings")) 194 string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("dsl", "[%s, %s]" % ("1x1", obj.dsl.__class__.__name__), "dynamic sea level")) 191 195 string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("debug", "[%s, %s]" % ("1x1", obj.debug.__class__.__name__), "debugging tools (valgrind, gprof)")) 192 196 string = "%s\n%s" % (string, "%19s: % - 22s - - %s" % ("verbose", "[%s, %s]" % ("1x1", obj.verbose.__class__.__name__), "verbosity level in solve")) -
issm/trunk-jpl/src/m/classes/slr.m
r24259 r24469 25 25 rotation = 0; 26 26 ocean_area_scaling = 0; 27 steric_rate = 0; %rate of ocean expansion from steric effects.28 27 hydro_rate = 0; %rate of steric expansion from hydrological effects. 29 28 geodetic_run_frequency = 1; %how many time steps we skip before we run the geodetic part of the solver during transient … … 34 33 Ngia = NaN; 35 34 Ugia = NaN; 35 36 36 requested_outputs = {}; 37 37 transitions = {}; … … 80 80 self.degacc=.01; 81 81 82 %steric: 83 self.steric_rate=0; 82 %hydro 84 83 self.hydro_rate=0; 85 84 … … 116 115 md = checkfield(md,'fieldname','slr.maxiter','size',[1 1],'>=',1); 117 116 md = checkfield(md,'fieldname','slr.geodetic_run_frequency','size',[1 1],'>=',1); 118 md = checkfield(md,'fieldname','slr.steric_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);119 117 md = checkfield(md,'fieldname','slr.hydro_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]); 120 118 md = checkfield(md,'fieldname','slr.degacc','size',[1 1],'>=',1e-10); … … 176 174 fielddisplay(self,'angular_velocity','mean rotational velocity of earth [per second]'); 177 175 fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]'); 178 fielddisplay(self,'steric_rate','rate of steric ocean expansion (in mm/yr)');179 176 fielddisplay(self,'hydro_rate','rate of hydrological expansion (in mm/yr)'); 180 177 fielddisplay(self,'Ngia','rate of viscous (GIA) geoid expansion (in mm/yr)'); … … 214 211 WriteData(fid,prefix,'object',self,'fieldname','ocean_area_scaling','format','Boolean'); 215 212 WriteData(fid,prefix,'object',self,'fieldname','geodetic_run_frequency','format','Integer'); 216 WriteData(fid,prefix,'object',self,'fieldname','steric_rate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);217 213 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); 218 214 WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts); … … 256 252 writejsdouble(fid,[modelname '.slr.ocean_area_scaling'],self.ocean_area_scaling); 257 253 writejsdouble(fid,[modelname '.slr.geodetic_run_frequency'],self.geodetic_run_frequency); 258 writejs1Darray(fid,[modelname '.slr.steric_rate'],self.steric_rate);259 254 writejs1Darray(fid,[modelname '.slr.hydro_rate'],self.hydro_rate); 260 255 writejsdouble(fid,[modelname '.slr.degacc'],self.degacc);
Note:
See TracChangeset
for help on using the changeset viewer.