Changeset 24145
- Timestamp:
- 09/16/19 00:00:54 (6 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 3 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp ¶
r24045 r24145 110 110 case BasalforcingsIsmip6Enum: 111 111 iomodel->FetchDataToInput(elements,"md.basalforcings.basin_id",BasalforcingsIsmip6BasinIdEnum); 112 break; 113 case BeckmannGoosseFloatingMeltRateEnum: 114 iomodel->FetchDataToInput(elements,"md.basalforcings.ocean_salinity",BasalforcingsOceanSalinityEnum); 115 iomodel->FetchDataToInput(elements,"md.basalforcings.ocean_temp",BasalforcingsOceanTempEnum); 112 116 break; 113 117 default: -
TabularUnified issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp ¶
r24139 r24145 198 198 xDelete<IssmDouble*>(array3d); 199 199 } 200 break; 201 case BeckmannGoosseFloatingMeltRateEnum: 202 iomodel->FetchDataToInput(elements,"md.basalforcings.ocean_salinity",BasalforcingsOceanSalinityEnum); 203 iomodel->FetchDataToInput(elements,"md.basalforcings.ocean_temp",BasalforcingsOceanTempEnum); 200 204 break; 201 205 default: -
TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp ¶
r24045 r24145 786 786 iomodel->FetchDataToInput(elements,"md.basalforcings.basin_id",BasalforcingsIsmip6BasinIdEnum); 787 787 break; 788 case BeckmannGoosseFloatingMeltRateEnum: 789 iomodel->FetchDataToInput(elements,"md.basalforcings.ocean_salinity",BasalforcingsOceanSalinityEnum); 790 iomodel->FetchDataToInput(elements,"md.basalforcings.ocean_temp",BasalforcingsOceanTempEnum); 791 break; 788 792 default: 789 793 _error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet"); -
TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp ¶
r24045 r24145 138 138 iomodel->FetchDataToInput(elements,"md.basalforcings.basin_id",BasalforcingsIsmip6BasinIdEnum); 139 139 break; 140 140 case BeckmannGoosseFloatingMeltRateEnum: 141 iomodel->FetchDataToInput(elements,"md.basalforcings.ocean_salinity",BasalforcingsOceanSalinityEnum); 142 iomodel->FetchDataToInput(elements,"md.basalforcings.ocean_temp",BasalforcingsOceanTempEnum); 143 break; 141 144 default: 142 145 _error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet"); -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.cpp ¶
r24094 r24145 2505 2505 xDelete<IssmDouble>(values); 2506 2506 2507 }/*}}}*/ 2508 void Element::BeckmannGoosseFloatingiceMeltingRate(){/*{{{*/ 2509 2510 int numvertices = this->GetNumberOfVertices(); 2511 IssmDouble meltratefactor,T_f,ocean_heat_flux; 2512 IssmDouble rho_water = this->FindParam(MaterialsRhoSeawaterEnum); 2513 IssmDouble rho_ice = this->FindParam(MaterialsRhoIceEnum); 2514 IssmDouble latentheat = this->FindParam(MaterialsLatentheatEnum); 2515 IssmDouble mixed_layer_capacity = this->FindParam(MaterialsMixedLayerCapacityEnum); 2516 IssmDouble thermal_exchange_vel = this->FindParam(MaterialsThermalExchangeVelocityEnum); 2517 2518 IssmDouble* base = xNew<IssmDouble>(numvertices); 2519 IssmDouble* values = xNew<IssmDouble>(numvertices); 2520 IssmDouble* oceansalinity = xNew<IssmDouble>(numvertices); 2521 IssmDouble* oceantemp = xNew<IssmDouble>(numvertices); 2522 2523 this->GetInputListOnVertices(base,BaseEnum); 2524 this->GetInputListOnVertices(oceansalinity,BasalforcingsOceanSalinityEnum); 2525 this->GetInputListOnVertices(oceantemp,BasalforcingsOceanTempEnum); 2526 parameters->FindParam(&meltratefactor,BasalforcingsMeltrateFactorEnum); 2527 2528 Gauss* gauss=this->NewGauss(); 2529 for(int i=0;i<numvertices;i++){ 2530 T_f=(0.0939 - 0.057 * oceansalinity[i] + 7.64e-4 * base[i]); //degC 2531 2532 // compute ocean_heat_flux according to beckmann_goosse2003 2533 // positive, if T_oc > T_ice ==> heat flux FROM ocean TO ice 2534 ocean_heat_flux = meltratefactor * rho_water * mixed_layer_capacity * thermal_exchange_vel * (oceantemp[i] - T_f); // in W/m^2 2535 2536 // shelfbmassflux is positive if ice is freezing on; here it is always negative: 2537 // same sign as ocean_heat_flux (positive if massflux FROM ice TO ocean) 2538 values[i] = ocean_heat_flux / (latentheat * rho_ice); // m s-1 2539 } 2540 2541 this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum); 2542 xDelete<IssmDouble>(base); 2543 xDelete<IssmDouble>(values); 2544 xDelete<IssmDouble>(oceantemp); 2545 xDelete<IssmDouble>(oceansalinity); 2546 delete gauss; 2507 2547 }/*}}}*/ 2508 2548 void Element::MungsmtpParameterization(void){/*{{{*/ -
TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.h ¶
r24137 r24145 144 144 void MigrateGroundingLine(IssmDouble* sheet_ungrounding); 145 145 void MismipFloatingiceMeltingRate(); 146 void BeckmannGoosseFloatingiceMeltingRate(); 146 147 void MungsmtpParameterization(void); 147 148 ElementMatrix* NewElementMatrix(int approximation_enum=NoneApproximationEnum); 148 149 ElementMatrix* NewElementMatrixCoupling(int number_nodes,int approximation_enum=NoneApproximationEnum); 149 150 ElementVector* NewElementVector(int approximation_enum=NoneApproximationEnum); 150 151 void PicoUpdateBoxid(int* pmax_boxid_basin); 151 152 void PicoUpdateBox(int loopboxid); 152 153 void PicoComputeBasalMelt(); -
TabularUnified issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp ¶
r24045 r24145 40 40 if(VerboseSolution())_printf0_(" call ISMIP 6 Floating melting rate module\n"); 41 41 FloatingiceMeltingRateIsmip6x(femmodel); 42 break; 43 case BeckmannGoosseFloatingMeltRateEnum: 44 if(VerboseSolution())_printf0_(" call BeckmannGoosse Floating melting rate module\n"); 45 BeckmannGoosseFloatingiceMeltingRatex(femmodel); 42 46 break; 43 47 default: … … 193 197 } 194 198 /*}}}*/ 199 void BeckmannGoosseFloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/ 200 201 for(int i=0;i<femmodel->elements->Size();i++){ 202 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i)); 203 element->BeckmannGoosseFloatingiceMeltingRate(); 204 } 205 } 206 /*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h ¶
r23782 r24145 15 15 void MismipFloatingiceMeltingRatex(FemModel* femmodel); 16 16 void FloatingiceMeltingRateIsmip6x(FemModel* femmodel); 17 void BeckmannGoosseFloatingiceMeltingRatex(FemModel* femmodel); 17 18 18 19 #endif /* _FloatingiceMeltingRatex_H*/ -
TabularUnified issm/trunk-jpl/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp ¶
r24016 r24145 28 28 MantlePlumeGeothermalFluxx(femmodel); 29 29 break; 30 case BeckmannGoosseFloatingMeltRateEnum: 31 /*Nothing to be done*/ 32 break; 30 33 default: 31 34 _error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet"); -
TabularUnified issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp ¶
r24045 r24145 238 238 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsIsmip6NumBasinsEnum)); 239 239 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.gamma_0",BasalforcingsIsmip6Gamma0Enum)); 240 240 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.islocal",BasalforcingsIsmip6IsLocalEnum)); 241 241 iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.delta_t"); 242 242 parameters->AddObject(new DoubleVecParam(BasalforcingsIsmip6DeltaTEnum,transparam,N)); … … 245 245 parameters->AddObject(new DoubleVecParam(BasalforcingsIsmip6TfDepthsEnum,transparam,N)); 246 246 xDelete<IssmDouble>(transparam); 247 break; 248 case BeckmannGoosseFloatingMeltRateEnum: 249 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum)); 247 250 break; 248 251 default: -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h ¶
r24140 r24145 457 457 BasalforcingsIsmip6TfShelfEnum, 458 458 BasalforcingsIsmip6MeltAnomalyEnum, 459 BasalforcingsOceanSalinityEnum, 460 BasalforcingsOceanTempEnum, 459 461 BasalforcingsPicoBasinIdEnum, 460 462 BasalforcingsPicoBoxIdEnum, … … 929 931 BasalforcingsIsmip6Enum, 930 932 BasalforcingsPicoEnum, 933 BeckmannGoosseFloatingMeltRateEnum, 931 934 BedSlopeSolutionEnum, 932 935 BoolExternalResultEnum, -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp ¶
r24140 r24145 463 463 case BasalforcingsIsmip6TfShelfEnum : return "BasalforcingsIsmip6TfShelf"; 464 464 case BasalforcingsIsmip6MeltAnomalyEnum : return "BasalforcingsIsmip6MeltAnomaly"; 465 case BasalforcingsOceanSalinityEnum : return "BasalforcingsOceanSalinity"; 466 case BasalforcingsOceanTempEnum : return "BasalforcingsOceanTemp"; 465 467 case BasalforcingsPicoBasinIdEnum : return "BasalforcingsPicoBasinId"; 466 468 case BasalforcingsPicoBoxIdEnum : return "BasalforcingsPicoBoxId"; … … 933 935 case BasalforcingsIsmip6Enum : return "BasalforcingsIsmip6"; 934 936 case BasalforcingsPicoEnum : return "BasalforcingsPico"; 937 case BeckmannGoosseFloatingMeltRateEnum : return "BeckmannGoosseFloatingMeltRate"; 935 938 case BedSlopeSolutionEnum : return "BedSlopeSolution"; 936 939 case BoolExternalResultEnum : return "BoolExternalResult"; -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp ¶
r24140 r24145 472 472 else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum; 473 473 else if (strcmp(name,"BasalforcingsIsmip6MeltAnomaly")==0) return BasalforcingsIsmip6MeltAnomalyEnum; 474 else if (strcmp(name,"BasalforcingsOceanSalinity")==0) return BasalforcingsOceanSalinityEnum; 475 else if (strcmp(name,"BasalforcingsOceanTemp")==0) return BasalforcingsOceanTempEnum; 474 476 else if (strcmp(name,"BasalforcingsPicoBasinId")==0) return BasalforcingsPicoBasinIdEnum; 475 477 else if (strcmp(name,"BasalforcingsPicoBoxId")==0) return BasalforcingsPicoBoxIdEnum; … … 504 506 else if (strcmp(name,"DamageF")==0) return DamageFEnum; 505 507 else if (strcmp(name,"DegreeOfChannelization")==0) return DegreeOfChannelizationEnum; 506 else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum;507 else if (strcmp(name,"DeviatoricStressxx")==0) return DeviatoricStressxxEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum; 511 if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum; 512 else if (strcmp(name,"DeviatoricStressxx")==0) return DeviatoricStressxxEnum; 513 else if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum; 512 514 else if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum; 513 515 else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum; … … 627 629 else if (strcmp(name,"MaterialsRheologyEs")==0) return MaterialsRheologyEsEnum; 628 630 else if (strcmp(name,"MaterialsRheologyEsbar")==0) return MaterialsRheologyEsbarEnum; 629 else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum;630 else if (strcmp(name,"MeshScaleFactor")==0) return MeshScaleFactorEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"MeshVertexonbase")==0) return MeshVertexonbaseEnum; 634 if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum; 635 else if (strcmp(name,"MeshScaleFactor")==0) return MeshScaleFactorEnum; 636 else if (strcmp(name,"MeshVertexonbase")==0) return MeshVertexonbaseEnum; 635 637 else if (strcmp(name,"MeshVertexonboundary")==0) return MeshVertexonboundaryEnum; 636 638 else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum; … … 750 752 else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum; 751 753 else if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum; 752 else if (strcmp(name,"SmbTini")==0) return SmbTiniEnum;753 else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"SmbTz")==0) return SmbTzEnum; 757 if (strcmp(name,"SmbTini")==0) return SmbTiniEnum; 758 else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum; 759 else if (strcmp(name,"SmbTz")==0) return SmbTzEnum; 758 760 else if (strcmp(name,"SmbV")==0) return SmbVEnum; 759 761 else if (strcmp(name,"SmbVmean")==0) return SmbVmeanEnum; … … 873 875 else if (strcmp(name,"Outputdefinition50")==0) return Outputdefinition50Enum; 874 876 else if (strcmp(name,"Outputdefinition51")==0) return Outputdefinition51Enum; 875 else if (strcmp(name,"Outputdefinition52")==0) return Outputdefinition52Enum;876 else if (strcmp(name,"Outputdefinition53")==0) return Outputdefinition53Enum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Outputdefinition54")==0) return Outputdefinition54Enum; 880 if (strcmp(name,"Outputdefinition52")==0) return Outputdefinition52Enum; 881 else if (strcmp(name,"Outputdefinition53")==0) return Outputdefinition53Enum; 882 else if (strcmp(name,"Outputdefinition54")==0) return Outputdefinition54Enum; 881 883 else if (strcmp(name,"Outputdefinition55")==0) return Outputdefinition55Enum; 882 884 else if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum; … … 954 956 else if (strcmp(name,"BasalforcingsIsmip6")==0) return BasalforcingsIsmip6Enum; 955 957 else if (strcmp(name,"BasalforcingsPico")==0) return BasalforcingsPicoEnum; 958 else if (strcmp(name,"BeckmannGoosseFloatingMeltRate")==0) return BeckmannGoosseFloatingMeltRateEnum; 956 959 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum; 957 960 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; … … 995 998 else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum; 996 999 else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum; 997 else if (strcmp(name,"Divergence")==0) return DivergenceEnum;998 else if (strcmp(name,"Domain3Dsurface")==0) return Domain3DsurfaceEnum;999 else if (strcmp(name,"DoubleArrayInput")==0) return DoubleArrayInputEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 1003 if (strcmp(name,"Divergence")==0) return DivergenceEnum; 1004 else if (strcmp(name,"Domain3Dsurface")==0) return Domain3DsurfaceEnum; 1005 else if (strcmp(name,"DoubleArrayInput")==0) return DoubleArrayInputEnum; 1006 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 1004 1007 else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum; 1005 1008 else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum; … … 1118 1121 else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum; 1119 1122 else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum; 1120 else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;1121 else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum;1122 else if (strcmp(name,"Matenhancedice")==0) return MatenhancediceEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"Materials")==0) return MaterialsEnum; 1126 if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 1127 else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum; 1128 else if (strcmp(name,"Matenhancedice")==0) return MatenhancediceEnum; 1129 else if (strcmp(name,"Materials")==0) return MaterialsEnum; 1127 1130 else if (strcmp(name,"Matestar")==0) return MatestarEnum; 1128 1131 else if (strcmp(name,"Matice")==0) return MaticeEnum; … … 1241 1244 else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum; 1242 1245 else if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum; 1243 else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum;1244 else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum;1245 else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum; 1249 if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; 1250 else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum; 1251 else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum; 1252 else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum; 1250 1253 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; 1251 1254 else if (strcmp(name,"StringParam")==0) return StringParamEnum; -
TabularUnified issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp ¶
r23936 r24145 198 198 case 6: return SpatialLinearFloatingMeltRateEnum; 199 199 case 7: return BasalforcingsIsmip6Enum; 200 case 8: return BeckmannGoosseFloatingMeltRateEnum; 200 201 default: _error_("Marshalled Basal Forcings code \""<<enum_in<<"\" not supported yet"); 201 202 }
Note:
See TracChangeset
for help on using the changeset viewer.