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 3625 for branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2 – NEMO

Ignore:
Timestamp:
2012-11-21T14:19:18+01:00 (11 years ago)
Author:
acc
Message:

Branch dev_NOC_2012_r3555. #1006. Step 7. Check in code now merged with dev_r3385_NOCS04_HAMF

Location:
branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/ice_2.F90

    r2715 r3625  
    1919   PUBLIC    ice_alloc_2  !  Called in iceini_2.F90 
    2020 
    21    INTEGER , PUBLIC ::   numit     !: ice iteration index 
    22    REAL(wp), PUBLIC ::   rdt_ice   !: ice time step 
     21   INTEGER , PUBLIC ::   numit        !: ice iteration index 
     22   REAL(wp), PUBLIC ::   rdt_ice      !: ice time step 
    2323 
    2424   !                                                                     !!* namicerun read in iceini  * 
     
    9898   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qstoif        !: Energy stored in the brine pockets 
    9999   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fbif          !: Heat flux at the ice base 
    100    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   rdmsnif       !: Variation of snow mass 
    101    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   rdmicif       !: Variation of ice mass 
     100   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   rdm_snw       !: Variation of snow mass over 1 time step           [Kg/m2] 
     101   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   rdq_snw       !: Heat content associated with rdm_snw              [J/m2] 
     102   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   rdm_ice       !: Variation of ice  mass over 1 time step           [Kg/m2] 
     103   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   rdq_ice       !: Heat content associated with rdm_ice              [J/m2] 
    102104   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qldif         !: heat balance of the lead (or of the open ocean) 
    103105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qcmif         !: Energy needed to freeze the ocean surface layer 
     
    153155 
    154156      ALLOCATE(phicif(jpi,jpj) , pfrld  (jpi,jpj) , qstoif (jpi,jpj) ,     & 
    155          &     fbif  (jpi,jpj) , rdmsnif(jpi,jpj) , rdmicif(jpi,jpj) ,     & 
     157         &     fbif  (jpi,jpj) , rdm_snw(jpi,jpj) , rdq_snw(jpi,jpj) ,     & 
     158         &                       rdm_ice(jpi,jpj) , rdq_ice(jpi,jpj) ,     & 
    156159         &     qldif (jpi,jpj) , qcmif  (jpi,jpj) , fdtcn  (jpi,jpj) ,     & 
    157160         &     qdtcn (jpi,jpj) , thcm   (jpi,jpj)                    , STAT=ierr(4) ) 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90

    r3294 r3625  
    1313   !!   'key_lim2' :                                  LIM 2.0 sea-ice model 
    1414   !!---------------------------------------------------------------------- 
    15    !!   ice_init_2       : sea-ice model initialization 
    16    !!   ice_run_2        : Definition some run parameter for ice model 
     15   !!   ice_init_2    : sea-ice model initialization 
     16   !!   ice_run_2     : Definition some run parameter for ice model 
    1717   !!---------------------------------------------------------------------- 
    18    USE phycst           ! physical constants 
    19    USE dom_oce          ! ocean domain 
    20    USE sbc_oce          ! surface boundary condition: ocean 
    21    USE sbc_ice          ! LIM2 surface boundary condition 
    22    USE dom_ice_2        ! LIM2 ice domain 
    23    USE par_ice_2        ! LIM2 parameters 
    24    USE thd_ice_2        ! LIM2 thermodynamical variables 
    25    USE ice_2            ! LIM2 ice variable 
    26    USE limmsh_2         ! LIM2 mesh 
    27    USE limistate_2      ! LIM2 initial state 
    28    USE limrst_2         ! LIM2 restart 
    29    USE limsbc_2         ! LIM2 surface boundary condition 
    30    USE in_out_manager   ! I/O manager 
    31    USE lib_mpp          ! MPP library 
     18   USE phycst         ! physical constants 
     19   USE dom_oce        ! ocean domain 
     20   USE sbc_oce        ! surface boundary condition: ocean 
     21   USE sbc_ice        ! LIM2 surface boundary condition 
     22   USE dom_ice_2      ! LIM2 ice domain 
     23   USE par_ice_2      ! LIM2 parameters 
     24   USE thd_ice_2      ! LIM2 thermodynamical variables 
     25   USE ice_2          ! LIM2 ice variable 
     26   USE limmsh_2       ! LIM2 mesh 
     27   USE limistate_2    ! LIM2 initial state 
     28   USE limrst_2       ! LIM2 restart 
     29   USE limsbc_2       ! LIM2 surface boundary condition 
     30   USE in_out_manager ! I/O manager 
     31   USE lib_mpp        ! MPP library 
     32   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3233 
    3334   IMPLICIT NONE 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90

    r3294 r3625  
    1414   !!   'key_lim2'                                    LIM 2.0 sea-ice model 
    1515   !!---------------------------------------------------------------------- 
    16    !!   lim_adv_x_2  : advection of sea ice on x axis 
    17    !!   lim_adv_y_2  : advection of sea ice on y axis 
     16   !!   lim_adv_x_2   : advection of sea ice on x axis 
     17   !!   lim_adv_y_2   : advection of sea ice on y axis 
    1818   !!---------------------------------------------------------------------- 
    1919   USE dom_oce 
     
    2121   USE ice_2 
    2222   USE lbclnk 
    23    USE in_out_manager     ! I/O manager 
    24    USE lib_mpp            ! MPP library 
    25    USE wrk_nemo           ! work arrays 
    26    USE prtctl             ! Print control 
     23   USE in_out_manager ! I/O manager 
     24   USE lib_mpp        ! MPP library 
     25   USE wrk_nemo       ! work arrays 
     26   USE prtctl         ! Print control 
     27   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2728 
    2829   IMPLICIT NONE 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limdia_2.F90

    r2715 r3625  
    2424   USE in_out_manager  ! I/O manager 
    2525   USE lib_mpp         ! MPP library 
     26   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2627 
    2728   IMPLICIT NONE 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limdmp_2.F90

    r2715 r3625  
    1919   USE in_out_manager  ! I/O manager 
    2020   USE lib_mpp         ! MPP library 
     21   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2122 
    2223   IMPLICIT NONE 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90

    r3294 r3625  
    3131   USE in_out_manager   ! I/O manager 
    3232   USE prtctl           ! Print control 
     33   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3334 
    3435   IMPLICIT NONE 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90

    r3294 r3625  
    2121   USE prtctl           ! Print control 
    2222   USE in_out_manager   ! I/O manager 
     23   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2324 
    2425   IMPLICIT NONE 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90

    r3294 r3625  
    2727   USE iom 
    2828   USE in_out_manager 
     29   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2930 
    3031   IMPLICIT NONE 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90

    r3294 r3625  
    2323   USE wrk_nemo         ! work arrays 
    2424#endif 
     25   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2526 
    2627   IMPLICIT NONE 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90

    r3294 r3625  
    3030   USE in_out_manager ! I/O manager 
    3131   USE prtctl         ! Print control 
     32   USE oce     , ONLY : snwice_mass, snwice_mass_b 
     33   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3234 
    3335   IMPLICIT NONE 
     
    8082      REAL(wp) ::   zs21_11, zs21_12, zs21_21, zs21_22 
    8183      REAL(wp) ::   zs22_11, zs22_12, zs22_21, zs22_22 
     84      REAL(wp) ::   zintb, zintn 
    8285      REAL(wp), POINTER, DIMENSION(:,:) ::   zfrld, zmass, zcorl 
    8386      REAL(wp), POINTER, DIMENSION(:,:) ::   za1ct, za2ct, zresr 
    8487      REAL(wp), POINTER, DIMENSION(:,:) ::   zc1u, zc1v, zc2u, zc2v 
    85       REAL(wp), POINTER, DIMENSION(:,:) ::   zsang 
     88      REAL(wp), POINTER, DIMENSION(:,:) ::   zsang, zpice 
    8689      REAL(wp), POINTER, DIMENSION(:,:) ::   zu0, zv0 
    8790      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_n, zv_n 
     
    9396       
    9497      CALL wrk_alloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr ) 
    95       CALL wrk_alloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang ) 
     98      CALL wrk_alloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang, zpice ) 
    9699      CALL wrk_alloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 ) 
    97100      CALL wrk_alloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 ) 
     
    129132!i    zviszeta(:,jpj+1) = 0._wp    ;    zviseta(:,jpj+1) = 0._wp 
    130133 
     134      IF( nn_ice_embd == 2 ) THEN             !== embedded sea ice: compute representative ice top surface ==! 
     135          ! 
     136          ! average interpolation coeff as used in dynspg = (1/nn_fsbc) * {SUM[n/nn_fsbc], n=0,nn_fsbc-1} 
     137          !                                               = (1/nn_fsbc)^2 * {SUM[n], n=0,nn_fsbc-1} 
     138         zintn = REAL( nn_fsbc - 1 ) / REAL( nn_fsbc ) * 0.5_wp 
     139          ! 
     140          ! average interpolation coeff as used in dynspg = (1/nn_fsbc) * {SUM[1-n/nn_fsbc], n=0,nn_fsbc-1} 
     141          !                                               = (1/nn_fsbc)^2 * (nn_fsbc^2 - {SUM[n], n=0,nn_fsbc-1}) 
     142         zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 
     143          ! 
     144         zpice(:,:) = ssh_m(:,:) + (  zintn * snwice_mass(:,:) +  zintb * snwice_mass_b(:,:)  ) * r1_rau0 
     145          ! 
     146         ! 
     147      ELSE                                    !== non-embedded sea ice: use ocean surface for slope calculation ==! 
     148         zpice(:,:) = ssh_m(:,:) 
     149      ENDIF 
    131150 
    132151      ! Ice mass, ice strength, and wind stress at the center            | 
     
    196215 
    197216            ! Gradient of the sea surface height 
    198             zgsshx =  (   (ssh_m(ji  ,jj  ) - ssh_m(ji-1,jj  ))/e1u(ji-1,jj  )   & 
    199                &       +  (ssh_m(ji  ,jj-1) - ssh_m(ji-1,jj-1))/e1u(ji-1,jj-1)   ) * 0.5_wp 
    200             zgsshy =  (   (ssh_m(ji  ,jj  ) - ssh_m(ji  ,jj-1))/e2v(ji  ,jj-1)   & 
    201                &       +  (ssh_m(ji-1,jj  ) - ssh_m(ji-1,jj-1))/e2v(ji-1,jj-1)   ) * 0.5_wp 
     217            zgsshx =  (   (zpice(ji  ,jj  ) - zpice(ji-1,jj  ))/e1u(ji-1,jj  )   & 
     218               &       +  (zpice(ji  ,jj-1) - zpice(ji-1,jj-1))/e1u(ji-1,jj-1)   ) * 0.5_wp 
     219            zgsshy =  (   (zpice(ji  ,jj  ) - zpice(ji  ,jj-1))/e2v(ji  ,jj-1)   & 
     220               &       +  (zpice(ji-1,jj  ) - zpice(ji-1,jj-1))/e2v(ji-1,jj-1)   ) * 0.5_wp 
    202221 
    203222            ! Computation of the velocity field taking into account the ice-ice interaction.                                  
     
    575594 
    576595      CALL wrk_dealloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr ) 
    577       CALL wrk_dealloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang ) 
     596      CALL wrk_dealloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang, zpice ) 
    578597      CALL wrk_dealloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 ) 
    579598      CALL wrk_dealloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 ) 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r3294 r3625  
    99   !!            3.3  ! 2009-05 (G. Garric, C. Bricaud) addition of the lim2_evp case 
    1010   !!             -   ! 2010-11 (G. Madec) ice-ocean stress computed at each ocean time-step 
    11    !!            4.0  ! 2011-01  (A. R. Porter, STFC Daresbury) dynamical allocation 
     11   !!           3.3.1 ! 2011-01 (A. R. Porter, STFC Daresbury) dynamical allocation 
     12   !!            3.5  ! 2012-11 ((G. Madec, Y. Aksenov, A. Coward) salt and heat fluxes associated with e-p 
    1213   !!---------------------------------------------------------------------- 
    1314#if defined key_lim2 
     
    2829   USE sbc_oce          ! surface boundary condition: ocean 
    2930   USE sbccpl 
    30  
     31   USE cpl_oasis3, ONLY : lk_cpl 
     32   USE oce       , ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass  
    3133   USE albedo           ! albedo parameters 
    3234   USE lbclnk           ! ocean lateral boundary condition - MPP exchanges 
     
    3739   USE iom              ! I/O library 
    3840   USE prtctl           ! Print control 
    39    USE cpl_oasis3, ONLY : lk_cpl 
     41   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    4042 
    4143   IMPLICIT NONE 
     
    8890      !!              - Update the fluxes provided to the ocean 
    8991      !!      
    90       !! ** Outputs : - qsr     : sea heat flux:    solar  
    91       !!              - qns     : sea heat flux: non solar 
    92       !!              - emp     : freshwater budget: volume flux  
    93       !!              - emps    : freshwater budget: concentration/dillution  
     92      !! ** Outputs : - qsr     : sea heat flux    : solar  
     93      !!              - qns     : sea heat flux    : non solar (including heat content of the mass flux) 
     94      !!              - emp     : freshwater budget: mass flux  
     95      !!              - sfx     : freshwater budget: salt flux due to Freezing/Melting 
    9496      !!              - utau    : sea surface i-stress (ocean referential) 
    9597      !!              - vtau    : sea surface j-stress (ocean referential) 
     
    107109      INTEGER  ::   ifvt, i1mfr, idfr, iflt    !   -       - 
    108110      INTEGER  ::   ial, iadv, ifral, ifrdv    !   -       - 
    109       REAL(wp) ::   zqsr, zqns, zfm            ! local scalars 
    110       REAL(wp) ::   zinda, zfons, zemp         !   -      - 
     111      REAL(wp) ::   zqsr,     zqns,   zfmm     ! local scalars 
     112      REAL(wp) ::   zinda,    zfsalt, zemp     !   -      - 
     113      REAL(wp) ::   zemp_snw, zqhc,   zcd      !   -      - 
     114      REAL(wp) ::   zswitch                    !   -      - 
    111115      REAL(wp), POINTER, DIMENSION(:,:)   ::   zqnsoce       ! 2D workspace 
    112116      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb, zalbp   ! 2D/3D workspace 
     
    115119      CALL wrk_alloc( jpi, jpj, zqnsoce ) 
    116120      CALL wrk_alloc( jpi, jpj, 1, zalb, zalbp ) 
     121 
     122      SELECT CASE( nn_ice_embd )                 ! levitating or embedded sea-ice option 
     123        CASE( 0    )   ;   zswitch = 1           ! (0) standard levitating sea-ice : salt exchange only 
     124        CASE( 1, 2 )   ;   zswitch = 0           ! (1) levitating sea-ice: salt and volume exchange but no pressure effect 
     125                                                 ! (2) embedded sea-ice : salt and volume fluxes and pressure 
     126      END SELECT                                 !     
    117127 
    118128      !------------------------------------------! 
     
    133143            ifrdv   = ( 1  - ifral * ( 1 - ial ) ) * iadv  
    134144 
    135 !!$            zinda   = 1.0 - AINT( pfrld(ji,jj) )                   !   = 0. if pure ocean else 1. (at previous time) 
    136 !!$ 
    137 !!$            i1mfr   = 1.0 - AINT(  frld(ji,jj) )                   !   = 0. if pure ocean else 1. (at current  time) 
    138 !!$ 
    139 !!$            IF( phicif(ji,jj) <= 0. ) THEN   ;   ifvt = zinda      !   = 1. if (snow and no ice at previous time) else 0. ??? 
    140 !!$            ELSE                             ;   ifvt = 0. 
     145!!$            attempt to explain the tricky flags set above.... 
     146!!$            zinda   = 1.0 - AINT( pfrld(ji,jj) )                   ! = 0. if ice-free ocean else 1. (after ice adv, but before ice thermo) 
     147!!$            i1mfr   = 1.0 - AINT(  frld(ji,jj) )                   ! = 0. if ice-free ocean else 1. (after ice thermo) 
     148!!$ 
     149!!$            IF( phicif(ji,jj) <= 0. ) THEN   ;   ifvt = zinda      ! = zinda if previous thermodynamic step overmelted the ice??? 
     150!!$            ELSE                             ;   ifvt = 0.         !  
    141151!!$            ENDIF 
    142152!!$ 
    143 !!$            IF( frld(ji,jj) >= pfrld(ji,jj) ) THEN   ;   idfr = 0.  !   = 0. if lead fraction increases from previous to current 
     153!!$            IF( frld(ji,jj) >= pfrld(ji,jj) ) THEN   ;   idfr = 0.  !   = 0. if lead fraction increases due to ice thermodynamics 
    144154!!$            ELSE                                     ;   idfr = 1.    
    145155!!$            ENDIF 
    146156!!$ 
    147 !!$            iflt    = zinda  * (1 - i1mfr) * (1 - ifvt )    !   = 1. if ice (not only snow) at previous and pure ocean at current 
     157!!$            iflt    = zinda  * (1 - i1mfr) * (1 - ifvt )    !   = 1. if ice (not only snow) at previous time and ice-free ocean currently 
    148158!!$ 
    149159!!$            ial     = ifvt   * i1mfr    +    ( 1 - ifvt ) * idfr 
     160!!$                    = i1mfr if ifvt = 1 i.e.  
     161!!$                    = idfr  if ifvt = 0 
    150162!!$!                 snow no ice   ice         ice or nothing  lead fraction increases 
    151163!!$!                 at previous   now           at previous 
    152 !!$!                -> ice aera increases  ???         -> ice aera decreases ??? 
     164!!$!                -> ice area increases  ???         -> ice area decreases ??? 
    153165!!$ 
    154166!!$            iadv    = ( 1  - i1mfr ) * zinda 
     
    174186#endif             
    175187            !  computation the non solar heat flux at ocean surface 
    176             zqns    =  - ( 1. - thcm(ji,jj) ) * zqsr   &   ! part of the solar energy used in leads 
    177                &       + iflt    * ( fscmbq(ji,jj) + ffltbif(ji,jj) )                            & 
    178                &       + ifral   * ( ial * qcmif(ji,jj) + (1 - ial) * qldif(ji,jj) ) * r1_rdtice    & 
    179                &       + ifrdv   * ( qfvbq(ji,jj) + qdtcn(ji,jj) )                   * r1_rdtice  
    180  
    181             fsbbq(ji,jj) = ( 1.0 - ( ifvt + iflt ) ) * fscmbq(ji,jj)     ! ??? 
    182             ! 
     188            zqns    =  - ( 1. - thcm(ji,jj) ) * zqsr                                              &   ! part of the solar energy used in leads 
     189               &       + iflt    * ( fscmbq(ji,jj) + ffltbif(ji,jj) )                             & 
     190               &       + ifral   * ( ial * qcmif(ji,jj) + (1 - ial) * qldif(ji,jj) ) * r1_rdtice  & 
     191               &       + ifrdv   * (       qfvbq(ji,jj) +             qdtcn(ji,jj) ) * r1_rdtice  
     192 
     193            fsbbq(ji,jj) = ( 1.0 - ( ifvt + iflt ) ) * fscmbq(ji,jj)     ! store residual heat flux (to put into the ocean at the next time-step) 
     194            zqhc = ( rdq_snw(ji,jj)                                     & 
     195                 & + rdq_ice(ji,jj) * ( 1.- zswitch) ) * r1_rdtice       ! heat flux due to snow ( & ice heat content,  
     196            !                                                            !           if ice/ocean mass exchange active)  
    183197            qsr  (ji,jj) = zqsr                                          ! solar heat flux  
    184             qns  (ji,jj) = zqns - fdtcn(ji,jj)                           ! non solar heat flux 
     198            qns  (ji,jj) = zqns - fdtcn(ji,jj) + zqhc                    ! non solar heat flux  
     199            ! 
     200            !                          !------------------------------------------! 
     201            !                          !  mass and salt flux at the ocean surface ! 
     202            !                          !------------------------------------------! 
     203            ! 
     204            ! mass flux at the ocean-atmosphere interface (open ocean fraction = leads area) 
     205#if defined key_coupled 
     206            !                                                  ! coupled mode:  
     207            zemp = + emp_tot(ji,jj)                            &     ! net mass flux over the grid cell (ice+ocean area) 
     208               &   - emp_ice(ji,jj) * ( 1. - pfrld(ji,jj) )          ! minus the mass flux intercepted by sea-ice 
     209#else 
     210            !                                                  ! forced  mode:  
     211            zemp = + emp(ji,jj)     *         frld(ji,jj)      &     ! mass flux over open ocean fraction  
     212               &   - tprecip(ji,jj) * ( 1. -  frld(ji,jj) )    &     ! liquid precip. over ice reaches directly the ocean 
     213               &   + sprecip(ji,jj) * ( 1. - pfrld(ji,jj) )          ! snow is intercepted by sea-ice (previous frld) 
     214#endif             
     215            ! 
     216            ! mass flux at the ocean/ice interface (sea ice fraction) 
     217            zemp_snw = rdm_snw(ji,jj) * r1_rdtice                    ! snow melting = pure water that enters the ocean 
     218            zfmm     = rdm_ice(ji,jj) * r1_rdtice                    ! Freezing minus Melting (F-M) 
     219 
     220            ! salt flux at the ice/ocean interface (sea ice fraction) [PSU*kg/m2/s] 
     221            zfsalt = - sice_0(ji,jj) * zfmm                          ! F-M salt exchange 
     222            zcd    =   soce_0(ji,jj) * zfmm                          ! concentration/dilution term due to F-M 
     223            ! 
     224            ! salt flux only       : add concentration dilution term in salt flux  and no  F-M term in volume flux 
     225            ! salt and mass fluxes : non concentration dilution term in salt flux  and add F-M term in volume flux 
     226            sfx (ji,jj) = zfsalt +                  zswitch  * zcd   ! salt flux (+ C/D if no ice/ocean mass exchange) 
     227            emp (ji,jj) = zemp   + zemp_snw + ( 1.- zswitch) * zfmm  ! mass flux (+ F/M mass flux if ice/ocean mass exchange) 
     228            ! 
    185229         END DO 
    186230      END DO 
     231      !                                !------------------------------------------! 
     232      !                                !    mass of snow and ice per unit area    ! 
     233      !                                !------------------------------------------! 
     234      IF( nn_ice_embd /= 0 ) THEN      ! embedded sea-ice (mass required) 
     235         snwice_mass_b(:,:) = snwice_mass(:,:)                  ! save mass from the previous ice time step 
     236         !                                                      ! new mass per unit area 
     237         snwice_mass  (:,:) = tms(:,:) * ( rhosn * hsnif(:,:) + rhoic * hicif(:,:)  ) * ( 1.0 - frld(:,:) ) 
     238         !                                                      ! time evolution of snow+ice mass 
     239         snwice_fmass (:,:) = ( snwice_mass(:,:) - snwice_mass_b(:,:) ) / rdt_ice 
     240      ENDIF 
    187241 
    188242      CALL iom_put( 'hflx_ice_cea', - fdtcn(:,:) )       
     
    190244      CALL iom_put( 'qsr_io_cea', fstric(:,:) * (1.e0 - pfrld(:,:)) ) 
    191245 
    192       !------------------------------------------! 
    193       !      mass flux at the ocean surface      ! 
    194       !------------------------------------------! 
    195       DO jj = 1, jpj 
    196          DO ji = 1, jpi 
    197             ! 
    198 #if defined key_coupled 
    199             ! freshwater exchanges at the ice-atmosphere / ocean interface (coupled mode) 
    200             zemp = emp_tot(ji,jj) - emp_ice(ji,jj) * ( 1. - pfrld(ji,jj) )    &   !  
    201                &   + rdmsnif(ji,jj) * r1_rdtice                                   !  freshwaterflux due to snow melting  
    202 #else 
    203             !  computing freshwater exchanges at the ice/ocean interface 
    204             zemp = + emp(ji,jj)     *         frld(ji,jj)      &   !  e-p budget over open ocean fraction  
    205                &   - tprecip(ji,jj) * ( 1. -  frld(ji,jj) )    &   !  liquid precipitation reaches directly the ocean 
    206                &   + sprecip(ji,jj) * ( 1. - pfrld(ji,jj) )    &   !  change in ice cover within the time step 
    207                &   + rdmsnif(ji,jj) * r1_rdtice                    !  freshwater flux due to snow melting  
    208 #endif             
    209             ! 
    210             !  computing salt exchanges at the ice/ocean interface 
    211             zfons = ( soce_0(ji,jj) - sice_0(ji,jj) ) * ( rdmicif(ji,jj) * r1_rdtice )  
    212             ! 
    213             !  converting the salt flux from ice to a freshwater flux from ocean 
    214             zfm  = zfons / ( sss_m(ji,jj) + epsi16 ) 
    215             ! 
    216             emps(ji,jj) = zemp + zfm      ! surface ocean concentration/dilution effect (use on SSS evolution) 
    217             emp (ji,jj) = zemp            ! surface ocean volume flux (use on sea-surface height evolution) 
    218             ! 
    219          END DO 
    220       END DO 
    221  
    222246      IF( lk_diaar5 ) THEN       ! AR5 diagnostics 
    223          CALL iom_put( 'isnwmlt_cea'  ,                 rdmsnif(:,:) * r1_rdtice ) 
    224          CALL iom_put( 'fsal_virt_cea',   soce_0(:,:) * rdmicif(:,:) * r1_rdtice ) 
    225          CALL iom_put( 'fsal_real_cea', - sice_0(:,:) * rdmicif(:,:) * r1_rdtice ) 
     247         CALL iom_put( 'isnwmlt_cea'  ,                 rdm_snw(:,:) * r1_rdtice ) 
     248         CALL iom_put( 'fsal_virt_cea',   soce_0(:,:) * rdm_ice(:,:) * r1_rdtice ) 
     249         CALL iom_put( 'fsal_real_cea', - sice_0(:,:) * rdm_ice(:,:) * r1_rdtice ) 
    226250      ENDIF 
    227251 
     
    243267      IF(ln_ctl) THEN            ! control print 
    244268         CALL prt_ctl(tab2d_1=qsr   , clinfo1=' lim_sbc: qsr    : ', tab2d_2=qns   , clinfo2=' qns     : ') 
    245          CALL prt_ctl(tab2d_1=emp   , clinfo1=' lim_sbc: emp    : ', tab2d_2=emps  , clinfo2=' emps    : ') 
     269         CALL prt_ctl(tab2d_1=emp   , clinfo1=' lim_sbc: emp    : ', tab2d_2=sfx   , clinfo2=' sfx     : ') 
    246270         CALL prt_ctl(tab2d_1=utau  , clinfo1=' lim_sbc: utau   : ', mask1=umask,   & 
    247271            &         tab2d_2=vtau  , clinfo2=' vtau    : '        , mask2=vmask ) 
     
    439463         END WHERE 
    440464      ENDIF 
     465      !                                      ! embedded sea ice 
     466      IF( nn_ice_embd /= 0 ) THEN            ! mass exchanges between ice and ocean (case 1 or 2) set the snow+ice mass 
     467         snwice_mass  (:,:) = tms(:,:) * ( rhosn * hsnif(:,:) + rhoic * hicif(:,:)  ) * ( 1.0 - frld(:,:) ) 
     468         snwice_mass_b(:,:) = snwice_mass(:,:) 
     469      ELSE 
     470         snwice_mass  (:,:) = 0.e0           ! no mass exchanges 
     471         snwice_mass_b(:,:) = 0.e0           ! no mass exchanges 
     472      ENDIF 
     473      IF( nn_ice_embd == 2 .AND.          &  ! full embedment (case 2) & no restart :  
     474         &   .NOT.ln_rstart ) THEN           ! deplete the initial ssh below sea-ice area 
     475         sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 
     476         sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 
     477      ENDIF 
    441478      ! 
    442479   END SUBROUTINE lim_sbc_init_2 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90

    r3294 r3625  
    1313   !!   'key_lim2' :                                  LIM 2.0 sea-ice model 
    1414   !!---------------------------------------------------------------------- 
    15    !!   lim_thd_2      : thermodynamic of sea ice 
    16    !!   lim_thd_init_2 : initialisation of sea-ice thermodynamic 
     15   !!   lim_thd_2       : thermodynamic of sea ice 
     16   !!   lim_thd_init_2  : initialisation of sea-ice thermodynamic 
    1717   !!---------------------------------------------------------------------- 
    18    USE phycst          ! physical constants 
    19    USE dom_oce         ! ocean space and time domain variables 
     18   USE phycst           ! physical constants 
     19   USE dom_oce          ! ocean space and time domain variables 
    2020   USE domvvl 
    2121   USE lbclnk 
    22    USE in_out_manager  ! I/O manager 
     22   USE in_out_manager   ! I/O manager 
    2323   USE lib_mpp 
    24    USE wrk_nemo        ! work arrays 
    25    USE iom             ! IOM library 
    26    USE ice_2           ! LIM sea-ice variables 
    27    USE sbc_oce         !  
    28    USE sbc_ice         !  
    29    USE thd_ice_2       ! LIM thermodynamic sea-ice variables 
    30    USE dom_ice_2       ! LIM sea-ice domain 
     24   USE wrk_nemo         ! work arrays 
     25   USE iom              ! IOM library 
     26   USE ice_2            ! LIM sea-ice variables 
     27   USE sbc_oce          !  
     28   USE sbc_ice          !  
     29   USE thd_ice_2        ! LIM thermodynamic sea-ice variables 
     30   USE dom_ice_2        ! LIM sea-ice domain 
    3131   USE limthd_zdf_2 
    3232   USE limthd_lac_2 
    3333   USE limtab_2 
    34    USE prtctl          ! Print control 
    35    USE cpl_oasis3, ONLY : lk_cpl 
    36    USE diaar5, ONLY :   lk_diaar5 
    37        
     34   USE prtctl           ! Print control 
     35   USE cpl_oasis3, ONLY :   lk_cpl 
     36   USE diaar5    , ONLY :   lk_diaar5 
     37   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
     38    
    3839   IMPLICIT NONE 
    3940   PRIVATE 
     
    5556   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    5657   !!---------------------------------------------------------------------- 
    57  
    5858CONTAINS 
    5959 
     
    8989      REAL(wp) ::   za , zh, zthsnice    ! 
    9090      REAL(wp) ::   zfric_u              ! friction velocity  
    91       REAL(wp) ::   zfnsol               ! total non solar heat 
    92       REAL(wp) ::   zfontn               ! heat flux from snow thickness 
    9391      REAL(wp) ::   zfntlat, zpareff     ! test. the val. of lead heat budget 
    9492 
     
    129127      zdvolif(:,:) = 0.e0   ! total variation of ice volume 
    130128      zdvonif(:,:) = 0.e0   ! transformation of snow to sea-ice volume 
    131 !      zdvonif(:,:) = 0.e0   ! lateral variation of ice volume 
    132129      zlicegr(:,:) = 0.e0   ! lateral variation of ice volume 
    133130      zdvomif(:,:) = 0.e0   ! variation of ice volume at bottom due to melting only 
     
    137134      ffltbif(:,:) = 0.e0   ! linked with fstric 
    138135      qfvbq  (:,:) = 0.e0   ! linked with fstric 
    139       rdmsnif(:,:) = 0.e0   ! variation of snow mass per unit area 
    140       rdmicif(:,:) = 0.e0   ! variation of ice mass per unit area 
     136      rdm_snw(:,:) = 0.e0   ! variation of snow mass over 1 time step 
     137      rdq_snw(:,:) = 0.e0   ! heat content associated with rdm_snw 
     138      rdm_ice(:,:) = 0.e0   ! variation of ice mass over 1 time step 
     139      rdq_ice(:,:) = 0.e0   ! heat content associated with rdm_ice 
    141140      zmsk (:,:,:) = 0.e0 
    142141 
     
    199198      !-------------------------------------------------------------------------- 
    200199 
    201       sst_m(:,:) = sst_m(:,:) + rt0 
    202  
    203 !CDIR NOVERRCHK 
    204       DO jj = 1, jpj 
    205 !CDIR NOVERRCHK 
     200      !CDIR NOVERRCHK 
     201      DO jj = 1, jpj 
     202         !CDIR NOVERRCHK 
    206203         DO ji = 1, jpi 
    207204            zthsnice       = hsnif(ji,jj) + hicif(ji,jj) 
     
    217214            !  temperature and turbulent mixing (McPhee, 1992) 
    218215            zfric_u        = MAX ( MIN( SQRT( ust2s(ji,jj) ) , zfric_umax ) , zfric_umin )  ! friction velocity 
    219             fdtcn(ji,jj)  = zindb * rau0 * rcp * 0.006  * zfric_u * ( sst_m(ji,jj) - tfu(ji,jj) )  
     216            fdtcn(ji,jj)  = zindb * rau0 * rcp * 0.006  * zfric_u * ( sst_m(ji,jj) + rt0 - tfu(ji,jj) )  
    220217            qdtcn(ji,jj)  = zindb * fdtcn(ji,jj) * frld(ji,jj) * rdt_ice 
    221218                         
    222219            !  partial computation of the lead energy budget (qldif) 
    223220#if defined key_coupled  
    224             qldif(ji,jj)   = tms(ji,jj) * rdt_ice                                             & 
     221            qldif(ji,jj)   = tms(ji,jj) * rdt_ice                                                  & 
    225222               &    * (   ( qsr_tot(ji,jj) - qsr_ice(ji,jj,1) * zfricp ) * ( 1.0 - thcm(ji,jj) )   & 
    226223               &        + ( qns_tot(ji,jj) - qns_ice(ji,jj,1) * zfricp )                           & 
    227224               &        + frld(ji,jj) * ( fdtcn(ji,jj) + ( 1.0 - zindb ) * fsbbq(ji,jj) )   ) 
    228225#else 
    229             zfontn         = ( sprecip(ji,jj) / rhosn ) * xlsn  !   energy for melting solid precipitation 
    230             zfnsol         = qns(ji,jj)                         !  total non solar flux over the ocean 
    231             qldif(ji,jj)   = tms(ji,jj) * ( qsr(ji,jj) * ( 1.0 - thcm(ji,jj) )   & 
    232                &                               + zfnsol + fdtcn(ji,jj) - zfontn     & 
    233                &                               + ( 1.0 - zindb ) * fsbbq(ji,jj) )   & 
    234                &                        * frld(ji,jj) * rdt_ice     
    235 !!$            qldif(ji,jj)   = tms(ji,jj) * rdt_ice * frld(ji,jj)  
    236 !!$               &           * ( qsr(ji,jj) * ( 1.0 - thcm(ji,jj) )      & 
    237 !!$               &             + qns(ji,jj)  + fdtcn(ji,jj) - zfontn     & 
    238 !!$               &             + ( 1.0 - zindb ) * fsbbq(ji,jj)      )   & 
     226            qldif(ji,jj)   = tms(ji,jj) * rdt_ice * frld(ji,jj)                    & 
     227               &                        * (  qsr(ji,jj) * ( 1.0 - thcm(ji,jj) )    & 
     228               &                           + qns(ji,jj)  +  fdtcn(ji,jj)           & 
     229               &                           + ( 1.0 - zindb ) * fsbbq(ji,jj)      ) 
    239230#endif 
    240231            !  parlat : percentage of energy used for lateral ablation (0.0)  
     
    246237             
    247238            !  energy needed to bring ocean surface layer until its freezing 
    248             qcmif  (ji,jj) =  rau0 * rcp * fse3t_m(ji,jj,1)   & 
    249                 &          * ( tfu(ji,jj) - sst_m(ji,jj) ) * ( 1 - zinda ) 
     239            qcmif  (ji,jj) =  rau0 * rcp * fse3t_m(ji,jj,1) * ( tfu(ji,jj) - sst_m(ji,jj) - rt0 ) * ( 1 - zinda ) 
    250240             
    251241            !  calculate oceanic heat flux. 
     
    257247      END DO 
    258248       
    259       sst_m(:,:) = sst_m(:,:) - rt0 
    260                 
    261249      !         Select icy points and fulfill arrays for the vectorial grid. 
    262250      !---------------------------------------------------------------------- 
     
    312300         CALL tab_2d_1d_2( nbpb, qldif_1d   (1:nbpb)     , qldif      , jpi, jpj, npb(1:nbpb) ) 
    313301         CALL tab_2d_1d_2( nbpb, qstbif_1d  (1:nbpb)     , qstoif     , jpi, jpj, npb(1:nbpb) ) 
    314          CALL tab_2d_1d_2( nbpb, rdmicif_1d (1:nbpb)     , rdmicif    , jpi, jpj, npb(1:nbpb) ) 
     302         CALL tab_2d_1d_2( nbpb, rdm_ice_1d (1:nbpb)     , rdm_ice    , jpi, jpj, npb(1:nbpb) ) 
     303         CALL tab_2d_1d_2( nbpb, rdq_ice_1d (1:nbpb)     , rdq_ice    , jpi, jpj, npb(1:nbpb) ) 
    315304         CALL tab_2d_1d_2( nbpb, dmgwi_1d   (1:nbpb)     , dmgwi      , jpi, jpj, npb(1:nbpb) ) 
     305         CALL tab_2d_1d_2( nbpb, rdm_snw_1d (1:nbpb)     , rdm_snw    , jpi, jpj, npb(1:nbpb) ) 
     306         CALL tab_2d_1d_2( nbpb, rdq_snw_1d (1:nbpb)     , rdq_snw    , jpi, jpj, npb(1:nbpb) ) 
    316307         CALL tab_2d_1d_2( nbpb, qlbbq_1d   (1:nbpb)     , zqlbsbq    , jpi, jpj, npb(1:nbpb) ) 
    317308         ! 
     
    332323         CALL tab_1d_2d_2( nbpb, qfvbq      , npb, qfvbq_1d  (1:nbpb)     , jpi, jpj ) 
    333324         CALL tab_1d_2d_2( nbpb, qstoif     , npb, qstbif_1d (1:nbpb)     , jpi, jpj ) 
    334          CALL tab_1d_2d_2( nbpb, rdmicif    , npb, rdmicif_1d(1:nbpb)     , jpi, jpj ) 
     325         CALL tab_1d_2d_2( nbpb, rdm_ice    , npb, rdm_ice_1d(1:nbpb)     , jpi, jpj ) 
     326         CALL tab_1d_2d_2( nbpb, rdq_ice    , npb, rdq_ice_1d(1:nbpb)     , jpi, jpj ) 
    335327         CALL tab_1d_2d_2( nbpb, dmgwi      , npb, dmgwi_1d  (1:nbpb)     , jpi, jpj ) 
    336          CALL tab_1d_2d_2( nbpb, rdmsnif    , npb, rdmsnif_1d(1:nbpb)     , jpi, jpj ) 
     328         CALL tab_1d_2d_2( nbpb, rdm_snw    , npb, rdm_snw_1d(1:nbpb)     , jpi, jpj ) 
     329         CALL tab_1d_2d_2( nbpb, rdq_snw    , npb, rdq_snw_1d(1:nbpb)     , jpi, jpj ) 
    337330         CALL tab_1d_2d_2( nbpb, zdvosif    , npb, dvsbq_1d  (1:nbpb)     , jpi, jpj ) 
    338331         CALL tab_1d_2d_2( nbpb, zdvobif    , npb, dvbbq_1d  (1:nbpb)     , jpi, jpj ) 
     
    393386      IF( nbpac > 0 ) THEN 
    394387         ! 
    395          zlicegr(:,:) = rdmicif(:,:)      ! to output the lateral sea-ice growth  
     388         zlicegr(:,:) = rdm_ice(:,:)      ! to output the lateral sea-ice growth  
    396389         !...Put the variable in a 1-D array for lateral accretion 
    397390         CALL tab_2d_1d_2( nbpac, frld_1d   (1:nbpac)     , frld       , jpi, jpj, npac(1:nbpac) ) 
     
    404397         CALL tab_2d_1d_2( nbpac, qcmif_1d  (1:nbpac)     , qcmif      , jpi, jpj, npac(1:nbpac) ) 
    405398         CALL tab_2d_1d_2( nbpac, qstbif_1d (1:nbpac)     , qstoif     , jpi, jpj, npac(1:nbpac) ) 
    406          CALL tab_2d_1d_2( nbpac, rdmicif_1d(1:nbpac)     , rdmicif    , jpi, jpj, npac(1:nbpac) ) 
     399         CALL tab_2d_1d_2( nbpac, rdm_ice_1d(1:nbpac)     , rdm_ice    , jpi, jpj, npac(1:nbpac) ) 
     400         CALL tab_2d_1d_2( nbpac, rdq_ice_1d(1:nbpac)     , rdq_ice    , jpi, jpj, npac(1:nbpac) ) 
    407401         CALL tab_2d_1d_2( nbpac, dvlbq_1d  (1:nbpac)     , zdvolif    , jpi, jpj, npac(1:nbpac) ) 
    408402         CALL tab_2d_1d_2( nbpac, tfu_1d    (1:nbpac)     , tfu        , jpi, jpj, npac(1:nbpac) ) 
     
    418412         CALL tab_1d_2d_2( nbpac, tbif(:,:,3), npac(1:nbpac), tbif_1d   (1:nbpac , 3 ), jpi, jpj ) 
    419413         CALL tab_1d_2d_2( nbpac, qstoif     , npac(1:nbpac), qstbif_1d (1:nbpac)     , jpi, jpj ) 
    420          CALL tab_1d_2d_2( nbpac, rdmicif    , npac(1:nbpac), rdmicif_1d(1:nbpac)     , jpi, jpj ) 
     414         CALL tab_1d_2d_2( nbpac, rdm_ice    , npac(1:nbpac), rdm_ice_1d(1:nbpac)     , jpi, jpj ) 
     415         CALL tab_1d_2d_2( nbpac, rdq_ice    , npac(1:nbpac), rdq_ice_1d(1:nbpac)     , jpi, jpj ) 
    421416         CALL tab_1d_2d_2( nbpac, zdvolif    , npac(1:nbpac), dvlbq_1d  (1:nbpac)     , jpi, jpj ) 
    422417         ! 
     
    449444      CALL iom_put( 'iceprod_cea' , hicifp (:,:) * zztmp     )   ! Ice produced               [m/s] 
    450445      IF( lk_diaar5 ) THEN 
    451          CALL iom_put( 'snowmel_cea' , rdmsnif(:,:) * zztmp     )   ! Snow melt                  [kg/m2/s] 
     446         CALL iom_put( 'snowmel_cea' , rdm_snw(:,:) * zztmp     )   ! Snow melt                  [kg/m2/s] 
    452447         zztmp = rhoic / rdt_ice 
    453448         CALL iom_put( 'sntoice_cea' , zdvonif(:,:) * zztmp     )   ! Snow to Ice transformation [kg/m2/s] 
    454449         CALL iom_put( 'ticemel_cea' , zdvosif(:,:) * zztmp     )   ! Melt at Sea Ice top        [kg/m2/s] 
    455450         CALL iom_put( 'bicemel_cea' , zdvomif(:,:) * zztmp     )   ! Melt at Sea Ice bottom     [kg/m2/s] 
    456          zlicegr(:,:) = MAX( 0.e0, rdmicif(:,:)-zlicegr(:,:) ) 
    457          CALL iom_put( 'licepro_cea' , zlicegr(:,:) * zztmp     )   ! Latereal sea ice growth    [kg/m2/s] 
     451         zlicegr(:,:) = MAX( 0.e0, rdm_ice(:,:)-zlicegr(:,:) ) 
     452         CALL iom_put( 'licepro_cea' , zlicegr(:,:) * zztmp     )   ! Lateral sea ice growth     [kg/m2/s] 
    458453      ENDIF 
    459454      ! 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90

    r3294 r3625  
    77 
    88   !!---------------------------------------------------------------------- 
    9    !!   lim_lat_acr_2   : lateral accretion of ice 
    10    !!---------------------------------------------------------------------- 
    11    USE par_oce          ! ocean parameters 
     9   !!   lim_lat_acr_2 : lateral accretion of ice 
     10   !!---------------------------------------------------------------------- 
     11   USE par_oce        ! ocean parameters 
    1212   USE phycst 
    1313   USE thd_ice_2 
    1414   USE ice_2 
    1515   USE limistate_2  
    16    USE lib_mpp          ! MPP library 
    17    USE wrk_nemo         ! work arrays 
     16   USE lib_mpp        ! MPP library 
     17   USE wrk_nemo       ! work arrays 
     18   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    1819 
    1920   IMPLICIT NONE 
     
    145146         frld_1d   (ji) = MAX( zfrlnew , zfrlmin(ji) ) 
    146147         !--computation of the remaining part of ice thickness which has been already used 
    147          zdhicbot(ji) =  ( frld_1d(ji) - zfrlnew ) * zhice0(ji) / ( 1.0 - zfrlmin(ji) ) &  
    148                       -  (  ( 1.0 - zfrrate ) / ( 1.0 - frld_1d(ji) ) )  * ( zqbgow(ji) / xlic )  
     148         zdhicbot(ji) =  ( frld_1d(ji) - zfrlnew ) * zhice0(ji) / ( 1.0 - zfrlmin(ji) )   &  
     149            &         -  (  ( 1.0 - zfrrate ) / ( 1.0 - frld_1d(ji) ) )  * ( zqbgow(ji) / xlic )  
    149150      END DO 
    150151  
     
    196197            &          ) / zah 
    197198          
    198          tbif_1d(ji,3) =     (  iiceform * ( zhnews2 - zdh3 )                                          * zta1  & 
     199         tbif_1d(ji,3) =     ( iiceform * ( zhnews2 - zdh3 )                                           * zta1  & 
    199200            &              + ( iiceform * zdh3 + ( 1 - iiceform ) * zdh1 )                             * zta2  & 
    200201            &              + ( iiceform * ( zhnews2 - zdh5 ) + ( 1 - iiceform ) * ( zhnews2 - zdh1 ) ) * zta3  &  
     
    217218      DO ji = kideb , kiut 
    218219         dvlbq_1d  (ji) = ( 1. - frld_1d(ji) ) * h_ice_1d(ji) - ( 1. - zfrl_old(ji) ) * zhice_old(ji) 
    219          rdmicif_1d(ji) = rdmicif_1d(ji) + rhoic * dvlbq_1d(ji) 
     220         rdm_ice_1d(ji) = rdm_ice_1d(ji) + rhoic * dvlbq_1d(ji) 
     221         rdq_ice_1d(ji) = rdq_ice_1d(ji) + rcpic * dvlbq_1d(ji) * ( tfu_1d(ji) - rt0 )      ! heat content relative to rt0 
    220222      END DO 
    221223       
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90

    r3294 r3625  
    1818   USE ice_2 
    1919   USE limistate_2 
     20   USE cpl_oasis3, ONLY : lk_cpl 
    2021   USE in_out_manager 
    2122   USE lib_mpp          ! MPP library 
    2223   USE wrk_nemo         ! work arrays 
    23    USE cpl_oasis3, ONLY : lk_cpl 
    24        
     24   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
     25     
    2526   IMPLICIT NONE 
    2627   PRIVATE 
     
    8687      REAL(wp), POINTER, DIMENSION(:) ::   zrcpdt         ! h_su*rho_su*cp_su/dt(h_su being the thick. of surf. layer) 
    8788      REAL(wp), POINTER, DIMENSION(:) ::   zts_old        ! previous surface temperature 
    88       REAL(wp), POINTER, DIMENSION(:) ::   zidsn , z1midsn , zidsnic ! tempory variables 
     89      REAL(wp), POINTER, DIMENSION(:) ::   zidsn , z1midsn , zidsnic ! temporary variables 
    8990      REAL(wp), POINTER, DIMENSION(:) ::   zfnet          ! net heat flux at the top surface( incl. conductive heat flux) 
    9091      REAL(wp), POINTER, DIMENSION(:) ::   zsprecip       ! snow accumulation 
     
    9899      REAL(wp), POINTER, DIMENSION(:) ::   zep            ! internal temperature of the 2nd layer of the snow/ice system 
    99100      REAL(wp), DIMENSION(3) :: &  
    100           zplediag  &    ! principle diagonal, subdiag. and supdiag. of the  
     101            zplediag  &    ! principle diagonal, subdiag. and supdiag. of the  
    101102          , zsubdiag  &    ! tri-diagonal matrix coming from the computation 
    102103          , zsupdiag  &    ! of the temperatures inside the snow-ice system 
    103104          , zsmbr          ! second member 
    104        REAL(wp) :: &  
    105           zhsu     &     ! thickness of surface layer 
    106           , zhe      &     ! effective thickness for compu. of equ. thermal conductivity 
    107           , zheshth  &     ! = zhe / thth 
    108           , zghe     &     ! correction factor of the thermal conductivity 
    109           , zumsb    &     ! parameter for numerical method to solve heat-diffusion eq. 
    110           , zkhsn    &     ! conductivity at the snow layer 
    111           , zkhic    &     ! conductivity at the ice layers 
    112           , zkint    &     ! equivalent conductivity at the snow-ice interface 
    113           , zkhsnint &     ! = zkint*dt / (hsn*rhosn*cpsn)   
    114           , zkhicint &     ! = 2*zkint*dt / (hic*rhoic*cpic) 
    115           , zpiv1 , zpiv2  &       ! tempory scalars used to solve the tri-diagonal system 
    116           , zb2 , zd2 , zb3 , zd3 & 
     105       REAL(wp) ::    & 
     106            zhsu      &    ! thickness of surface layer 
     107          , zhe       &    ! effective thickness for compu. of equ. thermal conductivity 
     108          , zheshth   &    ! = zhe / thth 
     109          , zghe      &    ! correction factor of the thermal conductivity 
     110          , zumsb     &    ! parameter for numerical method to solve heat-diffusion eq. 
     111          , zkhsn     &    ! conductivity at the snow layer 
     112          , zkhic     &    ! conductivity at the ice layers 
     113          , zkint     &    ! equivalent conductivity at the snow-ice interface 
     114          , zkhsnint  &    ! = zkint*dt / (hsn*rhosn*cpsn)   
     115          , zkhicint  &    ! = 2*zkint*dt / (hic*rhoic*cpic) 
     116          , zpiv1, zpiv2 & ! temporary scalars used to solve the tri-diagonal system 
     117          , zb2, zd2  &    ! temporary scalars used to solve the tri-diagonal system 
     118          , zb3, zd3  &    ! temporary scalars used to solve the tri-diagonal system 
    117119          , ztint          ! equivalent temperature at the snow-ice interface 
    118        REAL(wp) :: &  
    119           zexp      &     ! exponential function of the ice thickness 
    120           , zfsab     &     ! part of solar radiation stored in brine pockets 
    121           , zfts      &     ! value of energy balance function when the temp. equal surf. temp. 
    122           , zdfts     &     ! value of derivative of ztfs when the temp. equal surf. temp. 
    123           , zdts      &     ! surface temperature increment 
    124           , zqsnw_mlt &     ! energy needed to melt snow 
    125           , zdhsmlt   &     ! change in snow thickness due to melt 
    126           , zhsn      &     ! snow thickness (previous+accumulation-melt) 
    127           , zqsn_mlt_rem &  ! remaining heat coming from snow melting 
    128           , zqice_top_mlt & ! energy used to melt ice at top surface 
    129           , zdhssub      &  ! change in snow thick. due to sublimation or evaporation 
    130           , zdhisub      &  ! change in ice thick. due to sublimation or evaporation     
    131           , zdhsn        &  ! snow ice thickness increment 
    132           , zdtsn        &  ! snow internal temp. increment 
    133           , zdtic        &  ! ice internal temp. increment 
     120       REAL(wp) ::    &  
     121            zexp      &    ! exponential function of the ice thickness 
     122          , zfsab     &    ! part of solar radiation stored in brine pockets 
     123          , zfts      &    ! value of energy balance function when the temp. equal surf. temp. 
     124          , zdfts     &    ! value of derivative of ztfs when the temp. equal surf. temp. 
     125          , zdts      &    ! surface temperature increment 
     126          , zqsnw_mlt &    ! energy needed to melt snow 
     127          , zdhsmlt   &    ! change in snow thickness due to melt 
     128          , zhsn      &    ! snow thickness (previous+accumulation-melt) 
     129          , zqsn_mlt_rem & ! remaining heat coming from snow melting 
     130          , zqice_top_mlt &! energy used to melt ice at top surface 
     131          , zdhssub     ! change in snow thick. due to sublimation or evaporation 
     132          , zdhisub     ! change in ice thick. due to sublimation or evaporation     
     133          , zdhsn       ! snow ice thickness increment 
     134          , zdtsn       ! snow internal temp. increment 
     135          , zdtic       ! ice internal temp. increment 
    134136          , zqnes          ! conductive energy due to ice melting in the first ice layer 
    135        REAL(wp) :: &  
    136           ztbot     &      ! temperature at the bottom surface 
    137           , zfcbot    &      ! conductive heat flux at bottom surface 
    138           , zqice_bot &      ! energy used for bottom melting/growing 
    139           , zqice_bot_mlt &  ! energy used for bottom melting 
    140           , zqstbif_bot  &  ! part of energy stored in brine pockets used for bottom melting 
    141           , zqstbif_old  &  ! tempory var. for zqstbif_bot 
    142           , zdhicmlt      &  ! change in ice thickness due to bottom melting 
    143           , zdhicm        &  ! change in ice thickness var.  
    144           , zdhsnm        &  ! change in snow thickness var.  
    145           , zhsnfi        &  ! snow thickness var.  
    146           , zc1, zpc1, zc2, zpc2, zp1, zp2 & ! tempory variables 
    147           , ztb2, ztb3 
    148        REAL(wp) :: &  
    149           zdrmh         &   ! change in snow/ice thick. after snow-ice formation 
    150           , zhicnew       &   ! new ice thickness 
    151           , zhsnnew       &   ! new snow thickness 
    152           , zquot , ztneq &   ! tempory temp. variables 
    153           , zqice, zqicetot & ! total heat inside the snow/ice system 
    154           , zdfrl         &   ! change in ice concentration 
    155           , zdvsnvol      &   ! change in snow volume 
    156           , zdrfrl1, zdrfrl2 &  ! tempory scalars 
    157           , zihsn, zidhb, zihic, zihe, zihq, ziexp, ziqf, zihnf, zibmlt, ziqr, zihgnew, zind 
     137       REAL(wp) ::    &  
     138            ztbot     &    ! temperature at the bottom surface 
     139          , zfcbot    &    ! conductive heat flux at bottom surface 
     140          , zqice_bot &    ! energy used for bottom melting/growing 
     141          , zqice_bot_mlt &! energy used for bottom melting 
     142          , zqstbif_bot  & ! part of energy stored in brine pockets used for bottom melting 
     143          , zqstbif_old  & ! temporary var. for zqstbif_bot 
     144          , zdhicmlt  &    ! change in ice thickness due to bottom melting 
     145          , zdhicm    &    ! change in ice thickness var.  
     146          , zdhsnm    &    ! change in snow thickness var.  
     147          , zhsnfi    &    ! snow thickness var.  
     148          , zc1, zpc1 &    ! temporary variables 
     149          , zc2, zpc2 &    ! temporary variables 
     150          , zp1, zp2  &    ! temporary variables 
     151          , ztb2, ztb3     ! temporary variables 
     152       REAL(wp) ::    &  
     153            zdrmh     &    ! change in snow/ice thick. after snow-ice formation 
     154          , zhicnew   &    ! new ice thickness 
     155          , zhsnnew   &    ! new snow thickness 
     156          , zquot     & 
     157          , ztneq     &    ! temporary temp. variables 
     158          , zqice     & 
     159          , zqicetot  &    ! total heat inside the snow/ice system 
     160          , zdfrl     &    ! change in ice concentration 
     161          , zdvsnvol  &    ! change in snow volume 
     162          , zdrfrl1, zdrfrl2, zihsn, zidhb, zihic &  ! temporary scalars 
     163          , zihe, zihq, ziexp, ziqf, zihnf        &  ! temporary scalars 
     164          , zibmlt, ziqr, zihgnew, zind, ztmp        ! temporary scalars 
    158165       !!---------------------------------------------------------------------- 
    159166       CALL wrk_alloc( jpij, ztsmlt, ztbif  , zksn    , zkic    , zksndh , zfcsu  , zfcsudt , zi0      , z1mi0   , zqmax    ) 
     
    169176        
    170177       DO ji = kideb , kiut 
     178          ! do nothing if the snow (ice) thickness falls below its minimum thickness 
    171179          zihsn = MAX( zzero , SIGN( zone , hsndif - h_snow_1d(ji) ) ) 
    172180          zihic = MAX( zzero , SIGN( zone , hicdif - h_ice_1d(ji) ) ) 
    173           !--computation of energy due to surface melting 
    174           zqcmlts(ji) = ( MAX ( zzero ,  & 
    175              &                   rcpsn * h_snow_1d(ji) * ( tbif_1d(ji,1) - rt0_snow ) ) ) * ( 1.0 - zihsn ) 
    176           !--computation of energy due to bottom melting 
    177           zqcmltb(ji) = ( MAX( zzero , & 
    178              &                  rcpic * ( tbif_1d(ji,2) - rt0_ice ) * ( h_ice_1d(ji) / 2. ) ) & 
    179              &           + MAX( zzero , & 
    180              &                  rcpic * ( tbif_1d(ji,3) - rt0_ice ) * ( h_ice_1d(ji) / 2. ) ) & 
    181              &           ) * ( 1.0 - zihic  ) 
    182           !--limitation of  snow/ice system internal temperature 
     181          !--energy required to bring snow to its melting point (rt0_snow) 
     182          zqcmlts(ji) = ( MAX ( zzero , rcpsn * h_snow_1d(ji) * ( tbif_1d(ji,1) - rt0_snow ) ) ) * ( 1.0 - zihsn ) 
     183          !--energy required to bring ice to its melting point (rt0_ice) 
     184          zqcmltb(ji) = ( MAX( zzero , rcpic * ( tbif_1d(ji,2) - rt0_ice ) * ( h_ice_1d(ji) / 2. ) )  & 
     185             &          + MAX( zzero , rcpic * ( tbif_1d(ji,3) - rt0_ice ) * ( h_ice_1d(ji) / 2. ) )  & 
     186             &          ) * ( 1.0 - zihic  ) 
     187          !--limitation of snow/ice system internal temperature 
    183188          tbif_1d(ji,1)   = MIN( rt0_snow, tbif_1d(ji,1) ) 
    184189          tbif_1d(ji,2)   = MIN( rt0_ice , tbif_1d(ji,2) ) 
     
    480485          dvsbq_1d(ji) =  ( 1.0 - frld_1d(ji) ) * ( h_snow_1d(ji) - zhsnw_old(ji) - zsprecip(ji) ) 
    481486          dvsbq_1d(ji) =  MIN( zzero , dvsbq_1d(ji) ) 
    482           rdmsnif_1d(ji) =  rhosn * dvsbq_1d(ji) 
     487          ztmp = rhosn * dvsbq_1d(ji) 
     488          rdm_snw_1d(ji) =  ztmp 
     489          !--heat content of the water provided to the ocean (referenced to rt0) 
     490          rdq_snw_1d(ji) =  cpic * ztmp * ( rt0_snow - rt0 ) 
    483491          !-- If the snow is completely melted the remaining heat is used to melt ice 
    484492          zqsn_mlt_rem  = MAX( zzero , -zhsn ) * xlsn 
     
    623631          !---updating new ice thickness and computing the newly formed ice mass 
    624632          zhicnew   =  zihgnew * zhicnew 
    625           rdmicif_1d(ji) =  rdmicif_1d(ji) + ( 1.0 - frld_1d(ji) ) * ( zhicnew - h_ice_1d(ji) ) * rhoic 
     633          ztmp    =  ( 1.0 - frld_1d(ji) ) * ( zhicnew - h_ice_1d(ji) ) * rhoic 
     634          rdm_ice_1d(ji) =  rdm_ice_1d(ji) + ztmp 
     635          !---heat content of the water provided to the ocean (referenced to rt0) 
     636          !   use of rt0_ice is OK for melting ice; in the case of freezing, tfu_1d should be used.  
     637          !   This is done in 9.5 section (see below) 
     638          rdq_ice_1d(ji) =  cpic * ztmp * ( rt0_ice - rt0 ) 
    626639          !---updating new snow thickness and computing the newly formed snow mass 
    627640          zhsnfi   = zhsn + zdhsnm 
    628641          h_snow_1d(ji) = MAX( zzero , zhsnfi ) 
    629           rdmsnif_1d(ji) =  rdmsnif_1d(ji) + ( 1.0 - frld_1d(ji) ) * ( h_snow_1d(ji) - zhsn ) * rhosn 
     642          ztmp = ( 1.0 - frld_1d(ji) ) * ( h_snow_1d(ji) - zhsn ) * rhosn 
     643          rdm_snw_1d(ji) = rdm_snw_1d(ji) + ztmp 
     644          !---updating the heat content of the water provided to the ocean (referenced to rt0) 
     645          rdq_snw_1d(ji) = rdq_snw_1d(ji) + cpic * ztmp * ( rt0_snow - rt0 ) 
    630646          !--remaining energy in case of total ablation 
    631647          zqocea(ji) = - ( zihsn * xlic * zdhicm + xlsn * ( zhsnfi - h_snow_1d(ji) ) ) * ( 1.0 - frld_1d(ji) ) 
     
    659675          tbif_1d(ji,3) =  zihgnew * ztb3 + ( 1.0 - zihgnew ) * tfu_1d(ji) 
    660676          h_ice_1d(ji)  =  zhicnew 
     677          ! update the ice heat content given to the ocean in freezing case  
     678          ! (part due to difference between rt0_ice and tfu_1d) 
     679          ztmp = ( 1. - zidhb ) * rhoic * dvbbq_1d(ji) 
     680          rdq_ice_1d(ji) = rdq_ice_1d(ji) + cpic * ztmp * ( tfu_1d(ji) - rt0_ice ) 
    661681       END DO 
    662682 
     
    700720          dmgwi_1d(ji) = dmgwi_1d(ji) + ( 1.0 -frld_1d(ji) ) * ( h_snow_1d(ji) - zhsnnew ) * rhosn 
    701721          !---  volume change of ice and snow (used for ocean-ice freshwater flux computation) 
    702           rdmicif_1d(ji) = rdmicif_1d(ji) + ( 1.0 - frld_1d(ji) )   * ( zhicnew - h_ice_1d (ji) ) * rhoic 
    703           rdmsnif_1d(ji) = rdmsnif_1d(ji) + ( 1.0 - frld_1d(ji) )   * ( zhsnnew - h_snow_1d(ji) ) * rhosn 
     722          ztmp = ( 1.0 - frld_1d(ji) ) * ( zhicnew - h_ice_1d (ji) ) * rhoic 
     723          rdm_ice_1d(ji) = rdm_ice_1d(ji) + ztmp 
     724          rdq_ice_1d(ji) = rdq_ice_1d(ji) + cpic * ztmp * ( tfu_1d(ji) - rt0 ) 
     725          !!gm BUG ??   snow ==>  only needed for nn_ice_embd == 0  (standard levitating sea-ice) 
     726          ztmp = ( 1.0 - frld_1d(ji) )   * ( zhsnnew - h_snow_1d(ji) ) * rhosn 
     727          rdm_snw_1d(ji) = rdm_snw_1d(ji) + ztmp 
     728          rdq_snw_1d(ji) = rdq_snw_1d(ji) + cpic * ztmp * ( rt0_snow - rt0 ) 
    704729 
    705730          !---  Actualize new snow and ice thickness. 
     
    748773          !--variation of ice volume and ice mass  
    749774          dvlbq_1d(ji)   = zihic * ( zfrl_old(ji) - frld_1d(ji) ) * h_ice_1d(ji) 
    750           rdmicif_1d(ji) = rdmicif_1d(ji) + dvlbq_1d(ji) * rhoic 
     775          ztmp = dvlbq_1d(ji) * rhoic 
     776          rdm_ice_1d(ji) = rdm_ice_1d(ji) + ztmp 
     777!!gm 
     778!!gm   This should be split in two parts: 
     779!!gm         1-  heat required to bring sea-ice to tfu  : this part should be added to the heat flux taken from the ocean 
     780!!gm                 cpic * ztmp * 0.5 * ( tbif_1d(ji,2) + tbif_1d(ji,3) - 2.* rt0_ice ) 
     781!!gm         2-  heat content of lateral ablation referenced to rt0 : this part only put in rdq_ice_1d 
     782!!gm                 cpic * ztmp * ( rt0_ice - rt0 ) 
     783!!gm   Currently we put all the heat in rdq_ice_1d 
     784          rdq_ice_1d(ji) = rdq_ice_1d(ji) + cpic * ztmp * 0.5 * ( tbif_1d(ji,2) + tbif_1d(ji,3) - 2.* rt0 ) 
     785          ! 
    751786          !--variation of snow volume and snow mass  
    752           zdvsnvol    = zihsn * ( zfrl_old(ji) - frld_1d(ji) ) * h_snow_1d(ji) 
    753           rdmsnif_1d(ji) = rdmsnif_1d(ji) + zdvsnvol * rhosn 
     787          zdvsnvol = zihsn * ( zfrl_old(ji) - frld_1d(ji) ) * h_snow_1d(ji) 
     788          ztmp     = zdvsnvol * rhosn 
     789          rdm_snw_1d(ji) = rdm_snw_1d(ji) + ztmp 
     790!!gm 
     791!!gm   This should be split in two parts: 
     792!!gm         1-  heat required to bring snow to tfu  : this part should be added to the heat flux taken from the ocean 
     793!!gm                 cpic * ztmp * ( tbif_1d(ji,1) - rt0_snow ) 
     794!!gm         2-  heat content of lateral ablation referenced to rt0 : this part only put in rdq_snw_1d 
     795!!gm                 cpic * ztmp * ( rt0_snow - rt0 ) 
     796!!gm   Currently we put all the heat in rdq_snw_1d 
     797          rdq_snw_1d(ji) = rdq_snw_1d(ji) + cpic * ztmp * ( tbif_1d(ji,1) - rt0 ) 
     798 
    754799          h_snow_1d(ji)  = ziqf * h_snow_1d(ji) 
    755800 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90

    r3294 r3625  
    1313   !!---------------------------------------------------------------------- 
    1414   !!---------------------------------------------------------------------- 
    15    !!   lim_wri_2      : write of the diagnostics variables in ouput file  
    16    !!   lim_wri_init_2 : initialization and namelist read 
     15   !!   lim_wri_2       : write of the diagnostics variables in ouput file  
     16   !!   lim_wri_init_2  : initialization and namelist read 
    1717   !!   lim_wri_state_2 : write for initial state or/and abandon: 
    1818   !!                     > output.init.nc (if ninist = 1 in namelist) 
     
    2626   USE ice_2 
    2727 
    28    USE dianam          ! build name of file (routine) 
     28   USE dianam           ! build name of file (routine) 
    2929   USE lbclnk 
    3030   USE in_out_manager 
    31    USE lib_mpp         ! MPP library 
    32    USE wrk_nemo        ! work arrays 
     31   USE lib_mpp          ! MPP library 
     32   USE wrk_nemo         ! work arrays 
    3333   USE iom 
    3434   USE ioipsl 
     35   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3536 
    3637   IMPLICIT NONE 
     
    173174            zcmo(ji,jj,13) = qns(ji,jj) 
    174175            ! See thersf for the coefficient 
    175             zcmo(ji,jj,14) = - emps(ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce    !!gm ??? 
     176            zcmo(ji,jj,14) = - sfx (ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce    !!gm ??? 
    176177            zcmo(ji,jj,15) = utau_ice(ji,jj) 
    177178            zcmo(ji,jj,16) = vtau_ice(ji,jj) 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/limwri_dimg_2.h90

    r3294 r3625  
    118118          zcmo(ji,jj,13) = qns(ji,jj) 
    119119          ! See thersf for the coefficient 
    120           zcmo(ji,jj,14) = - emps(ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce 
     120          zcmo(ji,jj,14) = - sfx (ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce 
    121121          zcmo(ji,jj,15) = utau_ice(ji,jj) 
    122122          zcmo(ji,jj,16) = vtau_ice(ji,jj) 
     
    161161                rcmoy(ji,jj,13) = qns(ji,jj) 
    162162                ! See thersf for the coefficient 
    163                 rcmoy(ji,jj,14) = - emps(ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce 
     163                rcmoy(ji,jj,14) = - sfx (ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce 
    164164                rcmoy(ji,jj,15) = utau_ice(ji,jj) 
    165165                rcmoy(ji,jj,16) = vtau_ice(ji,jj) 
  • branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90

    r2715 r3625  
    6868      qstbif_1d   ,     &  !:    "                  "      qstoif 
    6969      fbif_1d     ,     &  !:    "                  "      fbif 
    70       rdmicif_1d  ,     &  !:    "                  "      rdmicif 
    71       rdmsnif_1d  ,     &  !:    "                  "      rdmsnif 
     70      rdm_ice_1d  ,     &  !:    "                  "      rdm_ice 
     71      rdq_ice_1d  ,     &  !:    "                  "      rdq_ice 
     72      rdm_snw_1d  ,     &  !:    "                  "      rdm_snw 
     73      rdq_snw_1d  ,     &  !:    "                  "      rdq_snw 
    7274      qlbbq_1d    ,     &  !:    "                  "      qlbsbq 
    7375      dmgwi_1d    ,     &  !:    "                  "      dmgwi 
     
    108110         &      qstbif_1d(jpij),  fbif_1d(jpij),  Stat=ierr(2)) 
    109111         ! 
    110       ALLOCATE( rdmicif_1d(jpij), rdmsnif_1d(jpij), qlbbq_1d(jpij),   & 
     112      ALLOCATE( rdm_ice_1d(jpij), rdq_ice_1d(jpij)                  , & 
     113         &      rdm_snw_1d(jpij), rdq_snw_1d(jpij), qlbbq_1d(jpij)  , & 
    111114         &      dmgwi_1d(jpij)  , dvsbq_1d(jpij)  , rdvomif_1d(jpij), & 
    112115         &      dvbbq_1d(jpij)  , dvlbq_1d(jpij)  , dvnbq_1d(jpij)  , & 
Note: See TracChangeset for help on using the changeset viewer.