Changeset 24686 for issm/trunk/src/c/analyses/HydrologyGlaDSAnalysis.cpp
- Timestamp:
- 04/01/20 21:54:40 (5 years ago)
- Location:
- issm/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk
- Property svn:mergeinfo changed
/issm/trunk-jpl merged: 24314-24492,24494-24683
- Property svn:mergeinfo changed
-
issm/trunk/src
- Property svn:mergeinfo changed
-
issm/trunk/src/c/analyses/HydrologyGlaDSAnalysis.cpp
r24313 r24686 107 107 return 1; 108 108 }/*}}}*/ 109 void HydrologyGlaDSAnalysis::UpdateElements(Elements* elements,I oModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/109 void HydrologyGlaDSAnalysis::UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ 110 110 111 111 /*Fetch data needed: */ … … 121 121 if(iomodel->my_elements[i]){ 122 122 Element* element=(Element*)elements->GetObjectByOffset(counter); 123 element->Update(i ,iomodel,analysis_counter,analysis_type,P1Enum);123 element->Update(inputs2,i,iomodel,analysis_counter,analysis_type,P1Enum); 124 124 counter++; 125 125 } 126 126 } 127 127 128 iomodel->FetchDataToInput( elements,"md.geometry.thickness",ThicknessEnum);129 iomodel->FetchDataToInput( elements,"md.geometry.base",BaseEnum);130 iomodel->FetchDataToInput( elements,"md.geometry.bed",BedEnum);131 iomodel->FetchDataToInput( elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum);132 iomodel->FetchDataToInput( elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);128 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.thickness",ThicknessEnum); 129 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.base",BaseEnum); 130 iomodel->FetchDataToInput(inputs2,elements,"md.geometry.bed",BedEnum); 131 iomodel->FetchDataToInput(inputs2,elements,"md.basalforcings.geothermalflux",BasalforcingsGeothermalfluxEnum); 132 iomodel->FetchDataToInput(inputs2,elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum); 133 133 if(iomodel->domaintype!=Domain2DhorizontalEnum){ 134 iomodel->FetchDataToInput( elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);135 iomodel->FetchDataToInput( elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);136 } 137 iomodel->FetchDataToInput( elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);138 iomodel->FetchDataToInput( elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum);139 iomodel->FetchDataToInput( elements,"md.hydrology.bump_height",HydrologyBumpHeightEnum);140 iomodel->FetchDataToInput( elements,"md.hydrology.sheet_conductivity",HydrologySheetConductivityEnum);141 iomodel->FetchDataToInput( elements,"md.hydrology.neumannflux",HydrologyNeumannfluxEnum);142 iomodel->FetchDataToInput( elements,"md.hydrology.moulin_input",HydrologyMoulinInputEnum);143 iomodel->FetchDataToInput( elements,"md.initialization.watercolumn",HydrologySheetThicknessEnum);144 iomodel->FetchDataToInput( elements,"md.initialization.hydraulic_potential",HydraulicPotentialEnum);145 iomodel->FetchDataToInput( elements,"md.initialization.vx",VxEnum);146 iomodel->FetchDataToInput( elements,"md.initialization.vy",VyEnum);134 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum); 135 iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum); 136 } 137 iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum); 138 iomodel->FetchDataToInput(inputs2,elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum); 139 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.bump_height",HydrologyBumpHeightEnum); 140 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.sheet_conductivity",HydrologySheetConductivityEnum); 141 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.neumannflux",HydrologyNeumannfluxEnum); 142 iomodel->FetchDataToInput(inputs2,elements,"md.hydrology.moulin_input",HydrologyMoulinInputEnum); 143 iomodel->FetchDataToInput(inputs2,elements,"md.initialization.watercolumn",HydrologySheetThicknessEnum); 144 iomodel->FetchDataToInput(inputs2,elements,"md.initialization.hydraulic_potential",HydraulicPotentialEnum); 145 iomodel->FetchDataToInput(inputs2,elements,"md.initialization.vx",VxEnum); 146 iomodel->FetchDataToInput(inputs2,elements,"md.initialization.vy",VyEnum); 147 147 iomodel->FindConstant(&frictionlaw,"md.friction.law"); 148 148 … … 150 150 switch(frictionlaw){ 151 151 case 1: 152 iomodel->FetchDataToInput( elements,"md.friction.coefficient",FrictionCoefficientEnum);153 iomodel->FetchDataToInput( elements,"md.friction.p",FrictionPEnum);154 iomodel->FetchDataToInput( elements,"md.friction.q",FrictionQEnum);152 iomodel->FetchDataToInput(inputs2,elements,"md.friction.coefficient",FrictionCoefficientEnum); 153 iomodel->FetchDataToInput(inputs2,elements,"md.friction.p",FrictionPEnum); 154 iomodel->FetchDataToInput(inputs2,elements,"md.friction.q",FrictionQEnum); 155 155 break; 156 156 case 8: 157 iomodel->FetchDataToInput( elements,"md.friction.coefficient",FrictionCoefficientEnum);157 iomodel->FetchDataToInput(inputs2,elements,"md.friction.coefficient",FrictionCoefficientEnum); 158 158 break; 159 159 default: … … 185 185 int frictionlaw; 186 186 iomodel->FindConstant(&frictionlaw,"md.friction.law"); 187 if(frictionlaw== 4 || frictionlaw==6){187 if(frictionlaw==6){ 188 188 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 189 189 } 190 if(frictionlaw==3 || frictionlaw==1 || frictionlaw==7){ 190 if(frictionlaw==4){ 191 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 191 192 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 193 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 194 } 195 if(frictionlaw==1 || frictionlaw==3 || frictionlaw==7){ 196 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 197 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 192 198 } 193 199 if(frictionlaw==9){ 194 200 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 201 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 195 202 parameters->AddObject(new IntParam(FrictionCouplingEnum,0)); 196 203 } 197 204 198 199 200 201 202 205 /*Requested outputs*/ 206 iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs"); 207 parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs)); 208 if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs)); 209 iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs"); 203 210 }/*}}}*/ 204 211 … … 242 249 IssmDouble g = element->FindParam(ConstantsGEnum); 243 250 IssmDouble e_v = element->FindParam(HydrologyEnglacialVoidRatioEnum); 244 Input * k_input = element->GetInput(HydrologySheetConductivityEnum);_assert_(k_input);245 Input * phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input);246 Input * h_input = element->GetInput(HydrologySheetThicknessEnum); _assert_(h_input);247 Input * H_input = element->GetInput(ThicknessEnum); _assert_(H_input);248 Input * b_input = element->GetInput(BedEnum); _assert_(b_input);249 Input * B_input = element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);250 Input * n_input = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);251 Input2* k_input = element->GetInput2(HydrologySheetConductivityEnum);_assert_(k_input); 252 Input2* phi_input = element->GetInput2(HydraulicPotentialEnum); _assert_(phi_input); 253 Input2* h_input = element->GetInput2(HydrologySheetThicknessEnum); _assert_(h_input); 254 Input2* H_input = element->GetInput2(ThicknessEnum); _assert_(H_input); 255 Input2* b_input = element->GetInput2(BedEnum); _assert_(b_input); 256 Input2* B_input = element->GetInput2(MaterialsRheologyBEnum); _assert_(B_input); 257 Input2* n_input = element->GetInput2(MaterialsRheologyNEnum); _assert_(n_input); 251 258 252 259 /* Start looping on the number of gaussian points: */ … … 342 349 IssmDouble g = element->FindParam(ConstantsGEnum); 343 350 IssmDouble e_v = element->FindParam(HydrologyEnglacialVoidRatioEnum); 344 Input * hr_input = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input);345 Input * vx_input = element->GetInput(VxEnum);_assert_(vx_input);346 Input * vy_input = element->GetInput(VyEnum);_assert_(vy_input);347 Input * h_input = element->GetInput(HydrologySheetThicknessEnum);_assert_(h_input);348 Input * H_input = element->GetInput(ThicknessEnum); _assert_(H_input);349 Input * b_input = element->GetInput(BedEnum); _assert_(b_input);350 Input * G_input = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(G_input);351 Input * m_input = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);_assert_(m_input);352 Input * B_input = element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);353 Input * n_input = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);354 Input * phiold_input = element->GetInput(HydraulicPotentialOldEnum); _assert_(phiold_input);355 Input * phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input);351 Input2* hr_input = element->GetInput2(HydrologyBumpHeightEnum);_assert_(hr_input); 352 Input2* vx_input = element->GetInput2(VxEnum);_assert_(vx_input); 353 Input2* vy_input = element->GetInput2(VyEnum);_assert_(vy_input); 354 Input2* h_input = element->GetInput2(HydrologySheetThicknessEnum);_assert_(h_input); 355 Input2* H_input = element->GetInput2(ThicknessEnum); _assert_(H_input); 356 Input2* b_input = element->GetInput2(BedEnum); _assert_(b_input); 357 Input2* G_input = element->GetInput2(BasalforcingsGeothermalfluxEnum);_assert_(G_input); 358 Input2* m_input = element->GetInput2(BasalforcingsGroundediceMeltingRateEnum);_assert_(m_input); 359 Input2* B_input = element->GetInput2(MaterialsRheologyBEnum); _assert_(B_input); 360 Input2* n_input = element->GetInput2(MaterialsRheologyNEnum); _assert_(n_input); 361 Input2* phiold_input = element->GetInput2(HydraulicPotentialOldEnum); _assert_(phiold_input); 362 Input2* phi_input = element->GetInput2(HydraulicPotentialEnum); _assert_(phi_input); 356 363 357 364 /*Build friction element, needed later: */ … … 479 486 IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum); 480 487 IssmDouble g = element->FindParam(ConstantsGEnum); 481 Input * hr_input = element->GetInput(HydrologyBumpHeightEnum);_assert_(hr_input);482 Input * vx_input = element->GetInput(VxEnum);_assert_(vx_input);483 Input * vy_input = element->GetInput(VyEnum);_assert_(vy_input);484 Input * H_input = element->GetInput(ThicknessEnum); _assert_(H_input);485 Input * b_input = element->GetInput(BedEnum); _assert_(b_input);486 Input * hold_input = element->GetInput(HydrologySheetThicknessOldEnum);_assert_(hold_input);487 Input * B_input = element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);488 Input * n_input = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);489 Input * phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input);488 Input2* hr_input = element->GetInput2(HydrologyBumpHeightEnum);_assert_(hr_input); 489 Input2* vx_input = element->GetInput2(VxEnum);_assert_(vx_input); 490 Input2* vy_input = element->GetInput2(VyEnum);_assert_(vy_input); 491 Input2* H_input = element->GetInput2(ThicknessEnum); _assert_(H_input); 492 Input2* b_input = element->GetInput2(BedEnum); _assert_(b_input); 493 Input2* hold_input = element->GetInput2(HydrologySheetThicknessOldEnum);_assert_(hold_input); 494 Input2* B_input = element->GetInput2(MaterialsRheologyBEnum); _assert_(B_input); 495 Input2* n_input = element->GetInput2(MaterialsRheologyNEnum); _assert_(n_input); 496 Input2* phi_input = element->GetInput2(HydraulicPotentialEnum); _assert_(phi_input); 490 497 491 498 /* Start looping on the number of gaussian points: */ … … 532 539 } 533 540 534 element->AddInput (HydrologySheetThicknessEnum,h_new,P1Enum);541 element->AddInput2(HydrologySheetThicknessEnum,h_new,P1Enum); 535 542 536 543 /*Clean up and return*/ … … 562 569 IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum); 563 570 IssmDouble g = element->FindParam(ConstantsGEnum); 564 Input * H_input = element->GetInput(ThicknessEnum); _assert_(H_input);565 Input * b_input = element->GetInput(BedEnum); _assert_(b_input);566 Input * phi_input = element->GetInput(HydraulicPotentialEnum); _assert_(phi_input);571 Input2* H_input = element->GetInput2(ThicknessEnum); _assert_(H_input); 572 Input2* b_input = element->GetInput2(BedEnum); _assert_(b_input); 573 Input2* phi_input = element->GetInput2(HydraulicPotentialEnum); _assert_(phi_input); 567 574 568 575 /* Start looping on the number of gaussian points: */ … … 592 599 } 593 600 594 element->AddInput (EffectivePressureEnum,N,element->FiniteElement());601 element->AddInput2(EffectivePressureEnum,N,element->FiniteElement()); 595 602 596 603 /*Clean up and return*/
Note:
See TracChangeset
for help on using the changeset viewer.