Changeset 27660
- Timestamp:
- 03/24/23 14:15:01 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp
r27659 r27660 539 539 if(element->IsAllFloating() || !element->IsIceInElement()) return; 540 540 if(!element->IsOnBase()) return; 541 Element* basalelement = element->SpawnBasalElement(); 541 542 542 543 /*Intermediaries */ … … 552 553 553 554 /*Retrieve all inputs and parameters*/ 554 element->GetVerticesCoordinates(&xyz_list);555 element->FindParam(&dt,TimesteppingTimeStepEnum);556 IssmDouble latentheat = element->FindParam(MaterialsLatentheatEnum);557 IssmDouble g = element->FindParam(ConstantsGEnum);558 IssmDouble rho_ice = element->FindParam(MaterialsRhoIceEnum);559 IssmDouble rho_water = element->FindParam(MaterialsRhoFreshwaterEnum);560 Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);561 Input* head_input = element->GetInput(HydrologyHeadEnum); _assert_(head_input);562 Input* gap_input = element->GetInput(HydrologyGapHeightEnum); _assert_(gap_input);563 Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);564 Input* base_input = element->GetInput(BaseEnum); _assert_(base_input);565 Input* B_input = element->GetInput(MaterialsRheologyBEnum); _assert_(B_input);566 Input* n_input = element->GetInput(MaterialsRheologyNEnum); _assert_(n_input);567 Input* lr_input = element->GetInput(HydrologyBumpSpacingEnum); _assert_(lr_input);568 Input* br_input = element->GetInput(HydrologyBumpHeightEnum); _assert_(br_input);555 basalelement->GetVerticesCoordinates(&xyz_list); 556 basalelement->FindParam(&dt,TimesteppingTimeStepEnum); 557 IssmDouble latentheat = basalelement->FindParam(MaterialsLatentheatEnum); 558 IssmDouble g = basalelement->FindParam(ConstantsGEnum); 559 IssmDouble rho_ice = basalelement->FindParam(MaterialsRhoIceEnum); 560 IssmDouble rho_water = basalelement->FindParam(MaterialsRhoFreshwaterEnum); 561 Input* geothermalflux_input = basalelement->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input); 562 Input* head_input = basalelement->GetInput(HydrologyHeadEnum); _assert_(head_input); 563 Input* gap_input = basalelement->GetInput(HydrologyGapHeightEnum); _assert_(gap_input); 564 Input* thickness_input = basalelement->GetInput(ThicknessEnum); _assert_(thickness_input); 565 Input* base_input = basalelement->GetInput(BaseEnum); _assert_(base_input); 566 Input* B_input = basalelement->GetInput(MaterialsRheologyBEnum); _assert_(B_input); 567 Input* n_input = basalelement->GetInput(MaterialsRheologyNEnum); _assert_(n_input); 568 Input* lr_input = basalelement->GetInput(HydrologyBumpSpacingEnum); _assert_(lr_input); 569 Input* br_input = basalelement->GetInput(HydrologyBumpHeightEnum); _assert_(br_input); 569 570 570 571 /*Get conductivity from inputs*/ 571 IssmDouble conductivity = GetConductivity( element);572 573 /*Build friction element, needed later: */574 Friction* friction=new Friction( element,2);572 IssmDouble conductivity = GetConductivity(basalelement); 573 574 /*Build friction basalelement, needed later: */ 575 Friction* friction=new Friction(basalelement,2); 575 576 576 577 /*Keep track of weights*/ … … 578 579 579 580 /* Start looping on the number of gaussian points: */ 580 Gauss* gauss= element->NewGauss(2);581 Gauss* gauss=basalelement->NewGauss(2); 581 582 while(gauss->next()){ 582 583 583 element->JacobianDeterminant(&Jdet,xyz_list,gauss);584 basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss); 584 585 585 586 geothermalflux_input->GetInputValue(&G,gauss); … … 621 622 meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])); 622 623 623 element->AddBasalInput(DummyEnum,&meltrate,P0Enum);624 element->AddBasalInput(EsaEmotionEnum,&frictionheat,P0Enum);625 element->AddBasalInput(EsaNmotionEnum,&dissipation,P0Enum);626 element->AddBasalInput(EsaUmotionEnum,&PMPheat,P0Enum);624 //element->AddBasalInput(DummyEnum,&meltrate,P0Enum); 625 //element->AddBasalInput(EsaEmotionEnum,&frictionheat,P0Enum); 626 //element->AddBasalInput(EsaNmotionEnum,&dissipation,P0Enum); 627 //element->AddBasalInput(EsaUmotionEnum,&PMPheat,P0Enum); 627 628 628 629 newgap += gauss->weight*Jdet*(gap+dt*( … … 666 667 delete friction; 667 668 delete gauss; 669 if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;}; 668 670 }/*}}}*/ 669 671 void HydrologyShaktiAnalysis::UpdateEffectivePressure(FemModel* femmodel){/*{{{*/
Note:
See TracChangeset
for help on using the changeset viewer.