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 717 for trunk/NEMO/LIM_SRC/limthd.F90 – NEMO

Ignore:
Timestamp:
2007-10-16T13:03:55+02:00 (17 years ago)
Author:
smasson
Message:

finalize the first set of modifications related to ticket:3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC/limthd.F90

    r709 r717  
    44   !!              LIM thermo ice model : ice thermodynamic 
    55   !!====================================================================== 
     6   !! History :  1.0  !  00-01 (LIM) 
     7   !!            2.0  !  02-07 (C. Ethe, G. Madec) F90 
     8   !!            2.0  !  03-08 (C. Ethe)  add lim_thd_init 
     9   !!--------------------------------------------------------------------- 
    610#if defined key_ice_lim 
    711   !!---------------------------------------------------------------------- 
     
    1115   !!   lim_thd_init : initialisation of sea-ice thermodynamic 
    1216   !!---------------------------------------------------------------------- 
    13    !! * Modules used 
     17   USE phycst          ! physical constants 
    1418   USE dom_oce         ! ocean space and time domain variables 
    15    USE sbc_oce         ! surface boundary condition: ocean 
     19   USE lbclnk 
     20   USE in_out_manager  ! I/O manager 
     21   USE ice             ! LIM sea-ice variables 
    1622   USE ice_oce         ! sea-ice/ocean variables 
     23   USE sbc_oce         !  
     24   USE sbc_ice         !  
    1725   USE thd_ice         ! LIM thermodynamic sea-ice variables 
    1826   USE dom_ice         ! LIM sea-ice domain 
    19    USE ice             ! LIM sea-ice variables 
    2027   USE iceini 
    2128   USE limthd_zdf 
    2229   USE limthd_lac 
    2330   USE limtab 
    24    USE phycst          ! physical constants 
    25    USE in_out_manager  ! I/O manager 
    2631   USE prtctl          ! Print control 
    27    USE lbclnk 
    2832       
    2933   IMPLICIT NONE 
    3034   PRIVATE 
    3135 
    32    !! * Routine accessibility 
    33    PUBLIC lim_thd       ! called by lim_step 
    34  
    35    !! * Module variables 
    36    REAL(wp)  ::            &  ! constant values 
    37       epsi20 = 1.e-20   ,  & 
    38       epsi16 = 1.e-16   ,  & 
    39       epsi04 = 1.e-04   ,  & 
    40       zzero  = 0.e0     ,  & 
    41       zone   = 1.e0 
     36   PUBLIC   lim_thd    ! called by lim_step 
     37 
     38   REAL(wp)  ::   epsi20 = 1.e-20   ,  &  ! constant values 
     39      &           epsi16 = 1.e-16   ,  & 
     40      &           epsi04 = 1.e-04   ,  & 
     41      &           zzero  = 0.e0     ,  & 
     42      &           zone   = 1.e0 
    4243 
    4344   !! * Substitutions 
     
    4748   !!   LIM 2.0,  UCL-LOCEAN-IPSL (2005)  
    4849   !! $Id$ 
    49    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     50   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    5051   !!---------------------------------------------------------------------- 
    5152 
     
    6869      !!             - back to the geographic grid 
    6970      !! 
    70       !! ** References : 
    71       !!       H. Goosse et al. 1996, Bul. Soc. Roy. Sc. Liege, 65, 87-90 
    72       !! 
    73       !! History : 
    74       !!   1.0  !  00-01 (LIM) 
    75       !!   2.0  !  02-07 (C. Ethe, G. Madec) F90 
     71      !! References :   Goosse et al. 1996, Bul. Soc. Roy. Sc. Liege, 65, 87-90 
    7672      !!--------------------------------------------------------------------- 
    7773      INTEGER, INTENT(in) ::   kt     ! number of iteration 
    78  
     74      !! 
    7975      INTEGER  ::   ji, jj,    &   ! dummy loop indices 
    8076         nbpb  ,               &   ! nb of icy pts for thermo. cal. 
     
    9288         zfontn             ,  &   ! heat flux from snow thickness 
    9389         zfntlat, zpareff          ! test. the val. of lead heat budget 
    94       REAL(wp), DIMENSION(jpi,jpj) :: & 
    95          zhicifp            ,  &   ! ice thickness for outputs 
    96          zqlbsbq                   ! link with lead energy budget qldif 
    97       REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 
    98          zmsk                      ! working array 
     90      REAL(wp), DIMENSION(jpi,jpj) ::   zhicifp,   &  ! ice thickness for outputs 
     91         &                              zqlbsbq       ! link with lead energy budget qldif 
     92      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zmsk      ! working array 
    9993      !!------------------------------------------------------------------- 
    10094 
    101       IF( kt == nit000  )   CALL lim_thd_init  ! Initialization (first time-step only) 
     95      IF( kt == nit000 )   CALL lim_thd_init  ! Initialization (first time-step only) 
    10296    
    10397      !-------------------------------------------! 
     
    188182            !  temperature and turbulent mixing (McPhee, 1992) 
    189183            zfric_u        = MAX ( MIN( SQRT( ust2s(ji,jj) ) , zfric_umax ) , zfric_umin )  ! friction velocity 
    190             fdtcn(ji,jj)  = zindb * rau0 * rcp * 0.006  * zfric_u * ( sst_io(ji,jj) - tfu(ji,jj) )  
     184!!gm old    fdtcn(ji,jj)  = zindb * rau0 * rcp * 0.006  * zfric_u * ( sst_io(ji,jj) - tfu(ji,jj) )  
     185            fdtcn(ji,jj)  = zindb * rau0 * rcp * 0.006  * zfric_u * ( sst_m(ji,jj) - tfu(ji,jj) )  
    191186            qdtcn(ji,jj)  = zindb * fdtcn(ji,jj) * frld(ji,jj) * rdt_ice 
    192187                         
    193188            !  partial computation of the lead energy budget (qldif) 
    194189            zfontn         = ( sprecip(ji,jj) / rhosn ) * xlsn  !   energy for melting 
    195             zfnsol         = qnsr_oce(ji,jj)  !  total non solar flux 
    196             qldif(ji,jj)   = tms(ji,jj) * ( qsr_oce(ji,jj) * ( 1.0 - thcm(ji,jj) )   & 
     190            zfnsol         = qns(ji,jj)                         !  total non solar flux over the ocean 
     191            qldif(ji,jj)   = tms(ji,jj) * ( qsr(ji,jj) * ( 1.0 - thcm(ji,jj) )   & 
    197192               &                               + zfnsol + fdtcn(ji,jj) - zfontn     & 
    198193               &                               + ( 1.0 - zindb ) * fsbbq(ji,jj) )   & 
     
    206201             
    207202            !  energy needed to bring ocean surface layer until its freezing 
    208             qcmif  (ji,jj) =  rau0 * rcp * fse3t(ji,jj,1) * ( tfu(ji,jj) - sst_io(ji,jj) ) * ( 1 - zinda ) 
     203!!gm old    qcmif  (ji,jj) =  rau0 * rcp * fse3t(ji,jj,1) * ( tfu(ji,jj) - sst_io(ji,jj) ) * ( 1 - zinda ) 
     204            qcmif  (ji,jj) =  rau0 * rcp * fse3t(ji,jj,1) * ( tfu(ji,jj) - sst_m(ji,jj) ) * ( 1 - zinda ) 
    209205             
    210206            !  calculate oceanic heat flux. 
     
    258254         CALL tab_2d_1d( nbpb, fr1_i0_1d  (1:nbpb)     , fr1_i0     , jpi, jpj, npb(1:nbpb) ) 
    259255         CALL tab_2d_1d( nbpb, fr2_i0_1d  (1:nbpb)     , fr2_i0     , jpi, jpj, npb(1:nbpb) ) 
    260          CALL tab_2d_1d( nbpb, qnsr_ice_1d(1:nbpb)     , qnsr_ice   , jpi, jpj, npb(1:nbpb) ) 
     256         CALL tab_2d_1d( nbpb, qns_ice_1d (1:nbpb)     , qns_ice    , jpi, jpj, npb(1:nbpb) ) 
    261257#if ! defined key_coupled 
    262258         CALL tab_2d_1d( nbpb, qla_ice_1d (1:nbpb)     , qla_ice    , jpi, jpj, npb(1:nbpb) ) 
     
    394390      IF(ln_ctl) THEN 
    395391         CALL prt_ctl_info(' lim_thd  end  ') 
    396          CALL prt_ctl(tab2d_1=hicif , clinfo1=' lim_thd: hicif   : ', tab2d_2=hsnif , clinfo2=' hsnif  : ') 
    397          CALL prt_ctl(tab2d_1=frld  , clinfo1=' lim_thd: frld    : ', tab2d_2=hicifp, clinfo2=' hicifp : ') 
    398          CALL prt_ctl(tab2d_1=phicif, clinfo1=' lim_thd: phicif  : ', tab2d_2=pfrld , clinfo2=' pfrld  : ') 
    399          CALL prt_ctl(tab2d_1=sist  , clinfo1=' lim_thd: sist    : ') 
    400          CALL prt_ctl(tab2d_1=tbif(:,:,1), clinfo1=' lim_thd: tbif 1  : ') 
    401          CALL prt_ctl(tab2d_1=tbif(:,:,2), clinfo1=' lim_thd: tbif 2  : ') 
    402          CALL prt_ctl(tab2d_1=tbif(:,:,3), clinfo1=' lim_thd: tbif 3  : ') 
    403          CALL prt_ctl(tab2d_1=fdtcn , clinfo1=' lim_thd: fdtcn   : ', tab2d_2=qdtcn , clinfo2=' qdtcn  : ') 
    404          CALL prt_ctl(tab2d_1=qstoif, clinfo1=' lim_thd: qstoif  : ', tab2d_2=fsbbq , clinfo2=' fsbbq  : ') 
    405       ENDIF 
    406  
    407     END SUBROUTINE lim_thd 
    408  
    409  
    410     SUBROUTINE lim_thd_init 
     392         CALL prt_ctl(tab2d_1=hicif      , clinfo1=' hicif   : ', tab2d_2=hsnif      , clinfo2=' hsnif  : ') 
     393         CALL prt_ctl(tab2d_1=frld       , clinfo1=' frld    : ', tab2d_2=hicifp     , clinfo2=' hicifp : ') 
     394         CALL prt_ctl(tab2d_1=phicif     , clinfo1=' phicif  : ', tab2d_2=pfrld      , clinfo2=' pfrld  : ') 
     395         CALL prt_ctl(tab2d_1=sist       , clinfo1=' sist    : ', tab2d_2=tbif(:,:,1), clinfo2=' tbif 1 : ') 
     396         CALL prt_ctl(tab2d_1=tbif(:,:,2), clinfo1=' tbif 2  : ', tab2d_2=tbif(:,:,3), clinfo2=' tbif 3 : ') 
     397         CALL prt_ctl(tab2d_1=fdtcn      , clinfo1=' fdtcn   : ', tab2d_2=qdtcn      , clinfo2=' qdtcn  : ') 
     398         CALL prt_ctl(tab2d_1=qstoif     , clinfo1=' qstoif  : ', tab2d_2=fsbbq      , clinfo2=' fsbbq  : ') 
     399      ENDIF 
     400       ! 
     401   END SUBROUTINE lim_thd 
     402 
     403 
     404   SUBROUTINE lim_thd_init 
    411405      !!------------------------------------------------------------------- 
    412406      !!                   ***  ROUTINE lim_thd_init ***  
     
    419413      !! 
    420414      !! ** input   :   Namelist namicether 
    421       !! 
    422       !! history : 
    423       !!  8.5  ! 03-08 (C. Ethe) original code 
    424415      !!------------------------------------------------------------------- 
    425416      NAMELIST/namicethd/ hmelt , hiccrit, hicmin, hiclim, amax  ,        & 
Note: See TracChangeset for help on using the changeset viewer.