Changeset 23143


Ignore:
Timestamp:
08/21/18 07:02:50 (7 years ago)
Author:
hakesson
Message:

CHG: working on PISM friction law

File:
1 edited

Legend:

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

    r23114 r23143  
    676676}/*}}}*/
    677677void Friction::GetAlpha2PISM(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
    678         /*Here, we want to parameterize the friction as
    679          *
    680          * ... more comments to come
     678        /*Here, we want to parameterize the friction using a pseudoplastic friction law,
     679         * computing the basal shear stress as
     680         *
     681         * alpha2 = tau_c (u_b/(abs(u_b)^(1-q)*u_0^q))
     682         *
     683         * The yield stress tau_c is a function of the effective pressure N
     684         * using a Mohr-Coloumb criterion, so that
     685         * tau_c = tan(phi)*N,
     686         * where phi is the till friction angle, representing sediment strength
     687         *
     688         * The effective pressure is given by Eq. (5) in Aschwanden et al. 2016:
     689         *
     690         * N = delta * P0 * 10^((e_0/Cc)(1-(W/Wmax)))
     691         *
     692         * W is calculated by a non-conserving hydrology model in HydrologyPismAnalysis.cpp
     693         *
     694         * see Aschwanden et al. 2016 and Bueler and Brown, 2009 for more details
    681695         */
    682696
    683         /*compute ice pressure P0*/
     697        /*compute ice overburden pressure P0*/
    684698        IssmDouble thickness,base,P0;
    685699        element->GetInputValue(&thickness, gauss,ThicknessEnum);
     
    697711        element->GetInputValue(&W,gauss,WatercolumnEnum);
    698712        element->GetInputValue(&Wmax,gauss,FrictionWatercolumnMaxEnum);
     713
     714//      /*Check that water column height is within 0 and upper bound, correct if needed*/
     715//      // if watercolumn height is higher than the maximum allowed height, set height to upper bound
     716//      if(W>Wmax){
     717//              W=Wmax;
     718//      }
     719//      // if watercolumn height is negative (shouldn't happen), set it to 0
     720//      if(W<0){
     721//              W=0;
     722//      }
     723//      // if watercolumn height is within 0 and upper bound, nothing to be done
     724//      else{
     725//              //do nothing
     726//      }
     727
    699728        N = delta*P0*pow(10.,(e0/Cc)*(1.-W/Wmax));
    700729
     730        /*Get till friction angles, defined by user [deg]*/
     731        IssmDouble phi,pi;
     732        element->GetInputValue(&phi,gauss,FrictionTillFrictionAngleEnum);
     733
     734        /*Convert till friction angle from user-defined deg to rad, which Matlab uses*/
     735        phi = phi*pi/180.;
     736
    701737        /*Compute yield stress following a Mohr-Colomb criterion*/
    702         IssmDouble phi;
    703         element->GetInputValue(&phi,gauss,FrictionTillFrictionAngleEnum);
    704738        IssmDouble tau_c = N*tan(phi);
    705739
Note: See TracChangeset for help on using the changeset viewer.