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 5053 for branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90 – NEMO

Ignore:
Timestamp:
2015-02-03T18:11:02+01:00 (9 years ago)
Author:
clem
Message:

LIM3 cleaning continues. No change in the physics besides the introduction of the monocategory sea ice

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90

    r5051 r5053  
    1313   !!   'key_lim3' :                                   LIM3 sea-ice model 
    1414   !!---------------------------------------------------------------------- 
    15    !!   lim_itd_th       : thermodynamics of ice thickness distribution 
    1615   !!   lim_itd_th_rem   : 
    1716   !!   lim_itd_th_reb   : 
     
    2625   USE ice              ! LIM-3 variables 
    2726   USE par_ice          ! LIM-3 parameters 
    28    USE limthd_lac       ! LIM-3 lateral accretion 
    2927   USE limvar           ! LIM-3 variables 
    3028   USE limcons          ! LIM-3 conservation 
     
    3432   USE wrk_nemo         ! work arrays 
    3533   USE lib_fortran      ! to use key_nosignedzero 
    36    USE timing          ! Timing 
    37    USE limcons        ! conservation tests 
     34   USE limcons          ! conservation tests 
    3835 
    3936   IMPLICIT NONE 
    4037   PRIVATE 
    4138 
    42    PUBLIC   lim_itd_th         ! called by ice_stp 
    4339   PUBLIC   lim_itd_th_rem 
    4440   PUBLIC   lim_itd_th_reb 
     
    5248   !!---------------------------------------------------------------------- 
    5349CONTAINS 
    54  
    55    SUBROUTINE lim_itd_th( kt ) 
    56       !!------------------------------------------------------------------ 
    57       !!                ***  ROUTINE lim_itd_th *** 
    58       !! 
    59       !! ** Purpose :   computes the thermodynamics of ice thickness distribution 
    60       !! 
    61       !! ** Method  : 
    62       !!------------------------------------------------------------------ 
    63       INTEGER, INTENT(in) ::   kt   ! time step index 
    64       ! 
    65       INTEGER ::   ji, jj, jk, jl   ! dummy loop index          
    66       ! 
    67       REAL(wp) :: zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b  
    68       !!------------------------------------------------------------------ 
    69       IF( nn_timing == 1 )  CALL timing_start('limitd_th') 
    70  
    71       ! conservation test 
    72       IF( ln_limdiahsb ) CALL lim_cons_hsm(0, 'limitd_th', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
    73  
    74       IF( kt == nit000 .AND. lwp ) THEN 
    75          WRITE(numout,*) 
    76          WRITE(numout,*) 'lim_itd_th  : Thermodynamics of the ice thickness distribution' 
    77          WRITE(numout,*) '~~~~~~~~~~~' 
    78       ENDIF 
    79  
    80       !------------------------------------------------------------------------------| 
    81       !  1) Transport of ice between thickness categories.                           | 
    82       !------------------------------------------------------------------------------| 
    83       ! Given thermodynamic growth rates, transport ice between 
    84       ! thickness categories. 
    85       IF( jpl > 1 )   CALL lim_itd_th_rem( 1, jpl, kt ) 
    86       ! 
    87       CALL lim_var_glo2eqv    ! only for info 
    88       CALL lim_var_agg(1) 
    89  
    90       !------------------------------------------------------------------------------| 
    91       !  3) Add frazil ice growing in leads. 
    92       !------------------------------------------------------------------------------| 
    93       CALL lim_thd_lac 
    94       CALL lim_var_glo2eqv    ! only for info 
    95  
    96       ! MV: Could put lateral melting here, would be better I think ??? 
    97  
    98       
    99       IF(ln_ctl) THEN   ! Control print 
    100          CALL prt_ctl_info(' ') 
    101          CALL prt_ctl_info(' - Cell values : ') 
    102          CALL prt_ctl_info('   ~~~~~~~~~~~~~ ') 
    103          CALL prt_ctl(tab2d_1=area , clinfo1=' lim_itd_th  : cell area :') 
    104          CALL prt_ctl(tab2d_1=at_i , clinfo1=' lim_itd_th  : at_i      :') 
    105          CALL prt_ctl(tab2d_1=vt_i , clinfo1=' lim_itd_th  : vt_i      :') 
    106          CALL prt_ctl(tab2d_1=vt_s , clinfo1=' lim_itd_th  : vt_s      :') 
    107          DO jl = 1, jpl 
    108             CALL prt_ctl_info(' ') 
    109             CALL prt_ctl_info(' - Category : ', ivar1=jl) 
    110             CALL prt_ctl_info('   ~~~~~~~~~~') 
    111             CALL prt_ctl(tab2d_1=a_i   (:,:,jl)   , clinfo1= ' lim_itd_th  : a_i      : ') 
    112             CALL prt_ctl(tab2d_1=ht_i  (:,:,jl)   , clinfo1= ' lim_itd_th  : ht_i     : ') 
    113             CALL prt_ctl(tab2d_1=ht_s  (:,:,jl)   , clinfo1= ' lim_itd_th  : ht_s     : ') 
    114             CALL prt_ctl(tab2d_1=v_i   (:,:,jl)   , clinfo1= ' lim_itd_th  : v_i      : ') 
    115             CALL prt_ctl(tab2d_1=v_s   (:,:,jl)   , clinfo1= ' lim_itd_th  : v_s      : ') 
    116             CALL prt_ctl(tab2d_1=e_s   (:,:,1,jl) , clinfo1= ' lim_itd_th  : e_s      : ') 
    117             CALL prt_ctl(tab2d_1=t_su  (:,:,jl)   , clinfo1= ' lim_itd_th  : t_su     : ') 
    118             CALL prt_ctl(tab2d_1=t_s   (:,:,1,jl) , clinfo1= ' lim_itd_th  : t_snow   : ') 
    119             CALL prt_ctl(tab2d_1=sm_i  (:,:,jl)   , clinfo1= ' lim_itd_th  : sm_i     : ') 
    120             CALL prt_ctl(tab2d_1=smv_i (:,:,jl)   , clinfo1= ' lim_itd_th  : smv_i    : ') 
    121             DO jk = 1, nlay_i 
    122                CALL prt_ctl_info(' ') 
    123                CALL prt_ctl_info(' - Layer : ', ivar1=jk) 
    124                CALL prt_ctl_info('   ~~~~~~~') 
    125                CALL prt_ctl(tab2d_1=t_i(:,:,jk,jl) , clinfo1= ' lim_itd_th  : t_i      : ') 
    126                CALL prt_ctl(tab2d_1=e_i(:,:,jk,jl) , clinfo1= ' lim_itd_th  : e_i      : ') 
    127             END DO 
    128          END DO 
    129       ENDIF 
    130       ! 
    131       ! conservation test 
    132       IF( ln_limdiahsb ) CALL lim_cons_hsm(1, 'limitd_th', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
    133       ! 
    134      IF( nn_timing == 1 )  CALL timing_stop('limitd_th') 
    135    END SUBROUTINE lim_itd_th 
    136    ! 
    13750 
    13851   SUBROUTINE lim_itd_th_rem( klbnd, kubnd, kt ) 
     
    15669      REAL(wp) ::   zx1, zwk1, zdh0, zetamin, zdamax   ! local scalars 
    15770      REAL(wp) ::   zx2, zwk2, zda0, zetamax           !   -      - 
    158       REAL(wp) ::   zx3,             zareamin          !   -      - 
     71      REAL(wp) ::   zx3         
    15972      CHARACTER (len = 15) :: fieldid 
    16073 
     
    191104      CALL wrk_alloc( jpi,jpj, zhb0,zhb1,vt_i_init,vt_i_final,vt_s_init,vt_s_final,et_i_init,et_i_final,et_s_init,et_s_final ) 
    192105 
    193       zareamin = epsi10   !minimum area in thickness categories tolerated by the conceptors of the model 
    194  
    195106      !!---------------------------------------------------------------------------------------------- 
    196107      !! 0) Conservation checkand changes in each ice category 
     
    242153      DO jj = 1, jpj 
    243154         DO ji = 1, jpi 
    244             IF ( at_i(ji,jj) .gt. zareamin ) THEN 
     155            IF ( at_i(ji,jj) > epsi10 ) THEN 
    245156               nbrem         = nbrem + 1 
    246157               nind_i(nbrem) = ji 
     
    1014925   !!---------------------------------------------------------------------- 
    1015926CONTAINS 
    1016    SUBROUTINE lim_itd_th           ! Empty routines 
    1017    END SUBROUTINE lim_itd_th 
    1018    SUBROUTINE lim_itd_th_ini 
    1019    END SUBROUTINE lim_itd_th_ini 
    1020927   SUBROUTINE lim_itd_th_rem 
    1021928   END SUBROUTINE lim_itd_th_rem 
Note: See TracChangeset for help on using the changeset viewer.