Changeset 21438
- Timestamp:
- 12/12/16 01:17:08 (8 years ago)
- Location:
- issm/trunk-jpl/src/c/analyses
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
r21436 r21438 235 235 basalelement ->JacobianDeterminant(&Jdet,xyz_list,gauss); 236 236 237 epl_transmitivity = EplTransmitivity(basalelement,gauss,epl_ head_input,epl_thick_input,base_input);238 epl_storing = EplStoring(basalelement,gauss,epl_ head_input,epl_thick_input,base_input);237 epl_transmitivity = EplTransmitivity(basalelement,gauss,epl_thick_input); 238 epl_storing = EplStoring(basalelement,gauss,epl_thick_input); 239 239 240 240 /*Diffusivity*/ … … 348 348 basalelement ->NodalFunctions(basis,gauss); 349 349 350 epl_storing = EplStoring(basalelement,gauss,epl_ head_input,epl_thick_input,base_input);350 epl_storing = EplStoring(basalelement,gauss,epl_thick_input); 351 351 /*Loading term*/ 352 352 water_input->GetInputValue(&water_load,gauss); … … 655 655 IssmDouble* eplhead =xNew<IssmDouble>(numnodes); 656 656 IssmDouble* residual =xNew<IssmDouble>(numnodes); 657 IssmDouble* base =xNew<IssmDouble>(numnodes); 657 658 658 659 IssmDouble init_thick =basalelement->GetMaterialParameter(HydrologydcEplInitialThicknessEnum); … … 667 668 basalelement-> GetInputListOnVertices(&eplhead[0],EplHeadEnum); 668 669 basalelement-> GetInputListOnVertices(&residual[0],SedimentHeadResidualEnum); 670 basalelement-> GetInputListOnVertices(&base[0],BaseEnum); 669 671 670 672 /*Get minimum sediment head of the element*/ … … 688 690 /*If epl thickness gets under colapse thickness, close the layer*/ 689 691 if(epl_thickness[i]<colapse_thick){ 692 vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL); 693 recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL); 694 } 695 /*If epl head gets under base elevation, close the layer*/ 696 else if(eplhead[i]<base[i]){ 690 697 vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL); 691 698 recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL); … … 714 721 xDelete<IssmDouble>(eplhead); 715 722 xDelete<IssmDouble>(residual); 723 xDelete<IssmDouble>(base); 716 724 } 717 725 /*}}}*/ 718 IssmDouble HydrologyDCEfficientAnalysis::EplStoring(Element* element,Gauss* gauss, Input* epl_ head_input, Input* epl_thick_input, Input* base_input){/*{{{*/726 IssmDouble HydrologyDCEfficientAnalysis::EplStoring(Element* element,Gauss* gauss, Input* epl_thick_input){/*{{{*/ 719 727 IssmDouble epl_storing; 720 IssmDouble storing,water_sheet; 721 IssmDouble base_elev,prestep_head,epl_thick; 728 IssmDouble epl_thick; 722 729 IssmDouble rho_freshwater = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum); 723 730 IssmDouble g = element->GetMaterialParameter(ConstantsGEnum); … … 726 733 IssmDouble water_compressibility = element->GetMaterialParameter(HydrologydcWaterCompressibilityEnum); 727 734 728 base_input->GetInputValue(&base_elev,gauss);729 epl_head_input->GetInputValue(&prestep_head,gauss);730 735 epl_thick_input->GetInputValue(&epl_thick,gauss); 731 736 732 water_sheet=max(0.0,(prestep_head-base_elev)); 733 734 storing=rho_freshwater*g*epl_porosity*epl_thick*(water_compressibility+(epl_compressibility/epl_porosity)); 735 //porosity for unconfined region 736 if (water_sheet<=0.9*epl_thick){ 737 epl_storing=epl_porosity; 738 } 739 //continuity ramp 740 else if((water_sheet<epl_thick) && (water_sheet>0.9*epl_thick)){ 741 epl_storing=(epl_thick-water_sheet)*(epl_porosity-storing)/(0.1*epl_thick)+storing; 742 } 743 //storing coefficient for confined 744 else{ 745 epl_storing=storing; 746 } 737 epl_storing=rho_freshwater*g*epl_porosity*epl_thick*(water_compressibility+(epl_compressibility/epl_porosity)); 747 738 return epl_storing; 748 739 }/*}}}*/ 749 740 750 IssmDouble HydrologyDCEfficientAnalysis::EplTransmitivity(Element* element,Gauss* gauss, Input* epl_ head_input, Input* epl_thick_input, Input* base_input){/*{{{*/741 IssmDouble HydrologyDCEfficientAnalysis::EplTransmitivity(Element* element,Gauss* gauss, Input* epl_thick_input){/*{{{*/ 751 742 IssmDouble epl_transmitivity; 752 IssmDouble base_elev,prestep_head,epl_thick; 753 IssmDouble water_sheet; 743 IssmDouble epl_thick; 754 744 IssmDouble epl_conductivity = element->GetMaterialParameter(HydrologydcEplConductivityEnum); 755 base_input->GetInputValue(&base_elev,gauss);756 epl_head_input->GetInputValue(&prestep_head,gauss);757 745 epl_thick_input->GetInputValue(&epl_thick,gauss); 758 746 759 water_sheet=max(0.0,(prestep_head-base_elev)); 760 epl_transmitivity=epl_conductivity*min(water_sheet,epl_thick); 747 epl_transmitivity=epl_conductivity*epl_thick; 761 748 762 749 return epl_transmitivity; -
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h
r21436 r21438 38 38 IssmDouble GetHydrologyKMatrixTransfer(Element* element); 39 39 IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input); 40 IssmDouble EplStoring(Element* element,Gauss* gauss, Input* epl_ head_input, Input* epl_thick_input, Input* base_input);41 IssmDouble EplTransmitivity(Element* element,Gauss* gauss, Input* epl_ head_input, Input* epl_thick_input, Input* base_input);40 IssmDouble EplStoring(Element* element,Gauss* gauss, Input* epl_thick_input); 41 IssmDouble EplTransmitivity(Element* element,Gauss* gauss, Input* epl_thick_input); 42 42 void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, int* eplzigzag_counter, Element* element); 43 43 void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec, Element* element);
Note:
See TracChangeset
for help on using the changeset viewer.