Changeset 21438


Ignore:
Timestamp:
12/12/16 01:17:08 (8 years ago)
Author:
bdef
Message:

CHG:reverting to confined for EPL but with colapse if head gets under base elevation

Location:
issm/trunk-jpl/src/c/analyses
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp

    r21436 r21438  
    235235                basalelement    ->JacobianDeterminant(&Jdet,xyz_list,gauss);
    236236
    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);
    239239
    240240                /*Diffusivity*/
     
    348348                basalelement ->NodalFunctions(basis,gauss);
    349349
    350                 epl_storing     = EplStoring(basalelement,gauss,epl_head_input,epl_thick_input,base_input);
     350                epl_storing     = EplStoring(basalelement,gauss,epl_thick_input);
    351351                /*Loading term*/
    352352                water_input->GetInputValue(&water_load,gauss);
     
    655655        IssmDouble* eplhead       =xNew<IssmDouble>(numnodes);
    656656        IssmDouble* residual      =xNew<IssmDouble>(numnodes);
     657        IssmDouble* base          =xNew<IssmDouble>(numnodes);
    657658       
    658659        IssmDouble init_thick    =basalelement->GetMaterialParameter(HydrologydcEplInitialThicknessEnum);
     
    667668        basalelement-> GetInputListOnVertices(&eplhead[0],EplHeadEnum);
    668669        basalelement-> GetInputListOnVertices(&residual[0],SedimentHeadResidualEnum);
     670        basalelement-> GetInputListOnVertices(&base[0],BaseEnum);
    669671
    670672        /*Get minimum sediment head of the element*/
     
    688690                        /*If epl thickness gets under colapse thickness, close the layer*/
    689691                        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]){
    690697                                vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL);
    691698                                recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
     
    714721        xDelete<IssmDouble>(eplhead);
    715722        xDelete<IssmDouble>(residual);
     723        xDelete<IssmDouble>(base);
    716724}
    717725/*}}}*/
    718 IssmDouble HydrologyDCEfficientAnalysis::EplStoring(Element* element,Gauss* gauss, Input* epl_head_input, Input* epl_thick_input, Input* base_input){/*{{{*/
     726IssmDouble HydrologyDCEfficientAnalysis::EplStoring(Element* element,Gauss* gauss, Input* epl_thick_input){/*{{{*/
    719727        IssmDouble epl_storing;
    720         IssmDouble storing,water_sheet;
    721         IssmDouble base_elev,prestep_head,epl_thick;
     728        IssmDouble epl_thick;
    722729        IssmDouble rho_freshwater        = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
    723730        IssmDouble g                     = element->GetMaterialParameter(ConstantsGEnum);
     
    726733        IssmDouble water_compressibility = element->GetMaterialParameter(HydrologydcWaterCompressibilityEnum);
    727734
    728         base_input->GetInputValue(&base_elev,gauss);
    729         epl_head_input->GetInputValue(&prestep_head,gauss);
    730735        epl_thick_input->GetInputValue(&epl_thick,gauss);
    731736       
    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));
    747738        return epl_storing;
    748739}/*}}}*/
    749740
    750 IssmDouble HydrologyDCEfficientAnalysis::EplTransmitivity(Element* element,Gauss* gauss, Input* epl_head_input, Input* epl_thick_input, Input* base_input){/*{{{*/
     741IssmDouble HydrologyDCEfficientAnalysis::EplTransmitivity(Element* element,Gauss* gauss, Input* epl_thick_input){/*{{{*/
    751742        IssmDouble epl_transmitivity;
    752         IssmDouble base_elev,prestep_head,epl_thick;
    753         IssmDouble water_sheet;
     743        IssmDouble epl_thick;
    754744        IssmDouble epl_conductivity      = element->GetMaterialParameter(HydrologydcEplConductivityEnum);
    755         base_input->GetInputValue(&base_elev,gauss);
    756         epl_head_input->GetInputValue(&prestep_head,gauss);
    757745        epl_thick_input->GetInputValue(&epl_thick,gauss);
    758746
    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;
    761748
    762749        return epl_transmitivity;
  • issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h

    r21436 r21438  
    3838                IssmDouble GetHydrologyKMatrixTransfer(Element* element);
    3939                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);
    4242                void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, int* eplzigzag_counter, Element* element);
    4343                void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec, Element* element);
Note: See TracChangeset for help on using the changeset viewer.