Ignore:
Timestamp:
12/20/22 05:28:05 (2 years ago)
Author:
vverjans
Message:

NEW arma hydrology model implemented (nightly test and python translation to be done)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/c/classes/Loads/Friction.cpp

    r27450 r27462  
    344344
    345345        /*Get effective pressure*/
    346         bool ispwStochastic;
    347         IssmDouble Neff;
    348         element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
    349         if(ispwStochastic){
    350                 /*Retrieve stochastic water pressure and compute ice pressure*/
    351                 IssmDouble p_ice,p_water,Neff_limit;
    352                 element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
    353                 element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
    354                 p_ice = IcePressure(gauss);
    355                 Neff  = max(Neff_limit*p_ice, p_ice - p_water);
    356         }       
    357         else{
    358                 /*Compute effective pressure directly*/
    359                 Neff = EffectivePressure(gauss);
    360         }
     346        bool ispwHydro,ispwStochastic;
     347   IssmDouble Neff;
     348   element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
     349   element->parameters->FindParam(&ispwHydro,HydrologyIsWaterPressureArmaEnum);
     350   if(ispwStochastic || ispwHydro){
     351      /*Retrieve pre-computed water pressure and compute ice pressure*/
     352      IssmDouble p_ice,p_water,Neff_limit;
     353      element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
     354      element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
     355      p_ice = IcePressure(gauss);
     356      Neff  = max(Neff_limit*p_ice, p_ice - p_water);
     357   }
     358   else{
     359      /*Compute effective pressure directly*/
     360      Neff = EffectivePressure(gauss);
     361   }
    361362       
    362363        /*Get velocity magnitude*/
     
    559560        IssmDouble vmag = VelMag(gauss);
    560561
    561         bool ispwStochastic;
    562         IssmDouble Neff;
    563         element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
    564         if(ispwStochastic){
    565                 /*Retrieve stochastic water pressure and compute ice pressure*/
    566                 IssmDouble p_ice,p_water,Neff_limit;
    567                 element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
     562        bool ispwHydro,ispwStochastic;
     563   IssmDouble Neff;
     564   element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
     565   element->parameters->FindParam(&ispwHydro,HydrologyIsWaterPressureArmaEnum);
     566   if(ispwStochastic || ispwHydro){
     567      /*Retrieve pre-computed water pressure and compute ice pressure*/
     568      IssmDouble p_ice,p_water,Neff_limit;
     569      element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
    568570                element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
    569                 p_ice = IcePressure(gauss);
    570                 Neff  = max(Neff_limit*p_ice, p_ice - p_water);
    571         }       
     571      p_ice = IcePressure(gauss);
     572      Neff  = max(Neff_limit*p_ice, p_ice - p_water);
     573   }   
    572574        else{
    573575                /*Compute effective pressure directly*/
Note: See TracChangeset for help on using the changeset viewer.