New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 2135 for branches/devmercator2010_1/NEMO/LIM_SRC_3 – NEMO

Ignore:
Timestamp:
2010-09-29T19:31:33+02:00 (14 years ago)
Author:
cbricaud
Message:

add changes from branch dev_1784_EVP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/devmercator2010_1/NEMO/LIM_SRC_3/limrhg.F90

    r1469 r2135  
    44   !!   Ice rheology : sea ice rheology 
    55   !!====================================================================== 
    6    !! History :   -   !  2007-03  (M.A. Morales Maqueda, S. Bouillon) Original code 
    7    !!            3.0  !  2008-03  (M. Vancoppenolle) LIM3 
     6   !! History :  LIM  !  2007-03  (M.A. Morales Maqueda, S. Bouillon) Original code 
     7   !!            3.0  !  2008-03  (M. Vancoppenolle) LIM 3 
    88   !!             -   !  2008-11  (M. Vancoppenolle, S. Bouillon, Y. Aksenov) add surface tilt in ice rheolohy  
     9   !!            3.3  !  2009-05  (G.Garric) addition of the lim2_evp cas 
    910   !!---------------------------------------------------------------------- 
    10 #if defined key_lim3 
     11#if defined key_lim3 || (  defined key_lim2 && ! defined key_lim2_vp ) 
    1112   !!---------------------------------------------------------------------- 
    1213   !!   'key_lim3'                                      LIM3 sea-ice model 
     
    1415   !!   lim_rhg   : computes ice velocities 
    1516   !!---------------------------------------------------------------------- 
    16    !! * Modules used 
    17    USE phycst 
    18    USE par_oce 
    19    USE dom_oce 
    20    USE dom_ice 
    21    USE sbc_oce         ! Surface boundary condition: ocean fields 
    22    USE sbc_ice         ! Surface boundary condition: ice fields 
    23    USE ice 
    24    USE iceini 
    25    USE lbclnk 
    26    USE lib_mpp 
    27    USE in_out_manager  ! I/O manager 
    28    USE limitd_me 
    29    USE prtctl          ! Print control 
    30  
     17   USE phycst           ! physical constants 
     18   USE par_oce          ! ocean parameters 
     19   USE dom_oce          ! ocean domain 
     20   USE sbc_oce          ! Surface boundary condition: ocean fields 
     21   USE sbc_ice          ! Surface boundary condition: ice fields 
     22   USE lbclnk           ! lateral boundary condition - MPP exchanges 
     23   USE lib_mpp          ! MPP library 
     24   USE in_out_manager   ! I/O manager 
     25   USE limitd_me        ! LIM3:  
     26   USE prtctl           ! control print 
     27#if defined key_lim3 
     28   USE ice              ! LIM3: ice variables 
     29   USE dom_ice          ! LIM3: ice domain 
     30   USE iceini           ! LIM3: ice initialisation 
     31#endif 
     32#if defined key_lim2 && ! defined key_lim2_vp 
     33   USE ice_2            ! LIM2: ice variables 
     34   USE dom_ice_2        ! LIM2: ice domain 
     35   USE iceini_2         ! LIM2: ice initialisation 
     36#endif 
    3137 
    3238   IMPLICIT NONE 
    3339   PRIVATE 
    3440 
    35    !! * Routine accessibility 
    36    PUBLIC lim_rhg  ! routine called by lim_dyn 
    37  
    38    !! * Substitutions 
    39 #  include "vectopt_loop_substitute.h90" 
     41   PUBLIC   lim_rhg   ! routine called by lim_dyn module 
    4042 
    4143   !! * Module variables 
     
    4345      rzero   = 0.e0   ,  & 
    4446      rone    = 1.e0 
     47 
     48   !! * Substitutions 
     49#  include "vectopt_loop_substitute.h90" 
    4550   !!---------------------------------------------------------------------- 
    46    !!   LIM 3.0,  UCL-LOCEAN-IPSL (2008)  
     51   !! NEMO/LIM-3 3.3,  UCL-LOCEAN-IPSL (2010)  
    4752   !! $Id$ 
    4853   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4954   !!---------------------------------------------------------------------- 
    50  
    5155CONTAINS 
    5256 
    5357   SUBROUTINE lim_rhg( k_j1, k_jpj ) 
    54  
    5558      !!------------------------------------------------------------------- 
    5659      !!                 ***  SUBROUTINE lim_rhg  *** 
     
    100103      !! 
    101104      !! ** References : Hunke and Dukowicz, JPO97 
    102       !!                 Bouillon et al., 08, in prep (update this when 
    103       !!                 published) 
    104       !!                 Vancoppenolle et al., OM08 
     105      !!                 Bouillon et al., 2009, Ocean. Modelling, 27, 174-184. 
     106      !!                 Vancoppenolle et al. 2009, Ocean Modelling, 27, 33-53. 
     107      !!------------------------------------------------------------------- 
     108      INTEGER, INTENT(in) ::   k_j1    ! southern j-index for ice computation 
     109      INTEGER, INTENT(in) ::   k_jpj   ! northern j-index for ice computation 
    105110      !! 
    106       !!------------------------------------------------------------------- 
    107       ! * Arguments 
    108       ! 
    109       INTEGER, INTENT(in) :: & 
    110          k_j1 ,                      & !: southern j-index for ice computation 
    111          k_jpj                         !: northern j-index for ice computation 
    112  
    113       ! * Local variables 
    114       INTEGER ::   ji, jj              !: dummy loop indices 
    115  
    116       INTEGER  :: & 
    117          jter                          !: temporary integers 
    118  
    119       CHARACTER (len=50) ::   charout 
    120  
    121       REAL(wp) :: & 
    122          zt11, zt12, zt21, zt22,     & !: temporary scalars 
    123          ztagnx, ztagny,             & !: wind stress on U/V points                        
    124          delta                         ! 
    125  
    126       REAL(wp) :: & 
    127          za,                         & !: 
    128          zstms,                      & !: temporary scalar for ice strength 
    129          zsang,                      & !: temporary scalar for coriolis term 
    130          zmask                         !: mask for the computation of ice mass 
    131  
    132       REAL(wp),DIMENSION(jpi,jpj) :: & 
    133          zpresh        ,             & !: temporary array for ice strength 
    134          zpreshc       ,             & !: Ice strength on grid cell corners (zpreshc) 
    135          zfrld1, zfrld2,             & !: lead fraction on U/V points                                     
    136          zmass1, zmass2,             & !: ice/snow mass on U/V points                                     
    137          zcorl1, zcorl2,             & !: coriolis parameter on U/V points 
    138          za1ct, za2ct  ,             & !: temporary arrays 
    139          zc1           ,             & !: ice mass 
    140          zusw          ,             & !: temporary weight for the computation 
    141                                 !: of ice strength 
    142          u_oce1, v_oce1,             & !: ocean u/v component on U points                            
    143          u_oce2, v_oce2,             & !: ocean u/v component on V points 
    144          u_ice2,                     & !: ice u component on V point 
    145          v_ice1                        !: ice v component on U point 
     111      INTEGER  ::   ji, jj   ! dummy loop indices 
     112      INTEGER  ::   jter     ! local integers 
     113      CHARACTER (len=50) ::   charout   ! local character 
     114      REAL(wp) ::   zt11, zt12, zt21, zt22   ! local scalars 
     115      REAL(wp) ::   ztagnx, ztagny, delta    !   -      - 
     116      REAL(wp) ::   za, zstms, zsang, zmask  !   -      - 
     117      REAL(wp) ::   zresm, zindb, zdummy     !   -    - 
     118 
     119      REAL(wp),DIMENSION(jpi,jpj) ::   zpresh , zfrld1, zmass1, zcorl1, za1ct    ! 2D workspace 
     120      REAL(wp),DIMENSION(jpi,jpj) ::   zpreshc, zfrld2, zmass2, zcorl2, za2ct    !  -      - 
     121      REAL(wp),DIMENSION(jpi,jpj) ::   u_oce1, v_oce1, u_ice2, zc1               !  -      -                           
     122      REAL(wp),DIMENSION(jpi,jpj) ::   u_oce2, v_oce2, v_ice1, zusw              !  -      - 
     123      REAL(wp),DIMENSION(jpi,jpj) ::   zf1, zf2                                  !  -      - 
    146124 
    147125      REAL(wp) :: & 
     
    159137         sigma1, sigma2                !: internal ice stress 
    160138 
    161       REAL(wp),DIMENSION(jpi,jpj) :: & 
    162          zf1, zf2                      !: arrays for internal stresses 
    163139 
    164140      REAL(wp),DIMENSION(jpi,jpj) :: & 
     
    170146         zs12                          !: Non-diagonal stress tensor component zs12 
    171147 
    172       REAL(wp) :: & 
    173          zresm            ,          & !: Maximal error on ice velocity 
    174          zindb            ,          & !: ice (1) or not (0)       
    175          zdummy                        !: dummy argument 
    176  
    177       REAL(wp),DIMENSION(jpi,jpj) :: & 
    178          zu_ice           ,          & !: Ice velocity on previous time step 
    179          zv_ice           ,          & 
    180          zresr                         !: Local error on velocity 
    181  
     148 
     149      REAL(wp),DIMENSION(jpi,jpj) ::   zu_ice, zv_ice, zresr   ! 
     150      !!------------------------------------------------------------------- 
     151 
     152#if  defined key_lim2 && ! defined key_lim2_vp 
     153     vt_s => hsnm 
     154     vt_i => hicm 
     155     at_i(:,:) = 1. - frld(:,:) 
     156#endif 
    182157      ! 
    183158      !------------------------------------------------------------------------------! 
     
    190165      u_ice2(:,:)  = 0.0 ; v_ice1(:,:)  = 0.0 
    191166      zdd(:,:)     = 0.0 ; zdt(:,:)     = 0.0 ; zds(:,:)     = 0.0 
    192  
     167#if defined key_lim3 
    193168      ! Ice strength on T-points 
    194169      CALL lim_itd_me_icestrength(ridge_scheme_swi) 
     170#endif 
    195171 
    196172      ! Ice mass and temp variables 
     
    200176         DO ji = 1 , jpi 
    201177            zc1(ji,jj)    = tms(ji,jj) * ( rhosn * vt_s(ji,jj) + rhoic * vt_i(ji,jj) ) 
     178#if defined key_lim3 
    202179            zpresh(ji,jj) = tms(ji,jj) *  strength(ji,jj) / 2. 
     180#else 
     181            zpresh(ji,jj) = tms(ji,jj) *  2. * pstar * hicm(ji,jj) * EXP( -c_rhg * frld(ji,jj) ) 
     182#endif 
    203183            ! tmi = 1 where there is ice or on land 
    204184            tmi(ji,jj)    = 1.0 - ( 1.0 - MAX( 0.0 , SIGN ( 1.0 , vt_i(ji,jj) - & 
     
    269249               / ( e2t(ji,jj+1) + e2t(ji,jj) + epsd ) 
    270250            ! 
     251            ! Mass, coriolis coeff. and currents 
    271252            u_oce1(ji,jj)  = u_oce(ji,jj) 
    272253            v_oce2(ji,jj)  = v_oce(ji,jj) 
Note: See TracChangeset for help on using the changeset viewer.