Changeset 357 for trunk


Ignore:
Timestamp:
06/10/22 14:12:38 (2 years ago)
Author:
aquiquet
Message:

Corrections for Coulomb friction with no hydrology, we now follow PISM formulation for the drag coefficient

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SOURCES/dragging_coulomb_friction_simplhydro_mod.f90

    r351 r357  
    5555 
    5656real :: till_c0        !  A friction coefficient 
    57 real :: TFA_coeff !  Till friction angle parameter, could be spatially variable 
     57real :: TFA_min !  Till friction angle parameter, min value (below bed_crit) 
     58real :: TFA_max !  Till friction angle parameter, max value (above bed_crit) 
     59real :: bed_crit  !  Critical bed elevation for change in TFA 
    5860real :: Ob_coeff  !  A friction coefficient, could be spatially variable 
    5961real :: m_nolin   !  Schoof non-linear exponent 
     
    9496integer i,j 
    9597 
    96 namelist/drag_coulomb_friction_simplhydro/till_c0, TFA_coeff, Ob_coeff,m_nolin,niter_nolin,betamax,betamin,bool_sedim,file_sedim,seuil_sedim,coef_sedim 
     98namelist/drag_coulomb_friction_simplhydro/till_c0, TFA_min, TFA_max, bed_crit, Ob_coeff,m_nolin,niter_nolin,betamax,betamin,bool_sedim,file_sedim,seuil_sedim,coef_sedim 
    9799 
    98100 
     
    113115write(num_rep_42,*) 
    114116write(num_rep_42,*) 'till_c0               = ', till_c0 
    115 write(num_rep_42,*) 'TFA_coeff             = ', TFA_coeff 
     117write(num_rep_42,*) 'TFA_min               = ', TFA_min 
     118write(num_rep_42,*) 'TFA_max               = ', TFA_max 
     119write(num_rep_42,*) 'bed_crit              = ', bed_crit 
    116120write(num_rep_42,*) 'Ob_coeff              = ', Ob_coeff 
    117121write(num_rep_42,*) 'm_nolin               = ', m_nolin 
     
    125129write(num_rep_42,*)'/'                             
    126130write(num_rep_42,428) '! till_c0: sediment cohesion (usually = 0)' 
    127 write(num_rep_42,428) '! TFA_coeff: till friction angle' 
     131write(num_rep_42,428) '! TFA_min/max: till friction angle' 
     132write(num_rep_42,428) '! bed_crit: to change the value of TFA with depth (<0 for below pi sea level' 
    128133write(num_rep_42,428) '! Ob_coeff: a friction coefficient' 
    129134write(num_rep_42,428) '! m_nolin: non-linear exponent, from 1 to infinity (put -1 for infinity)' 
     
    138143mstream_mx(:,:)=1 
    139144mstream_my(:,:)=1 
    140  
    141145 
    142146! coefficient permettant de modifier le basal drag. 
     
    200204implicit none 
    201205 
    202 ! Mohr-Coulomb friction law without hydrology as described in Pattyn et al. 2017.   
     206! Mohr-Coulomb friction law without hydrology as described in PISM Martin et al. TC (2011).   
     207real, dimension(nx,ny) :: TFA    ! till friction angle  
     208real, dimension(nx,ny) :: frac_porewater  ! water pressure as a fraction of the total overburden pressure 
    203209real, dimension(nx,ny) :: effective_pressure    ! local simple Neff 
    204210real, dimension(nx,ny) :: effective_pressure_mx ! local simple Neff 
     
    211217real,dimension(nx,ny) :: hwatmy ! hauteur d'eau staggered grille - afq 
    212218 
     219real,dimension(nx,ny) :: Bsea ! temporary variable 
     220 
    213221real,parameter        :: u0 = 100d0 ! threshold sliding speed 
    214222 
     
    216224 
    217225!$OMP WORKSHARE 
     226Bsea(:,:) = Bsoc(:,:)-sealevel_2d(:,:) 
    218227hwatmx(:,:)=0. 
    219228hwatmy(:,:)=0. 
    220 effective_pressure(:,:)= max (  RO*G*H(:,:)-max(-ROFRESH*G*(B(:,:)-sealevel_2d(:,:)), 0.) , 1. ) !limited to 1Pa 
     229where (Bsea(:,:).le.bed_crit) 
     230   TFA(:,:) = TFA_min 
     231elsewhere (Bsea(:,:).le.0.) 
     232   TFA(:,:) = TFA_min + TFA_max * (1-Bsea(:,:)/bed_crit) 
     233elsewhere 
     234   TFA(:,:) = TFA_max 
     235endwhere 
     236 
     237! [0,1] linear elevation weighing: 
     238frac_porewater(:,:) = 1. - min ( max ( Bsea(:,:), 0. ) , 1000. ) / 1000. 
     239 
     240 
     241effective_pressure(:,:) = max ( RO*G*H(:,:) * (1.-0.96 * frac_porewater(:,:)) , 1. ) !limited to 1Pa 
    221242!$OMP END WORKSHARE 
     243 
    222244!$OMP DO 
    223245do i=2,nx 
     
    238260!$OMP WORKSHARE 
    239261 
    240 tauc_mx(:,:) = till_c0 + Ob_coeff*TAND(TFA_coeff) * effective_pressure_mx(:,:) * coef_sedim_mx(:,:) 
    241 tauc_my(:,:) = till_c0 + Ob_coeff*TAND(TFA_coeff) * effective_pressure_my(:,:) * coef_sedim_my(:,:) 
     262tauc_mx(:,:) = till_c0 + Ob_coeff*TAND(TFA) * effective_pressure_mx(:,:) * coef_sedim_mx(:,:) 
     263tauc_my(:,:) = till_c0 + Ob_coeff*TAND(TFA) * effective_pressure_my(:,:) * coef_sedim_my(:,:) 
    242264 
    243265! ux/uy(:,:,nz) should be used but only uxbar/uybar are updated by diagno_L2 
Note: See TracChangeset for help on using the changeset viewer.