Changeset 21398


Ignore:
Timestamp:
11/18/16 07:54:23 (8 years ago)
Author:
bdef
Message:

NEW:changing transmitivity and storing coeficient for confined-unconfined ability

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

Legend:

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

    r21279 r21398  
    190190        IssmDouble  D_scalar,Jdet,dt;
    191191        IssmDouble  sediment_transmitivity;
    192         IssmDouble  transfer;
     192        IssmDouble  prestep_head,base_elev;
     193        IssmDouble  transfer,sediment_storing;
    193194        IssmDouble *xyz_list  = NULL;
    194195
     
    215216        Input* base_input     = basalelement->GetInput(BaseEnum);
    216217
    217         IssmDouble sediment_storing = SedimentStoring(basalelement);
    218218        /*Transfer related Inputs*/
    219219        if(isefficientlayer){
     
    226226                gauss          -> GaussPoint(ig);
    227227                basalelement   -> JacobianDeterminant(&Jdet,xyz_list,gauss);
    228                 SedTrans_input -> GetInputValue(&sediment_transmitivity,gauss);
     228
     229                sediment_transmitivity = SedimentTransmitivity(basalelement,gauss,sed_head_input,base_input,SedTrans_input);
     230                sediment_storing       = SedimentStoring(basalelement,gauss,sed_head_input,base_input);
     231
    229232                /*Diffusivity*/
    230233                D_scalar=sediment_transmitivity*gauss->weight*Jdet;
     
    292295        /*Intermediaries */
    293296        bool       active_element,isefficientlayer;
    294         IssmDouble dt,scalar;
     297        IssmDouble dt,scalar,sediment_storing;
    295298        IssmDouble water_head;
    296299        IssmDouble water_load,transfer;
     
    313316        basalelement->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
    314317
    315         Input* sed_head_input                    = basalelement->GetInput(SedimentHeadEnum);
    316         Input* epl_head_input                    = basalelement->GetInput(EplHeadEnum);
    317         Input* thick_input                                      = basalelement->GetInput(ThicknessEnum);
    318         Input* base_input                                         = basalelement->GetInput(BaseEnum);
    319         Input* water_input                                      = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(water_input);
     318        Input* sed_head_input = basalelement->GetInput(SedimentHeadEnum);
     319        Input* epl_head_input = basalelement->GetInput(EplHeadEnum);
     320        Input* thick_input        = basalelement->GetInput(ThicknessEnum);
     321        Input* base_input                 = basalelement->GetInput(BaseEnum);
     322        Input* water_input        = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(water_input);
    320323        if(dt!= 0.){old_wh_input = basalelement->GetInput(SedimentHeadOldEnum);                     _assert_(old_wh_input);}
    321 
    322         IssmDouble sediment_storing    = SedimentStoring(basalelement);
    323324
    324325        /*Transfer related Inputs*/
     
    326327                active_element_input = basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input);
    327328        }
     329
    328330
    329331        /* Start  looping on the number of gaussian points: */
     
    347349                        /*if EPL is present and active input is there not here*/
    348350                        active_element_input->GetInputValue(&active_element);
    349                         if(!active_element){   
     351                        if(!active_element){
    350352                                water_input->GetInputValue(&water_load,gauss);
    351353                                scalar = Jdet*gauss->weight*(water_load);
     
    356358                        }
    357359                }
     360
     361
    358362                /*Transient and transfer terms*/
    359363                if(dt!=0.){
    360364                        old_wh_input    ->GetInputValue(&water_head,gauss);
     365                        sediment_storing = SedimentStoring(basalelement,gauss,sed_head_input,base_input);//sed_head_input
    361366                        if(isefficientlayer){
    362367                                /*Dealing with the sediment part of the transfer term*/
     
    508513
    509514/*Intermediaries*/
    510 IssmDouble HydrologyDCInefficientAnalysis::SedimentStoring(Element* element){/*{{{*/
     515IssmDouble HydrologyDCInefficientAnalysis::SedimentStoring(Element* element,Gauss* gauss,Input* sed_head_input, Input* base_input){/*{{{*/
     516        IssmDouble sediment_storing;
     517        IssmDouble specific_porosity;
     518        IssmDouble base_elev,prestep_head,water_sheet;
    511519        IssmDouble rho_freshwater           = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
    512520        IssmDouble g                        = element->GetMaterialParameter(ConstantsGEnum);
     
    515523        IssmDouble sediment_compressibility = element->GetMaterialParameter(HydrologydcSedimentCompressibilityEnum);
    516524        IssmDouble water_compressibility    = element->GetMaterialParameter(HydrologydcWaterCompressibilityEnum);
    517         return rho_freshwater*g*sediment_porosity*sediment_thickness*(water_compressibility+(sediment_compressibility/sediment_porosity));               
    518 }/*}}}*/
    519 
    520 IssmDouble HydrologyDCInefficientAnalysis::EplSpecificStoring(Element* element){/*{{{*/
    521         IssmDouble rho_freshwater        = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
    522         IssmDouble g                     = element->GetMaterialParameter(ConstantsGEnum);
    523         IssmDouble epl_porosity          = element->GetMaterialParameter(HydrologydcEplPorosityEnum);
    524         IssmDouble epl_compressibility   = element->GetMaterialParameter(HydrologydcEplCompressibilityEnum);
    525         IssmDouble water_compressibility = element->GetMaterialParameter(HydrologydcWaterCompressibilityEnum);
    526         return rho_freshwater*g*epl_porosity*(water_compressibility+(epl_compressibility/epl_porosity));                 
     525        base_input->GetInputValue(&base_elev,gauss);
     526        sed_head_input->GetInputValue(&prestep_head,gauss);
     527        water_sheet=max(0.0,(prestep_head-(base_elev-sediment_thickness)));
     528        specific_porosity=sediment_porosity-rho_freshwater*g*sediment_porosity*sediment_thickness*(water_compressibility+(sediment_compressibility/sediment_porosity));
     529        if (water_sheet<=0.9*sediment_thickness){//porosity for unconfined region
     530                sediment_storing=sediment_porosity;
     531        }
     532        else if((water_sheet<sediment_thickness) && (water_sheet>0.9*sediment_thickness)){//continuity ramp
     533                sediment_storing=(sediment_thickness-water_sheet)*specific_porosity/(0.1*sediment_thickness)+
     534                        rho_freshwater*g*sediment_porosity*sediment_thickness*(water_compressibility+(sediment_compressibility/sediment_porosity));
     535        }
     536        else{//storing coefficient for confined
     537                sediment_storing=rho_freshwater*g*sediment_porosity*sediment_thickness*(water_compressibility+(sediment_compressibility/sediment_porosity));
     538        }
     539        return sediment_storing;
     540}/*}}}*/
     541IssmDouble HydrologyDCInefficientAnalysis::SedimentTransmitivity(Element* element,Gauss* gauss,Input* sed_head_input, Input* base_input,Input* SedTrans_input){/*{{{*/
     542        IssmDouble sediment_transmitivity;
     543        IssmDouble FullLayer_transmitivity;
     544        IssmDouble base_elev,prestep_head,water_sheet;
     545        IssmDouble sediment_thickness       = element->GetMaterialParameter(HydrologydcSedimentThicknessEnum);
     546        base_input->GetInputValue(&base_elev,gauss);
     547        sed_head_input->GetInputValue(&prestep_head,gauss);
     548        SedTrans_input->GetInputValue(&FullLayer_transmitivity,gauss);
     549        water_sheet=max(0.0,(prestep_head-(base_elev-sediment_thickness)));
     550        if (water_sheet<=sediment_thickness){
     551                sediment_transmitivity=FullLayer_transmitivity*water_sheet/sediment_thickness;
     552        }
     553        else{
     554                sediment_transmitivity=FullLayer_transmitivity;
     555        }
     556        return sediment_transmitivity;
    527557}/*}}}*/
    528558
  • issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h

    r18719 r21398  
    3434                /*Intermediaries*/
    3535                void GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
    36                 IssmDouble SedimentStoring(Element* element);
    37                 IssmDouble EplSpecificStoring(Element* element);
     36                IssmDouble SedimentStoring(Element* element, Gauss* gauss, Input* sed_head_input, Input* base_input);
     37                IssmDouble SedimentTransmitivity(Element* element,Gauss* gauss,Input* sed_head_input, Input* base_input,Input* SedTrans_input);
    3838                IssmDouble GetHydrologyDCInefficientHmax(Element* element, Gauss* gauss, Input* thickness_input, Input* base_input);
    3939                void GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode);
Note: See TracChangeset for help on using the changeset viewer.