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 3524 – NEMO

Changeset 3524


Ignore:
Timestamp:
2012-11-02T07:13:40+01:00 (11 years ago)
Author:
gm
Message:

Branch: dev_r3385_NOCS04_HAMF; #665. add USE lib_fortran when SIGN is used (TOP,OPA,LIM2&3) ; salt flux names start with sfx_ in LIM3

Location:
branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO
Files:
59 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90

    r3294 r3524  
    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_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90

    r3294 r3524  
    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_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdia_2.F90

    r2715 r3524  
    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_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdmp_2.F90

    r2715 r3524  
    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_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90

    r3294 r3524  
    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_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90

    r3294 r3524  
    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_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90

    r3294 r3524  
    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_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90

    r3294 r3524  
    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_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90

    r3414 r3524  
    3030   USE in_out_manager ! I/O manager 
    3131   USE prtctl         ! Print control 
    32    USE oce, ONLY : snwice_mass, snwice_mass_b 
     32   USE oce     , ONLY : snwice_mass, snwice_mass_b 
     33   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3334 
    3435   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r3517 r3524  
    2929   USE sbc_oce          ! surface boundary condition: ocean 
    3030   USE sbccpl 
    31  
     31   USE cpl_oasis3, ONLY : lk_cpl 
     32   USE oce       , ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass  
    3233   USE albedo           ! albedo parameters 
    3334   USE lbclnk           ! ocean lateral boundary condition - MPP exchanges 
     
    3839   USE iom              ! I/O library 
    3940   USE prtctl           ! Print control 
    40    USE cpl_oasis3, ONLY : lk_cpl 
    41    USE oce, ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass  
     41   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    4242 
    4343   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90

    r3396 r3524  
    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 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90

    r3396 r3524  
    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 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90

    r3396 r3524  
    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 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90

    r3402 r3524  
    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 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/dom_ice.F90

    r2777 r3524  
    99   USE par_ice        ! LIM-3 parameter 
    1010   USE in_out_manager ! I/O manager 
    11    USE lib_mpp         ! MPP library 
     11   USE lib_mpp        ! MPP library 
     12   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    1213 
    1314   IMPLICIT NONE 
     
    3031 
    3132   !!---------------------------------------------------------------------- 
    32    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     33   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    3334   !! $Id$ 
    3435   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r3517 r3524  
    99#if defined key_lim3 
    1010   !!---------------------------------------------------------------------- 
    11    !!   'key_lim3' :                                   LIM3 sea-ice model 
    12    !!---------------------------------------------------------------------- 
    13    USE par_ice          ! LIM sea-ice parameters 
    14    USE in_out_manager   ! I/O manager 
    15    USE lib_mpp         ! MPP library 
     11   !!   'key_lim3'                                      LIM-3 sea-ice model 
     12   !!---------------------------------------------------------------------- 
     13   USE par_ice        ! LIM sea-ice parameters 
     14   USE in_out_manager ! I/O manager 
     15   USE lib_mpp        ! MPP library 
    1616 
    1717   IMPLICIT NONE 
     
    278278   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qfvbq       !: store energy in case of total lateral ablation (?) 
    279279   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   dmgwi       !: Variation of the mass of snow ice 
    280    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fsalt_res   !: Residual salt flux due to correction of ice thickness [???] 
    281    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fsbri       !: Salt flux due to brine rejection                      [???] 
    282    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fsalt_rpo   !: Salt flux associated with porous ridged ice formation [???] 
    283    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fheat_rpo   !: Heat flux associated with porous ridged ice formation [???] 
     280   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_thd     !: salt flux due to ice growth/melt                      [PSU/m2/s] 
     281   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_bri     !: salt flux due to brine rejection                      [PSU/m2/s] 
     282   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_mec     !: salt flux due to porous ridged ice formation          [PSU/m2/s] 
     283   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_res     !: residual salt flux due to correction of ice thickness [PSU/m2/s] 
    284284   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fhbri       !: heat flux due to brine rejection 
    285    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fmmec       !: Mass flux due to snow loss during compression 
    286    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fseqv       !: salt flux due to ice growth/melt   [units ???] 
    287    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fhmec       !: Heat flux due to snow loss during compression 
    288    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fheat_res   !: Residual heat flux due to correction of ice thickness 
     285   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fheat_mec   !: heat flux associated with porous ridged ice formation [???] 
     286   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fheat_res   !: residual heat flux due to correction of ice thickness 
     287   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fmmec       !: mass flux due to snow loss during compression         [Kg/m2/s] 
     288   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fhmec       !: heat flux due to snow loss during compression 
    289289 
    290290   ! temporary arrays for dummy version of the code 
     
    417417 
    418418   !!---------------------------------------------------------------------- 
    419    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010) 
     419   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2010) 
    420420   !! $Id$ 
    421421   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    446446 
    447447      ii = ii + 1 
    448       ALLOCATE( firic    (jpi,jpj) , fcsic  (jpi,jpj) , fleic    (jpi,jpj) , qlatic   (jpi,jpj) ,     & 
    449          &      rdvosif  (jpi,jpj) , rdvobif(jpi,jpj) , fdvolif  (jpi,jpj) , rdvonif  (jpi,jpj) ,     & 
    450          &      sist     (jpi,jpj) , icethi (jpi,jpj) , t_bo     (jpi,jpj) , hicifp   (jpi,jpj) ,     & 
    451          &      frld     (jpi,jpj) , pfrld  (jpi,jpj) , phicif   (jpi,jpj) , fbif     (jpi,jpj) ,     & 
    452          &      rdm_snw  (jpi,jpj) , rdq_snw(jpi,jpj) , rdm_ice  (jpi,jpj) , rdq_ice  (jpi,jpj) ,     & 
    453          &                                              qldif    (jpi,jpj) , qcmif    (jpi,jpj) ,     & 
    454          &      fdtcn    (jpi,jpj) , qdtcn  (jpi,jpj) , fstric   (jpi,jpj) , fscmbq   (jpi,jpj) ,     & 
    455          &      ffltbif  (jpi,jpj) , fsbbq  (jpi,jpj) , qfvbq    (jpi,jpj) , dmgwi    (jpi,jpj) ,     & 
    456          &      fsalt_res(jpi,jpj) , fsbri  (jpi,jpj) , fsalt_rpo(jpi,jpj) , fheat_rpo(jpi,jpj) ,     & 
    457          &      fhbri    (jpi,jpj) , fmmec  (jpi,jpj) , fseqv    (jpi,jpj) , fhmec    (jpi,jpj) ,     & 
    458          &      fheat_res(jpi,jpj)                                                              , STAT=ierr(ii) ) 
     448      ALLOCATE( firic    (jpi,jpj) , fcsic  (jpi,jpj) , fleic  (jpi,jpj) , qlatic   (jpi,jpj) ,     & 
     449         &      rdvosif  (jpi,jpj) , rdvobif(jpi,jpj) , fdvolif(jpi,jpj) , rdvonif  (jpi,jpj) ,     & 
     450         &      sist     (jpi,jpj) , icethi (jpi,jpj) , t_bo   (jpi,jpj) , hicifp   (jpi,jpj) ,     & 
     451         &      frld     (jpi,jpj) , pfrld  (jpi,jpj) , phicif (jpi,jpj) , fbif     (jpi,jpj) ,     & 
     452         &      rdm_snw  (jpi,jpj) , rdq_snw(jpi,jpj) , rdm_ice(jpi,jpj) , rdq_ice  (jpi,jpj) ,     & 
     453         &                                              qldif  (jpi,jpj) , qcmif    (jpi,jpj) ,     & 
     454         &      fdtcn    (jpi,jpj) , qdtcn  (jpi,jpj) , fstric (jpi,jpj) , fscmbq   (jpi,jpj) ,     & 
     455         &      ffltbif  (jpi,jpj) , fsbbq  (jpi,jpj) , qfvbq  (jpi,jpj) , dmgwi    (jpi,jpj) ,     & 
     456         &      sfx_res  (jpi,jpj) , sfx_bri(jpi,jpj) , sfx_mec(jpi,jpj) , fheat_mec(jpi,jpj) ,     & 
     457         &      fhbri    (jpi,jpj) , fmmec  (jpi,jpj) , sfx_thd(jpi,jpj) , fhmec    (jpi,jpj) ,     & 
     458         &      fheat_res(jpi,jpj)                                                            , STAT=ierr(ii) ) 
    459459 
    460460      ii = ii + 1 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90

    r3517 r3524  
    1010#if defined key_lim3 
    1111   !!---------------------------------------------------------------------- 
    12    !!   'key_lim3' :                                   LIM sea-ice model 
    13    !!---------------------------------------------------------------------- 
    14    !!   ice_init       : sea-ice model initialization 
    15    !!---------------------------------------------------------------------- 
    16    USE phycst           ! physical constants 
    17    USE dom_oce          ! ocean domain 
    18    USE sbc_oce          ! Surface boundary condition: ocean fields 
    19    USE sbc_ice          ! Surface boundary condition: ice   fields 
    20    USE ice              ! LIM variables 
    21    USE par_ice          ! LIM parameters 
    22    USE dom_ice          ! LIM domain 
    23    USE thd_ice          ! LIM thermodynamical variables 
    24    USE limitd_me        ! LIM ice thickness distribution 
    25    USE limmsh           ! LIM mesh 
    26    USE limistate        ! LIM initial state 
    27    USE limrst           ! LIM restart 
    28    USE limthd           ! LIM ice thermodynamics 
    29    USE limthd_sal       ! LIM ice thermodynamics: salinity 
    30    USE limvar           ! LIM variables 
    31    USE limsbc           ! LIM surface boundary condition 
    32    USE in_out_manager   ! I/O manager 
    33    USE lib_mpp          ! MPP library 
     12   !!   'key_lim3'                                     LIM sea-ice model 
     13   !!---------------------------------------------------------------------- 
     14   !!   ice_init      : sea-ice model initialization 
     15   !!---------------------------------------------------------------------- 
     16   USE phycst         ! physical constants 
     17   USE dom_oce        ! ocean domain 
     18   USE sbc_oce        ! Surface boundary condition: ocean fields 
     19   USE sbc_ice        ! Surface boundary condition: ice   fields 
     20   USE ice            ! LIM variables 
     21   USE par_ice        ! LIM parameters 
     22   USE dom_ice        ! LIM domain 
     23   USE thd_ice        ! LIM thermodynamical variables 
     24   USE limitd_me      ! LIM ice thickness distribution 
     25   USE limmsh         ! LIM mesh 
     26   USE limistate      ! LIM initial state 
     27   USE limrst         ! LIM restart 
     28   USE limthd         ! LIM ice thermodynamics 
     29   USE limthd_sal     ! LIM ice thermodynamics: salinity 
     30   USE limvar         ! LIM variables 
     31   USE limsbc         ! LIM surface boundary condition 
     32   USE in_out_manager ! I/O manager 
     33   USE lib_mpp        ! MPP library 
     34   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3435 
    3536   IMPLICIT NONE 
     
    3940 
    4041   !!---------------------------------------------------------------------- 
    41    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     42   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    4243   !! $Id$ 
    4344   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limadv.F90

    r3517 r3524  
    1515   !!   lim_adv_y  : advection of sea ice on y axis 
    1616   !!---------------------------------------------------------------------- 
    17    USE dom_oce          ! ocean domain 
    18    USE dom_ice          ! LIM-3 domain 
    19    USE ice              ! LIM-3 variables 
    20    USE lbclnk           ! lateral boundary condition - MPP exchanges 
    21    USE in_out_manager   ! I/O manager 
    22    USE prtctl           ! Print control 
    23    USE lib_mpp          ! MPP library 
    24    USE wrk_nemo         ! work arrays 
     17   USE dom_oce        ! ocean domain 
     18   USE ice            ! LIM-3 variables 
     19   USE dom_ice        ! LIM-3 domain 
     20   USE lbclnk         ! lateral boundary condition - MPP exchanges 
     21   USE in_out_manager ! I/O manager 
     22   USE prtctl         ! Print control 
     23   USE lib_mpp        ! MPP library 
     24   USE wrk_nemo       ! work arrays 
     25   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2526 
    2627   IMPLICIT NONE 
     
    3738#  include "vectopt_loop_substitute.h90" 
    3839   !!---------------------------------------------------------------------- 
    39    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     40   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    4041   !! $Id$ 
    4142   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limcons.F90

    r2777 r3524  
    1010#if defined key_lim3 
    1111   !!---------------------------------------------------------------------- 
    12    !!   'key_lim3' :                                   LIM3 sea-ice model 
     12   !!   'key_lim3'                                      LIM-3 sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    !!    lim_cons   :   checks whether energy, mass and salt are conserved  
     14   !!    lim_cons     :   checks whether energy, mass and salt are conserved  
    1515   !!---------------------------------------------------------------------- 
    16    USE par_ice          ! LIM-3 parameter 
    17    USE ice              ! LIM-3 variables 
    18    USE dom_ice          ! LIM-3 domain 
    19    USE dom_oce          ! ocean domain 
    20    USE in_out_manager   ! I/O manager 
    21    USE lib_mpp          ! MPP library 
     16   USE par_ice        ! LIM-3 parameter 
     17   USE ice            ! LIM-3 variables 
     18   USE dom_ice        ! LIM-3 domain 
     19   USE dom_oce        ! ocean domain 
     20   USE in_out_manager ! I/O manager 
     21   USE lib_mpp        ! MPP library 
     22   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2223 
    2324   IMPLICIT NONE 
     
    2930 
    3031   !!---------------------------------------------------------------------- 
    31    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     32   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    3233   !! $Id$ 
    3334   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limdia.F90

    r3517 r3524  
    1111   !!   'key_lim3'                                       LIM3 sea-ice model 
    1212   !!---------------------------------------------------------------------- 
    13    !!   lim_dia        : computation and output of the time evolution of keys variables 
    14    !!   lim_dia_init   : initialization and namelist read 
    15    !!---------------------------------------------------------------------- 
    16    USE ice             ! LIM-3: sea-ice variable 
    17    USE par_ice         ! LIM-3: ice parameters 
    18    USE dom_ice         ! LIM-3: sea-ice domain 
    19    USE dom_oce         ! ocean domain 
    20    USE sbc_oce         ! surface boundary condition: ocean fields 
    21    USE daymod          ! model calendar 
    22    USE phycst          ! physical constant 
    23    USE in_out_manager  ! I/O manager 
    24    USE lib_mpp         ! MPP library 
    25     
     13   !!   lim_dia       : computation and output of the time evolution of keys variables 
     14   !!   lim_dia_init  : initialization and namelist read 
     15   !!---------------------------------------------------------------------- 
     16   USE ice            ! LIM-3: sea-ice variable 
     17   USE par_ice        ! LIM-3: ice parameters 
     18   USE dom_ice        ! LIM-3: sea-ice domain 
     19   USE dom_oce        ! ocean domain 
     20   USE sbc_oce        ! surface boundary condition: ocean fields 
     21   USE daymod         ! model calendar 
     22   USE phycst         ! physical constant 
     23   USE in_out_manager ! I/O manager 
     24   USE lib_mpp        ! MPP library 
     25   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
     26 
    2627   IMPLICIT NONE 
    2728   PRIVATE 
     
    105106            IF( tms(ji,jj) == 1 ) THEN 
    106107               vinfor(3)  = vinfor(3)  + at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp !ice area 
    107                IF (at_i(ji,jj).GT.0.15) vinfor(5) = vinfor(5) + aire(ji,jj) * 1.e-12_wp !ice extent 
     108               IF ( at_i(ji,jj) > 0.15 )  vinfor(5) = vinfor(5) + aire(ji,jj) * 1.e-12_wp !ice extent 
    108109               vinfor(7)  = vinfor(7)  + vt_i(ji,jj)*aire(ji,jj) * 1.e-12_wp !ice volume 
    109110               vinfor(9)  = vinfor(9)  + vt_s(ji,jj)*aire(ji,jj) * 1.e-12_wp !snow volume 
     
    111112               vinfor(29) = vinfor(29) + smt_i(ji,jj)*vt_i(ji,jj)*aire(ji,jj) * 1.e-12_wp !mean salinity 
    112113               ! the computation of this diagnostic is not reliable 
    113                vinfor(31) = vinfor(31) + vt_i(ji,jj)*( u_ice(ji,jj)*u_ice(ji,jj) + &  
    114                   v_ice(ji,jj)*v_ice(ji,jj) )*aire(ji,jj)/1.0e12  
     114               vinfor(31) = vinfor(31) + vt_i(ji,jj) * (  u_ice(ji,jj)*u_ice(ji,jj)  &  
     115                  &                                     + v_ice(ji,jj)*v_ice(ji,jj) ) * aire(ji,jj) * 1.e-12  
    115116               vinfor(53) = vinfor(53) + sfx (ji,jj)*aire(ji,jj) * 1.e-12_wp !salt flux 
    116                vinfor(55) = vinfor(55) + fsbri(ji,jj)*aire(ji,jj) * 1.e-12_wp !brine drainage flux 
    117                vinfor(57) = vinfor(57) + fseqv(ji,jj)*aire(ji,jj) * 1.e-12_wp !equivalent salt flux 
     117               vinfor(55) = vinfor(55) + sfx_bri(ji,jj)*aire(ji,jj) * 1.e-12_wp !brine drainage flux 
     118               vinfor(57) = vinfor(57) + sfx_thd(ji,jj)*aire(ji,jj) * 1.e-12_wp !equivalent salt flux 
    118119               vinfor(59) = vinfor(59) +(sst_m(ji,jj)+rt0)*at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp  !SST 
    119120               vinfor(61) = vinfor(61) + sss_m(ji,jj)*at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp  !SSS 
     
    232233 
    233234      !! Fram Strait Export 
     235!!gm BUG : hard coded ORCA2 case !!!   ===>>>> to be removed !!!! 
     236!!gm       moreover, this is NOT the correct way of evaluating a ice transport ! 
     237!!gm                 mass of snow + ice is missing and a j, j+1 is also missing 
     238!!gm BUG in MPP case !  
    234239      !! 83 = area export 
    235240      !! 84 = volume export 
     
    243248         vinfor(84) = vinfor(84) - v_ice(ji,jj) * e1t(ji,jj)*vt_i(ji,jj)*rdt_ice * 1.e-12_wp 
    244249      END DO 
     250!!gm en BUG 
    245251 
    246252      !!------------------------------------------------------------------- 
     
    262268               vinfor(32) = vinfor(32) + vt_i(ji,jj)*( u_ice(ji,jj)*u_ice(ji,jj) + &  
    263269                  v_ice(ji,jj)*v_ice(ji,jj) )*aire(ji,jj)/1.0e12 !ice vel 
    264                vinfor(54) = vinfor(54) + at_i(ji,jj)*sfx (ji,jj)*aire(ji,jj) * 1.e-12_wp ! Total salt flux 
    265                vinfor(56) = vinfor(56) + at_i(ji,jj)*fsbri(ji,jj)*aire(ji,jj) * 1.e-12_wp ! Brine drainage salt flux 
    266                vinfor(58) = vinfor(58) + at_i(ji,jj)*fseqv(ji,jj)*aire(ji,jj) * 1.e-12_wp ! Equivalent salt flux 
     270               vinfor(54) = vinfor(54) + sfx (ji,jj)*aire(ji,jj) * 1.e-12_wp ! Total salt flux 
     271               vinfor(56) = vinfor(56) + sfx_bri(ji,jj)*aire(ji,jj) * 1.e-12_wp ! Brine drainage salt flux 
     272               vinfor(58) = vinfor(58) + sfx_thd(ji,jj)*aire(ji,jj) * 1.e-12_wp ! Equivalent salt flux 
    267273               vinfor(60) = vinfor(60) +(sst_m(ji,jj)+rt0)*at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp  !SST 
    268274               vinfor(62) = vinfor(62) + sss_m(ji,jj)*at_i(ji,jj)*aire(ji,jj) * 1.e-12_wp  !SSS 
     
    343349         END DO 
    344350      END DO 
    345       zindb      = 1.0 - MAX(0.0,SIGN(1.0,-vinfor(4))) ! 
    346       vinfor(64) = zindb * vinfor(64) / MAX(vinfor(4),epsi06) ! divide by ice extt 
     351      zindb      = 1._wp - MAX(  0._wp , SIGN( 1._wp , -vinfor(4) )  )  ! 
     352      vinfor(64) = zindb * vinfor(64) / MAX( vinfor(4) , epsi06 )  ! divide by ice extt 
    347353      !! 2.2) Diagnostics dependent on age 
    348354      !!------------------------------------ 
     
    366372                  ENDIF 
    367373               END DO ! jl 
    368                IF ((at_i(ji,jj).GT.0.15).AND.(zafy.GT.zamy)) THEN 
     374               IF ( at_i(ji,jj)  >  0.15  .AND. zafy  >  zamy ) THEN 
    369375                  vinfor(22) = vinfor(22) + aire(ji,jj) * 1.e-12_wp ! Seasonal ice extent 
    370376               ENDIF 
    371                IF ((at_i(ji,jj).GT.0.15).AND.(zafy.LE.zamy)) THEN 
     377               IF ( at_i(ji,jj)  >  0.15  .AND. zafy <= zamy ) THEN 
    372378                  vinfor(24) = vinfor(24) + aire(ji,jj) * 1.e-12_wp ! Perennial ice extent 
    373379               ENDIF 
     
    375381         END DO ! jj 
    376382      END DO ! ji 
    377       zindb      = 1.0 - MAX(0.0,SIGN(1.0,-vinfor(26))) !=0 if no multiyear ice 1 if yes 
    378       vinfor(50) = zindb*vinfor(50) / MAX(vinfor(26),epsi06) 
    379       zindb      = 1.0 - MAX(0.0,SIGN(1.0,-vinfor(28))) !=0 if no multiyear ice 1 if yes 
    380       vinfor(52) = zindb*vinfor(52) / MAX(vinfor(28),epsi06) 
     383      zindb      = 1.0 - MAX(  0.0,SIGN( 1._wp , -vinfor(26) )  )    !=0 if no multiyear ice 1 if yes 
     384      vinfor(50) = zindb * vinfor(50) / MAX( vinfor(26) , epsi06 ) 
     385      zindb      = 1.0 - MAX(  0._wp , SIGN( 1._wp , -vinfor(28) )  ) !=0 if no multiyear ice 1 if yes 
     386      vinfor(52) = zindb * vinfor(52) / MAX( vinfor(28) , epsi06 ) 
    381387 
    382388      !  Accumulation before averaging  
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90

    r3294 r3524  
    1515   !!    lim_dyn_init : initialization and namelist read 
    1616   !!---------------------------------------------------------------------- 
    17    USE phycst           ! physical constants 
    18    USE dom_oce          ! ocean space and time domain 
    19    USE sbc_oce          ! Surface boundary condition: ocean fields 
    20    USE sbc_ice          ! Surface boundary condition: ice   fields 
    21    USE ice              ! LIM-3 variables 
    22    USE par_ice          ! LIM-3 parameters 
    23    USE dom_ice          ! LIM-3 domain 
    24    USE limrhg           ! LIM-3 rheology 
    25    USE lbclnk           ! lateral boundary conditions - MPP exchanges 
    26    USE lib_mpp          ! MPP library 
    27    USE wrk_nemo         ! work arrays 
    28    USE in_out_manager   ! I/O manager 
    29    USE prtctl           ! Print control 
     17   USE phycst         ! physical constants 
     18   USE dom_oce        ! ocean space and time domain 
     19   USE sbc_oce        ! Surface boundary condition: ocean fields 
     20   USE sbc_ice        ! Surface boundary condition: ice   fields 
     21   USE ice            ! LIM-3 variables 
     22   USE par_ice        ! LIM-3 parameters 
     23   USE dom_ice        ! LIM-3 domain 
     24   USE limrhg         ! LIM-3 rheology 
     25   USE lbclnk         ! lateral boundary conditions - MPP exchanges 
     26   USE lib_mpp        ! MPP library 
     27   USE wrk_nemo       ! work arrays 
     28   USE in_out_manager ! I/O manager 
     29   USE prtctl         ! Print control 
     30   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3031 
    3132   IMPLICIT NONE 
     
    3738#  include "vectopt_loop_substitute.h90" 
    3839   !!---------------------------------------------------------------------- 
    39    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     40   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    4041   !! $Id$ 
    4142   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90

    r3294 r3524  
    1212   !!   'key_lim3'                                      LIM3 sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    !!   lim_hdf  : diffusion trend on sea-ice variable 
     14   !!   lim_hdf       : diffusion trend on sea-ice variable 
    1515   !!---------------------------------------------------------------------- 
    16    USE dom_oce          ! ocean domain 
    17    USE ice              ! LIM-3: ice variables 
    18    USE lbclnk           ! lateral boundary condition - MPP exchanges 
    19    USE lib_mpp          ! MPP library 
    20    USE wrk_nemo         ! work arrays 
    21    USE prtctl           ! Print control 
    22    USE in_out_manager   ! I/O manager 
     16   USE dom_oce        ! ocean domain 
     17   USE ice            ! LIM-3: ice variables 
     18   USE lbclnk         ! lateral boundary condition - MPP exchanges 
     19   USE lib_mpp        ! MPP library 
     20   USE wrk_nemo       ! work arrays 
     21   USE prtctl         ! Print control 
     22   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 
     
    3435#  include "vectopt_loop_substitute.h90" 
    3536   !!---------------------------------------------------------------------- 
    36    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010) 
     37   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2010) 
    3738   !! $Id$ 
    3839   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r3349 r3524  
    2626   USE lib_mpp          ! MPP library 
    2727   USE wrk_nemo         ! work arrays 
     28   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2829 
    2930   IMPLICIT NONE 
     
    4849 
    4950   !!---------------------------------------------------------------------- 
    50    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     51   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    5152   !! $Id$ 
    5253   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90

    r3517 r3524  
    1010#if defined key_lim3 
    1111   !!---------------------------------------------------------------------- 
    12    !!   'key_lim3' :                                    LIM3 sea-ice model 
     12   !!   'key_lim3'                                      LIM-3 sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    USE par_oce          ! ocean parameters 
    15    USE dom_oce          ! ocean domain 
    16    USE phycst           ! physical constants (ocean directory)  
    17    USE sbc_oce          ! surface boundary condition: ocean fields 
    18    USE thd_ice          ! LIM thermodynamics 
    19    USE ice              ! LIM variables 
    20    USE par_ice          ! LIM parameters 
    21    USE dom_ice          ! LIM domain 
    22    USE limthd_lac       ! LIM 
    23    USE limvar           ! LIM 
    24    USE limcons          ! LIM 
    25    USE in_out_manager   ! I/O manager 
    26    USE lbclnk           ! lateral boundary condition - MPP exchanges 
    27    USE lib_mpp          ! MPP library 
    28    USE wrk_nemo         ! work arrays 
    29    USE prtctl           ! Print control 
     14   USE par_oce        ! ocean parameters 
     15   USE dom_oce        ! ocean domain 
     16   USE phycst         ! physical constants (ocean directory)  
     17   USE sbc_oce        ! surface boundary condition: ocean fields 
     18   USE thd_ice        ! LIM thermodynamics 
     19   USE ice            ! LIM variables 
     20   USE par_ice        ! LIM parameters 
     21   USE dom_ice        ! LIM domain 
     22   USE limthd_lac     ! LIM 
     23   USE limvar         ! LIM 
     24   USE limcons        ! LIM 
     25   USE in_out_manager ! I/O manager 
     26   USE lbclnk         ! lateral boundary condition - MPP exchanges 
     27   USE lib_mpp        ! MPP library 
     28   USE wrk_nemo       ! work arrays 
     29   USE prtctl         ! Print control 
     30   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3031 
    3132   IMPLICIT NONE 
     
    11351136             
    11361137            !                                                             ! excess of salt is flushed into the ocean 
    1137             fsalt_rpo(ji,jj) = fsalt_rpo(ji,jj) + ( zsrdg2 - srdg2(ji,jj) ) * rhoic * r1_rdtice 
     1138            sfx_mec(ji,jj) = sfx_mec(ji,jj) + ( zsrdg2 - srdg2(ji,jj) ) * rhoic * r1_rdtice 
    11381139 
    11391140            rdm_ice(ji,jj) = rdm_ice(ji,jj) + vsw(ji,jj) * rhoic / rau0   ! increase in ice volume du to seawater frozen in voids 
     
    12091210 
    12101211               ! heat flux 
    1211                fheat_rpo(ji,jj) = fheat_rpo(ji,jj) + ( ersw(ji,jj,jk) - zdummy0 ) * r1_rdtice 
     1212               fheat_mec(ji,jj) = fheat_mec(ji,jj) + ( ersw(ji,jj,jk) - zdummy0 ) * r1_rdtice 
    12121213 
    12131214               ! Correct dimensions to avoid big values 
     
    15341535 
    15351536               !           xtmp = (rhoi*vicen(i,j,n) + rhos*vsnon(i,j,n)) / dt 
    1536                !           fresh(i,j)      = fresh(i,j)      + xtmp 
    1537                !           fresh_hist(i,j) = fresh_hist(i,j) + xtmp 
    1538  
    1539                !           fsalt_res(ji,jj)  = fsalt_res(ji,jj) + ( sss_m(ji,jj)                  ) * &  
    1540                !                               rhosn * v_s(ji,jj,jl) * r1_rdtice 
    1541  
    1542                !           fsalt_res(ji,jj)  = fsalt_res(ji,jj) + ( sss_m(ji,jj) - sm_i(ji,jj,jl) ) * &  
    1543                !                               rhoic * v_i(ji,jj,jl) * r1_rdtice 
    1544  
     1537               !           sfx_res(ji,jj)  = sfx_res(ji,jj) + ( sss_m(ji,jj)                  )   & 
     1538               !                                            * rhosn * v_s(ji,jj,jl) * r1_rdtice 
     1539               !           sfx_res(ji,jj)  = sfx_res(ji,jj) + ( sss_m(ji,jj) - sm_i(ji,jj,jl) )   &  
     1540               !                                            * rhoic * v_i(ji,jj,jl) * r1_rdtice 
    15451541               !           sfx (i,j)      = sfx (i,j)      + xtmp 
    1546                !           fsalt_hist(i,j) = fsalt_hist(i,j) + xtmp 
    15471542 
    15481543               ato_i(ji,jj)    = a_i  (ji,jj,jl) *       zmask(ji,jj)   + ato_i(ji,jj) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90

    r3517 r3524  
    22   !!====================================================================== 
    33   !!                       ***  MODULE limitd_th *** 
    4    !!              Thermodynamics of ice thickness distribution 
    5    !!                   computation of changes in g(h)       
     4   !!   LIM3 ice model : ice thickness distribution: Thermodynamics 
    65   !!====================================================================== 
    76   !! History :   -   !          (W. H. Lipscomb and E.C. Hunke) CICE (c) original code 
     
    2019   !!   lim_itd_shiftice : 
    2120   !!---------------------------------------------------------------------- 
    22    USE dom_ice          ! LIM-3 domain 
    23    USE par_oce          ! ocean parameters 
    24    USE dom_oce          ! ocean domain 
    25    USE phycst           ! physical constants (ocean directory)  
    26    USE thd_ice          ! LIM-3 thermodynamic variables 
    27    USE ice              ! LIM-3 variables 
    28    USE par_ice          ! LIM-3 parameters 
    29    USE limthd_lac       ! LIM-3 lateral accretion 
    30    USE limvar           ! LIM-3 variables 
    31    USE limcons          ! LIM-3 conservation 
    32    USE prtctl           ! Print control 
    33    USE in_out_manager   ! I/O manager 
    34    USE lib_mpp          ! MPP library 
    35    USE wrk_nemo         ! work arrays 
     21   USE par_oce        ! ocean parameters 
     22   USE dom_oce        ! ocean domain 
     23   USE phycst         ! physical constants (ocean directory)  
     24   USE ice            ! LIM-3 variables 
     25   USE par_ice        ! LIM-3 parameters 
     26   USE dom_ice        ! LIM-3 domain 
     27   USE thd_ice        ! LIM-3 thermodynamic variables 
     28   USE limthd_lac     ! LIM-3 lateral accretion 
     29   USE limvar         ! LIM-3 variables 
     30   USE limcons        ! LIM-3 conservation 
     31   USE prtctl         ! Print control 
     32   USE in_out_manager ! I/O manager 
     33   USE lib_mpp        ! MPP library 
     34   USE wrk_nemo       ! work arrays 
     35   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3636 
    3737   IMPLICIT NONE 
     
    4949 
    5050   !!---------------------------------------------------------------------- 
    51    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010) 
     51   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2010) 
    5252   !! $Id$ 
    5353   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limmsh.F90

    r2715 r3524  
    1010   !!   'key_lim3'                                      LIM3 sea-ice model 
    1111   !!---------------------------------------------------------------------- 
    12    !!   lim_msh   : definition of the ice mesh 
     12   !!   lim_msh       : definition of the ice mesh 
    1313   !!---------------------------------------------------------------------- 
    1414   USE phycst         ! physical constants 
     
    1818   USE lbclnk         ! lateral boundary condition - MPP exchanges 
    1919   USE lib_mpp        ! MPP library 
     20   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2021 
    2122   IMPLICIT NONE 
     
    2526 
    2627   !!---------------------------------------------------------------------- 
    27    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     28   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    2829   !! $Id$ 
    2930   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90

    r3414 r3524  
    1515   !!   'key_lim2' AND NOT 'key_lim2_vp'            EVP LIM-2 sea-ice model 
    1616   !!---------------------------------------------------------------------- 
    17    !!   lim_rhg   : computes ice velocities 
     17   !!   lim_rhg       : computes ice velocities 
    1818   !!---------------------------------------------------------------------- 
    19    USE phycst           ! Physical constant 
    20    USE par_oce          ! Ocean parameters 
    21    USE dom_oce          ! Ocean domain 
    22    USE sbc_oce          ! Surface boundary condition: ocean fields 
    23    USE sbc_ice          ! Surface boundary condition: ice fields 
    24    USE lbclnk           ! Lateral Boundary Condition / MPP link 
    25    USE lib_mpp          ! MPP library 
    26    USE wrk_nemo         ! work arrays 
    27    USE in_out_manager   ! I/O manager 
    28    USE prtctl           ! Print control 
     19   USE phycst         ! Physical constant 
     20   USE oce     , ONLY :  snwice_mass, snwice_mass_b 
     21   USE par_oce        ! Ocean parameters 
     22   USE dom_oce        ! Ocean domain 
     23   USE sbc_oce        ! Surface boundary condition: ocean fields 
     24   USE sbc_ice        ! Surface boundary condition: ice fields 
    2925#if defined key_lim3 
    30    USE ice              ! LIM-3: ice variables 
    31    USE dom_ice          ! LIM-3: ice domain 
    32    USE limitd_me        ! LIM-3:  
     26   USE ice            ! LIM-3: ice variables 
     27   USE dom_ice        ! LIM-3: ice domain 
     28   USE limitd_me      ! LIM-3:  
    3329#else 
    34    USE ice_2            ! LIM2: ice variables 
    35    USE dom_ice_2        ! LIM2: ice domain 
     30   USE ice_2          ! LIM-2: ice variables 
     31   USE dom_ice_2      ! LIM-2: ice domain 
    3632#endif 
    37    USE oce, ONLY :  snwice_mass, snwice_mass_b 
     33   USE lbclnk         ! Lateral Boundary Condition / MPP link 
     34   USE lib_mpp        ! MPP library 
     35   USE wrk_nemo       ! work arrays 
     36   USE in_out_manager ! I/O manager 
     37   USE prtctl         ! Print control 
     38   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3839 
    3940   IMPLICIT NONE 
     
    4849#  include "vectopt_loop_substitute.h90" 
    4950   !!---------------------------------------------------------------------- 
    50    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     51   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    5152   !! $Id$ 
    5253   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90

    r3517 r3524  
    1212   !!   'key_lim3' :                                   LIM sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    !!   lim_rst_opn     : open ice restart file 
    15    !!   lim_rst_write   : write of the restart file  
    16    !!   lim_rst_read    : read  the restart file  
    17    !!---------------------------------------------------------------------- 
    18    USE ice              ! sea-ice variables 
    19    USE par_ice          ! sea-ice parameters 
    20    USE dom_oce          ! ocean domain 
    21    USE sbc_oce          ! Surface boundary condition: ocean fields 
    22    USE sbc_ice          ! Surface boundary condition: ice fields 
    23    USE in_out_manager   ! I/O manager 
    24    USE iom              ! I/O library 
    25    USE lib_mpp          ! MPP library 
    26    USE wrk_nemo         ! work arrays 
     14   !!   lim_rst_opn   : open ice restart file 
     15   !!   lim_rst_write : write of the restart file  
     16   !!   lim_rst_read  : read  the restart file  
     17   !!---------------------------------------------------------------------- 
     18   USE ice            ! sea-ice variables 
     19   USE par_ice        ! sea-ice parameters 
     20   USE dom_oce        ! ocean domain 
     21   USE sbc_oce        ! Surface boundary condition: ocean fields 
     22   USE sbc_ice        ! Surface boundary condition: ice fields 
     23   USE in_out_manager ! I/O manager 
     24   USE iom            ! I/O library 
     25   USE lib_mpp        ! MPP library 
     26   USE wrk_nemo       ! work arrays 
     27   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2728 
    2829   IMPLICIT NONE 
     
    3738 
    3839   !!---------------------------------------------------------------------- 
    39    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     40   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    4041   !! $Id$ 
    4142   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r3517 r3524  
    3737   USE oce,        ONLY : sshn, sshb, snwice_mass, snwice_mass_b, snwice_fmass, sshu_b, sshv_b, sshu_n, sshv_n, sshf_n 
    3838   USE dom_ice,    ONLY : tms 
     39   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3940 
    4041   IMPLICIT NONE 
     
    5657#  include "vectopt_loop_substitute.h90" 
    5758   !!---------------------------------------------------------------------- 
    58    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     59   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    5960   !! $Id$ 
    6061   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    99100      ! 
    100101      INTEGER  ::   ji, jj           ! dummy loop indices 
    101       INTEGER  ::   ierr             ! local integer 
    102       INTEGER  ::   ifvt, i1mfr, idfr               ! some switches 
    103       INTEGER  ::   iflt, ial, iadv, ifral, ifrdv 
    104       REAL(wp) ::   zinda, zemp, zemp_snow, zfmm    ! local scalars 
    105       REAL(wp), POINTER, DIMENSION(:,:)   ::   zfcm1 , zfcm2   ! solar/non solar heat fluxes 
     102      INTEGER  ::   ierr, ifvt, i1mfr, idfr           ! local integer 
     103      INTEGER  ::   iflt, ial , iadv , ifral, ifrdv   !   -      - 
     104      REAL(wp) ::   zinda, zemp, zemp_snow, zfmm      ! local scalars 
     105      REAL(wp) ::   zfcm1 , zfcm2                     !   -      - 
    106106      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb, zalbp     ! 2D/3D workspace 
    107107      !!--------------------------------------------------------------------- 
    108108       
    109       CALL wrk_alloc( jpi, jpj, zfcm1 , zfcm2 ) 
    110109      IF( lk_cpl )   CALL wrk_alloc( jpi, jpj, jpl, zalb, zalbp ) 
    111110 
     
    141140 
    142141            !   computation the solar flux at ocean surface 
    143             zfcm1(ji,jj)   = pfrld(ji,jj) * qsr(ji,jj)  + ( 1. - pfrld(ji,jj) ) * fstric(ji,jj) 
     142            zfcm1   = pfrld(ji,jj) * qsr(ji,jj)  + ( 1._wp - pfrld(ji,jj) ) * fstric(ji,jj) 
    144143            ! fstric     Solar flux transmitted trough the ice 
    145144            ! qsr        Net short wave heat flux on free ocean 
     
    148147 
    149148            !  computation the non solar heat flux at ocean surface 
    150             zfcm2(ji,jj) = - zfcm1(ji,jj)                  & 
    151                &           + iflt    * ( fscmbq(ji,jj) )   & ! total abl -> fscmbq is given to the ocean 
    152                ! fscmbq and ffltbif are obsolete 
    153                !              &           + iflt * ffltbif(ji,jj) !!! only if one category is used 
    154                &           + ifral   * ( ial * qcmif(ji,jj) + (1 - ial) * qldif(ji,jj) ) * r1_rdtice   & 
    155                &           + ifrdv   * (       qfvbq(ji,jj) +             qdtcn(ji,jj) ) * r1_rdtice   & 
    156                &           + fhmec(ji,jj)     & ! new contribution due to snow melt when ridging!! 
    157                &           + fheat_rpo(ji,jj) & ! contribution from ridge formation 
    158                &           + fheat_res(ji,jj) 
    159             ! fscmbq  Part of the solar radiation transmitted through the ice and going to the ocean computed in limthd_zdf.F90 
    160             ! ffltbif Total heat content of the ice (brine pockets+ice) / delta_t 
     149            zfcm2 = - zfcm1                                                                     & ! ??? 
     150               &    + iflt    * fscmbq(ji,jj)                                                   & ! total ablation: heat given to the ocean 
     151               &    + ifral   * ( ial * qcmif(ji,jj) + (1 - ial) * qldif(ji,jj) ) * r1_rdtice   & 
     152               &    + ifrdv   * (       qfvbq(ji,jj) +             qdtcn(ji,jj) ) * r1_rdtice   & 
     153               &    + fhmec(ji,jj)                                                              & ! snow melt when ridging 
     154               &    + fheat_mec(ji,jj)                                                          & ! ridge formation 
     155               &    + fheat_res(ji,jj)                                                            ! residual heat flux 
    161156            ! qcmif   Energy needed to bring the ocean surface layer until its freezing (ok) 
    162157            ! qldif   heat balance of the lead (or of the open ocean) 
    163             ! qfvbq   i think this is wrong! 
    164             ! ---> Array used to store energy in case of total lateral ablation 
    165             ! qfvbq latent heat uptake/release after accretion/ablation 
    166             ! qdtcn Energy from the turbulent oceanic heat flux heat flux coming in the lead 
    167  
    168             IF( num_sal == 2 )   zfcm2(ji,jj) = zfcm2(ji,jj) + fhbri(ji,jj)    ! add contribution due to brine drainage  
     158            ! qfvbq   latent heat uptake/release after accretion/ablation 
     159            ! qdtcn   Energy from the turbulent oceanic heat flux heat flux coming in the lead 
     160 
     161            IF( num_sal == 2 )   zfcm2 = zfcm2 + fhbri(ji,jj)    ! add contribution due to brine drainage  
    169162 
    170163            ! bottom radiative component is sent to the computation of the oceanic heat flux 
    171             fsbbq(ji,jj) = ( 1.0 - ( ifvt + iflt ) ) * fscmbq(ji,jj)      
     164            fsbbq(ji,jj) = ( 1._wp - ( ifvt + iflt ) ) * fscmbq(ji,jj)      
    172165 
    173166            ! used to compute the oceanic heat flux at the next time step 
    174             qsr(ji,jj) = zfcm1(ji,jj)                                       ! solar heat flux  
    175             qns(ji,jj) = zfcm2(ji,jj) - fdtcn(ji,jj)                        ! non solar heat flux 
     167            qsr(ji,jj) = zfcm1                                       ! solar heat flux  
     168            qns(ji,jj) = zfcm2 - fdtcn(ji,jj)                        ! non solar heat flux 
    176169            !                           ! fdtcn : turbulent oceanic heat flux 
    177170 
     
    180173               WRITE(numout,*) ' lim_sbc : heat fluxes ' 
    181174               WRITE(numout,*) ' qsr       : ', qsr(jiindx,jjindx) 
    182                WRITE(numout,*) ' zfcm1     : ', zfcm1(jiindx,jjindx) 
    183175               WRITE(numout,*) ' pfrld     : ', pfrld(jiindx,jjindx) 
    184176               WRITE(numout,*) ' fstric    : ', fstric (jiindx,jjindx) 
    185177               WRITE(numout,*) 
    186178               WRITE(numout,*) ' qns       : ', qns(jiindx,jjindx) 
    187                WRITE(numout,*) ' zfcm2     : ', zfcm2(jiindx,jjindx) 
    188                WRITE(numout,*) ' zfcm1     : ', zfcm1(jiindx,jjindx) 
     179               WRITE(numout,*) ' fdtcn     : ', fdtcn(jiindx,jjindx) 
    189180               WRITE(numout,*) ' ifral     : ', ifral 
    190181               WRITE(numout,*) ' ial       : ', ial   
     
    201192               WRITE(numout,*) ' fdtcn     : ', fdtcn(jiindx,jjindx) 
    202193               WRITE(numout,*) ' fhmec     : ', fhmec(jiindx,jjindx) 
    203                WRITE(numout,*) ' fheat_rpo : ', fheat_rpo(jiindx,jjindx) 
     194               WRITE(numout,*) ' fheat_mec : ', fheat_mec(jiindx,jjindx) 
    204195               WRITE(numout,*) ' fhbri     : ', fhbri(jiindx,jjindx) 
    205196               WRITE(numout,*) ' fheat_res : ', fheat_res(jiindx,jjindx) 
     
    239230            !  correcting brine salt fluxes   (zinda = 1  if pfrld=1 , =0 otherwise) 
    240231            zinda        = 1.0 - MAX( rzero , SIGN( rone , - ( 1.0 - pfrld(ji,jj) ) ) ) 
    241             fsbri(ji,jj) = zinda * fsbri(ji,jj) 
     232            sfx_bri(ji,jj) = zinda * sfx_bri(ji,jj) 
    242233         END DO 
    243234      END DO 
     
    248239 
    249240      IF( num_sal == 2 ) THEN      ! variable ice salinity: brine drainage included in the salt flux 
    250          sfx (:,:) = fseqv(:,:) + fsalt_res(:,:) + fsalt_rpo(:,:) + fsbri(:,:) 
     241         sfx(:,:) = sfx_thd(:,:) + sfx_res(:,:) + sfx_mec(:,:) + sfx_bri(:,:) 
    251242      ELSE                         ! constant ice salinity: 
    252          sfx (:,:) = fseqv(:,:) + fsalt_res(:,:) + fsalt_rpo(:,:) 
     243         sfx(:,:) = sfx_thd(:,:) + sfx_res(:,:) + sfx_mec(:,:) 
    253244      ENDIF 
    254245      !-----------------------------------------------! 
     
    285276      ENDIF 
    286277      ! 
    287       CALL wrk_dealloc( jpi, jpj, zfcm1 , zfcm2 ) 
    288278      IF( lk_cpl )   CALL wrk_dealloc( jpi, jpj, jpl, zalb, zalbp ) 
    289279      !  
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtab.F90

    r2715 r3524  
    22   !!====================================================================== 
    33   !!                       ***  MODULE limtab   *** 
    4    !!   LIM : transform 1D (2D) array to a 2D (1D) table 
     4   !!   LIM ice model : transform 1D (2D) array to a 2D (1D) table 
    55   !!====================================================================== 
    66#if defined key_lim3 
     
    2020 
    2121   !!---------------------------------------------------------------------- 
    22    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010) 
     22   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2010) 
    2323   !! $Id$ 
    2424   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r3517 r3524  
    1616   !!   'key_lim3'                                      LIM3 sea-ice model 
    1717   !!---------------------------------------------------------------------- 
    18    !!   lim_thd        : thermodynamic of sea ice 
    19    !!   lim_thd_init   : initialisation of sea-ice thermodynamic 
     18   !!   lim_thd       : thermodynamic of sea ice 
     19   !!   lim_thd_init  : initialisation of sea-ice thermodynamic 
    2020   !!---------------------------------------------------------------------- 
    21    USE phycst          ! physical constants 
    22    USE dom_oce         ! ocean space and time domain variables 
    23    USE ice             ! LIM: sea-ice variables 
    24    USE par_ice         ! LIM: sea-ice parameters 
    25    USE sbc_oce         ! Surface boundary condition: ocean fields 
    26    USE sbc_ice         ! Surface boundary condition: ice fields 
    27    USE thd_ice         ! LIM thermodynamic sea-ice variables 
    28    USE dom_ice         ! LIM sea-ice domain 
    29    USE domvvl          ! domain: variable volume level 
    30    USE limthd_dif      ! LIM: thermodynamics, vertical diffusion 
    31    USE limthd_dh       ! LIM: thermodynamics, ice and snow thickness variation 
    32    USE limthd_sal      ! LIM: thermodynamics, ice salinity 
    33    USE limthd_ent      ! LIM: thermodynamics, ice enthalpy redistribution 
    34    USE limtab          ! LIM: 1D <==> 2D transformation 
    35    USE limvar          ! LIM: sea-ice variables 
    36    USE lbclnk          ! lateral boundary condition - MPP links 
    37    USE lib_mpp         ! MPP library 
    38    USE wrk_nemo        ! work arrays 
    39    USE in_out_manager  ! I/O manager 
    40    USE prtctl          ! Print control 
     21   USE phycst         ! physical constants 
     22   USE dom_oce        ! ocean space and time domain variables 
     23   USE ice            ! LIM: sea-ice variables 
     24   USE par_ice        ! LIM: sea-ice parameters 
     25   USE sbc_oce        ! Surface boundary condition: ocean fields 
     26   USE sbc_ice        ! Surface boundary condition: ice fields 
     27   USE thd_ice        ! LIM thermodynamic sea-ice variables 
     28   USE dom_ice        ! LIM sea-ice domain 
     29   USE domvvl         ! domain: variable volume level 
     30   USE limthd_dif     ! LIM: thermodynamics, vertical diffusion 
     31   USE limthd_dh      ! LIM: thermodynamics, ice and snow thickness variation 
     32   USE limthd_sal     ! LIM: thermodynamics, ice salinity 
     33   USE limthd_ent     ! LIM: thermodynamics, ice enthalpy redistribution 
     34   USE limtab         ! LIM: 1D <==> 2D transformation 
     35   USE limvar         ! LIM: sea-ice variables 
     36   USE lbclnk         ! lateral boundary condition - MPP links 
     37   USE lib_mpp        ! MPP library 
     38   USE wrk_nemo       ! work arrays 
     39   USE in_out_manager ! I/O manager 
     40   USE prtctl         ! Print control 
     41   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    4142 
    4243   IMPLICIT NONE 
     
    143144      rdm_ice(:,:) = 0.e0   ! variation of ice mass per unit area 
    144145      hicifp (:,:) = 0.e0   ! daily thermodynamic ice production.  
    145       fsbri  (:,:) = 0.e0   ! brine flux contribution to salt flux to the ocean 
     146      sfx_bri(:,:) = 0.e0   ! brine flux contribution to salt flux to the ocean 
    146147      fhbri  (:,:) = 0.e0   ! brine flux contribution to heat flux to the ocean 
    147       fseqv  (:,:) = 0.e0   ! equivalent salt flux to the ocean due to ice/growth decay 
     148      sfx_thd(:,:) = 0.e0   ! equivalent salt flux to the ocean due to ice/growth decay 
    148149 
    149150      !----------------------------------- 
     
    273274            CALL tab_2d_1d( nbpb, fr2_i0_1d  (1:nbpb), fr2_i0          , jpi, jpj, npb(1:nbpb) ) 
    274275            CALL tab_2d_1d( nbpb, qnsr_ice_1d(1:nbpb), qns_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
    275  
    276276#if ! defined key_coupled 
    277             CALL tab_2d_1d( nbpb, qla_ice_1d (1:nbpb), qla_ice(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    278             CALL tab_2d_1d( nbpb, dqla_ice_1d(1:nbpb), dqla_ice(:,:,jl)   , jpi, jpj, npb(1:nbpb) ) 
     277            CALL tab_2d_1d( nbpb, qla_ice_1d (1:nbpb), qla_ice(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 
     278            CALL tab_2d_1d( nbpb, dqla_ice_1d(1:nbpb), dqla_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 
    279279#endif 
    280  
    281             CALL tab_2d_1d( nbpb, dqns_ice_1d(1:nbpb), dqns_ice(:,:,jl)   , jpi, jpj, npb(1:nbpb) ) 
    282             CALL tab_2d_1d( nbpb, t_bo_b     (1:nbpb), t_bo       , jpi, jpj, npb(1:nbpb) ) 
    283             CALL tab_2d_1d( nbpb, sprecip_1d (1:nbpb), sprecip    , jpi, jpj, npb(1:nbpb) )  
    284             CALL tab_2d_1d( nbpb, fbif_1d    (1:nbpb), fbif       , jpi, jpj, npb(1:nbpb) ) 
    285             CALL tab_2d_1d( nbpb, qldif_1d   (1:nbpb), qldif      , jpi, jpj, npb(1:nbpb) ) 
    286             CALL tab_2d_1d( nbpb, rdm_ice_1d (1:nbpb), rdm_ice    , jpi, jpj, npb(1:nbpb) ) 
    287             CALL tab_2d_1d( nbpb, rdm_snw_1d (1:nbpb), rdm_snw    , jpi, jpj, npb(1:nbpb) ) 
    288             CALL tab_2d_1d( nbpb, dmgwi_1d   (1:nbpb), dmgwi      , jpi, jpj, npb(1:nbpb) ) 
    289             CALL tab_2d_1d( nbpb, qlbbq_1d   (1:nbpb), zqlbsbq    , jpi, jpj, npb(1:nbpb) ) 
    290  
    291             CALL tab_2d_1d( nbpb, fseqv_1d   (1:nbpb), fseqv      , jpi, jpj, npb(1:nbpb) ) 
    292             CALL tab_2d_1d( nbpb, fsbri_1d   (1:nbpb), fsbri      , jpi, jpj, npb(1:nbpb) ) 
    293             CALL tab_2d_1d( nbpb, fhbri_1d   (1:nbpb), fhbri      , jpi, jpj, npb(1:nbpb) ) 
    294             CALL tab_2d_1d( nbpb, fstbif_1d  (1:nbpb), fstric     , jpi, jpj, npb(1:nbpb) ) 
    295             CALL tab_2d_1d( nbpb, qfvbq_1d   (1:nbpb), qfvbq      , jpi, jpj, npb(1:nbpb) ) 
     280            CALL tab_2d_1d( nbpb, dqns_ice_1d(1:nbpb), dqns_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 
     281            CALL tab_2d_1d( nbpb, t_bo_b     (1:nbpb), t_bo            , jpi, jpj, npb(1:nbpb) ) 
     282            CALL tab_2d_1d( nbpb, sprecip_1d (1:nbpb), sprecip         , jpi, jpj, npb(1:nbpb) )  
     283            CALL tab_2d_1d( nbpb, fbif_1d    (1:nbpb), fbif            , jpi, jpj, npb(1:nbpb) ) 
     284            CALL tab_2d_1d( nbpb, qldif_1d   (1:nbpb), qldif           , jpi, jpj, npb(1:nbpb) ) 
     285            CALL tab_2d_1d( nbpb, rdm_ice_1d (1:nbpb), rdm_ice         , jpi, jpj, npb(1:nbpb) ) 
     286            CALL tab_2d_1d( nbpb, rdm_snw_1d (1:nbpb), rdm_snw         , jpi, jpj, npb(1:nbpb) ) 
     287            CALL tab_2d_1d( nbpb, dmgwi_1d   (1:nbpb), dmgwi           , jpi, jpj, npb(1:nbpb) ) 
     288            CALL tab_2d_1d( nbpb, qlbbq_1d   (1:nbpb), zqlbsbq         , jpi, jpj, npb(1:nbpb) ) 
     289 
     290            CALL tab_2d_1d( nbpb, sfx_thd_1d (1:nbpb), sfx_thd         , jpi, jpj, npb(1:nbpb) ) 
     291            CALL tab_2d_1d( nbpb, sfx_bri_1d (1:nbpb), sfx_bri         , jpi, jpj, npb(1:nbpb) ) 
     292            CALL tab_2d_1d( nbpb, fhbri_1d   (1:nbpb), fhbri           , jpi, jpj, npb(1:nbpb) ) 
     293            CALL tab_2d_1d( nbpb, fstbif_1d  (1:nbpb), fstric          , jpi, jpj, npb(1:nbpb) ) 
     294            CALL tab_2d_1d( nbpb, qfvbq_1d   (1:nbpb), qfvbq           , jpi, jpj, npb(1:nbpb) ) 
    296295 
    297296            !-------------------------------- 
     
    331330            !-------------------------------- 
    332331 
    333             CALL tab_1d_2d( nbpb, at_i        , npb, at_i_b(1:nbpb), jpi, jpj ) 
    334             CALL tab_1d_2d( nbpb, ht_i(:,:,jl), npb, ht_i_b(1:nbpb), jpi, jpj ) 
    335             CALL tab_1d_2d( nbpb, ht_s(:,:,jl), npb, ht_s_b(1:nbpb), jpi, jpj ) 
    336             CALL tab_1d_2d( nbpb, a_i (:,:,jl), npb, a_i_b(1:nbpb) , jpi, jpj ) 
    337             CALL tab_1d_2d( nbpb, t_su(:,:,jl), npb, t_su_b(1:nbpb), jpi, jpj ) 
    338             CALL tab_1d_2d( nbpb, sm_i(:,:,jl), npb, sm_i_b(1:nbpb), jpi, jpj ) 
    339  
     332               CALL tab_1d_2d( nbpb, at_i          , npb, at_i_b    (1:nbpb)   , jpi, jpj ) 
     333               CALL tab_1d_2d( nbpb, ht_i(:,:,jl)  , npb, ht_i_b    (1:nbpb)   , jpi, jpj ) 
     334               CALL tab_1d_2d( nbpb, ht_s(:,:,jl)  , npb, ht_s_b    (1:nbpb)   , jpi, jpj ) 
     335               CALL tab_1d_2d( nbpb, a_i (:,:,jl)  , npb, a_i_b     (1:nbpb)   , jpi, jpj ) 
     336               CALL tab_1d_2d( nbpb, t_su(:,:,jl)  , npb, t_su_b    (1:nbpb)   , jpi, jpj ) 
     337               CALL tab_1d_2d( nbpb, sm_i(:,:,jl)  , npb, sm_i_b    (1:nbpb)   , jpi, jpj ) 
    340338            DO jk = 1, nlay_s 
    341                CALL tab_1d_2d( nbpb, t_s(:,:,jk,jl), npb, t_s_b(1:nbpb,jk), jpi, jpj) 
    342                CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, q_s_b(1:nbpb,jk), jpi, jpj) 
     339               CALL tab_1d_2d( nbpb, t_s(:,:,jk,jl), npb, t_s_b     (1:nbpb,jk), jpi, jpj) 
     340               CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, q_s_b     (1:nbpb,jk), jpi, jpj) 
    343341            END DO 
    344  
    345342            DO jk = 1, nlay_i 
    346                CALL tab_1d_2d( nbpb, t_i(:,:,jk,jl), npb, t_i_b(1:nbpb,jk), jpi, jpj) 
    347                CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, q_i_b(1:nbpb,jk), jpi, jpj) 
    348                CALL tab_1d_2d( nbpb, s_i(:,:,jk,jl), npb, s_i_b(1:nbpb,jk), jpi, jpj) 
     343               CALL tab_1d_2d( nbpb, t_i(:,:,jk,jl), npb, t_i_b     (1:nbpb,jk), jpi, jpj) 
     344               CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, q_i_b     (1:nbpb,jk), jpi, jpj) 
     345               CALL tab_1d_2d( nbpb, s_i(:,:,jk,jl), npb, s_i_b     (1:nbpb,jk), jpi, jpj) 
    349346            END DO 
    350  
    351             CALL tab_1d_2d( nbpb, fstric , npb, fstbif_1d (1:nbpb), jpi, jpj ) 
    352             CALL tab_1d_2d( nbpb, qldif  , npb, qldif_1d  (1:nbpb), jpi, jpj ) 
    353             CALL tab_1d_2d( nbpb, qfvbq  , npb, qfvbq_1d  (1:nbpb), jpi, jpj ) 
    354             CALL tab_1d_2d( nbpb, rdm_ice, npb, rdm_ice_1d(1:nbpb), jpi, jpj ) 
    355             CALL tab_1d_2d( nbpb, rdm_snw, npb, rdm_snw_1d(1:nbpb), jpi, jpj ) 
    356             CALL tab_1d_2d( nbpb, dmgwi  , npb, dmgwi_1d  (1:nbpb), jpi, jpj ) 
    357             CALL tab_1d_2d( nbpb, rdvosif, npb, dvsbq_1d  (1:nbpb), jpi, jpj ) 
    358             CALL tab_1d_2d( nbpb, rdvobif, npb, dvbbq_1d  (1:nbpb), jpi, jpj ) 
    359             CALL tab_1d_2d( nbpb, fdvolif, npb, dvlbq_1d  (1:nbpb), jpi, jpj ) 
    360             CALL tab_1d_2d( nbpb, rdvonif, npb, dvnbq_1d  (1:nbpb), jpi, jpj )  
    361             CALL tab_1d_2d( nbpb, fseqv  , npb, fseqv_1d  (1:nbpb), jpi, jpj ) 
     347               CALL tab_1d_2d( nbpb, fstric        , npb, fstbif_1d (1:nbpb)   , jpi, jpj ) 
     348               CALL tab_1d_2d( nbpb, qldif         , npb, qldif_1d  (1:nbpb)   , jpi, jpj ) 
     349               CALL tab_1d_2d( nbpb, qfvbq         , npb, qfvbq_1d  (1:nbpb)   , jpi, jpj ) 
     350               CALL tab_1d_2d( nbpb, rdm_ice       , npb, rdm_ice_1d(1:nbpb)   , jpi, jpj ) 
     351               CALL tab_1d_2d( nbpb, rdm_snw       , npb, rdm_snw_1d(1:nbpb)   , jpi, jpj ) 
     352               CALL tab_1d_2d( nbpb, dmgwi         , npb, dmgwi_1d  (1:nbpb)   , jpi, jpj ) 
     353               CALL tab_1d_2d( nbpb, rdvosif       , npb, dvsbq_1d  (1:nbpb)   , jpi, jpj ) 
     354               CALL tab_1d_2d( nbpb, rdvobif       , npb, dvbbq_1d  (1:nbpb)   , jpi, jpj ) 
     355               CALL tab_1d_2d( nbpb, fdvolif       , npb, dvlbq_1d  (1:nbpb)   , jpi, jpj ) 
     356               CALL tab_1d_2d( nbpb, rdvonif       , npb, dvnbq_1d  (1:nbpb)   , jpi, jpj )  
     357               CALL tab_1d_2d( nbpb, sfx_thd       , npb, sfx_thd_1d(1:nbpb)   , jpi, jpj ) 
    362358            ! 
    363359            IF( num_sal == 2 ) THEN 
    364                CALL tab_1d_2d( nbpb, fsbri, npb, fsbri_1d(1:nbpb), jpi, jpj ) 
    365                CALL tab_1d_2d( nbpb, fhbri, npb, fhbri_1d(1:nbpb), jpi, jpj ) 
     360               CALL tab_1d_2d( nbpb, sfx_bri       , npb, sfx_bri_1d(1:nbpb)   , jpi, jpj ) 
     361               CALL tab_1d_2d( nbpb, fhbri         , npb, fhbri_1d  (1:nbpb)   , jpi, jpj ) 
    366362            ENDIF 
    367363            ! 
    368             !+++++ 
    369             !temporary stuff for a dummy version 
     364            !+++++       temporary stuff for a dummy version 
    370365            CALL tab_1d_2d( nbpb, dh_i_surf2D, npb, dh_i_surf(1:nbpb)      , jpi, jpj ) 
    371366            CALL tab_1d_2d( nbpb, dh_i_bott2D, npb, dh_i_bott(1:nbpb)      , jpi, jpj ) 
     
    389384      ! 5.1) Ice heat content               
    390385      !------------------------ 
    391       ! Enthalpies are global variables we have to readjust the units 
     386      ! Enthalpies are global variables we have to readjust the units (heat content in 10^9 Joules) 
    392387      zcoef = 1._wp / ( unit_fac * REAL( nlay_i ) ) 
    393388      DO jl = 1, jpl 
    394389         DO jk = 1, nlay_i 
    395             ! Multiply by volume, divide by nlayers so that heat content in 10^9 Joules 
    396390            e_i(:,:,jk,jl) = e_i(:,:,jk,jl) * area(:,:) * a_i(:,:,jl) * ht_i(:,:,jl) * zcoef 
    397391         END DO 
     
    401395      ! 5.2) Snow heat content               
    402396      !------------------------ 
    403       ! Enthalpies are global variables we have to readjust the units 
     397      ! Enthalpies are global variables we have to readjust the units (heat content in 10^9 Joules) 
    404398      zcoef = 1._wp / ( unit_fac * REAL( nlay_s ) ) 
    405399      DO jl = 1, jpl 
    406400         DO jk = 1, nlay_s 
    407             ! Multiply by volume, so that heat content in 10^9 Joules 
    408401            e_s(:,:,jk,jl) = e_s(:,:,jk,jl) * area(:,:) * a_i(:,:,jl) * ht_s(:,:,jl) * zcoef 
    409402         END DO 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90

    r3523 r3524  
    1414   !!   'key_lim3'                                      LIM3 sea-ice model 
    1515   !!---------------------------------------------------------------------- 
    16    !!   lim_thd_dh  : vertical accr./abl. and lateral ablation of sea ice 
    17    !!---------------------------------------------------------------------- 
    18    USE par_oce          ! ocean parameters 
    19    USE phycst           ! physical constants (OCE directory)  
    20    USE sbc_oce          ! Surface boundary condition: ocean fields 
    21    USE ice              ! LIM variables 
    22    USE par_ice          ! LIM parameters 
    23    USE thd_ice          ! LIM thermodynamics 
    24    USE in_out_manager   ! I/O manager 
    25    USE lib_mpp          ! MPP library 
    26    USE wrk_nemo         ! work arrays 
     16   !!   lim_thd_dh    : vertical accr./abl. and lateral ablation of sea ice 
     17   !!---------------------------------------------------------------------- 
     18   USE par_oce        ! ocean parameters 
     19   USE phycst         ! physical constants (OCE directory)  
     20   USE sbc_oce        ! Surface boundary condition: ocean fields 
     21   USE ice            ! LIM variables 
     22   USE par_ice        ! LIM parameters 
     23   USE thd_ice        ! LIM thermodynamics 
     24   USE in_out_manager ! I/O manager 
     25   USE lib_mpp        ! MPP library 
     26   USE wrk_nemo       ! work arrays 
     27   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2728 
    2829   IMPLICIT NONE 
     
    3839 
    3940   !!---------------------------------------------------------------------- 
    40    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010) 
     41   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    4142   !! $Id$ 
    4243   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    103104      REAL(wp), POINTER, DIMENSION(:) ::   zfmass_i    !  
    104105 
    105       REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_mel     ! snow melt  
    106       REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_pre     ! snow precipitation  
    107       REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_sub     ! snow sublimation 
    108       REAL(wp), POINTER, DIMENSION(:) ::   zfsalt_melt   ! salt flux due to ice melt 
     106      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_mel   ! snow melt  
     107      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_pre   ! snow precipitation  
     108      REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_sub   ! snow sublimation 
     109      REAL(wp), POINTER, DIMENSION(:) ::   zsfx_melt   ! salt flux due to ice melt 
    109110 
    110111      REAL(wp), POINTER, DIMENSION(:,:) ::   zdeltah 
     
    127128 
    128129      CALL wrk_alloc( jpij, zh_i, zh_s, ztfs, zhsold, zqprec, zqfont_su, zqfont_bo, z_f_surf, zhgnew, zfmass_i ) 
    129       CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zfsalt_melt, zfdt_init, zfdt_final, zqt_i, zqt_s, zqt_dummy ) 
     130      CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zsfx_melt, zfdt_init, zfdt_final, zqt_i, zqt_s, zqt_dummy ) 
    130131      CALL wrk_alloc( jpij, zinnermelt, zfbase, zdq_i ) 
    131132      CALL wrk_alloc( jpij, jkmax, zdeltah, zqt_i_lay ) 
    132133 
    133       zfsalt_melt(:) = 0._wp 
    134       ftotal_fin(:)   = 0._wp 
    135       zfdt_init(:)    = 0._wp 
    136       zfdt_final(:)   = 0._wp 
     134      zsfx_melt (:) = 0._wp 
     135      ftotal_fin(:) = 0._wp 
     136      zfdt_init (:) = 0._wp 
     137      zfdt_final(:) = 0._wp 
    137138 
    138139      DO ji = kideb, kiut 
     
    272273            ! 
    273274            !                                                    ! contribution to ice-ocean salt flux  
    274             zfsalt_melt(ji)  = zfsalt_melt(ji) - sm_i_b(ji) * a_i_b(ji) * MIN( zdeltah(ji,jk) , 0._wp ) * rhoic * r1_rdtice  
     275            zsfx_melt(ji)  = zsfx_melt(ji) - sm_i_b(ji) * a_i_b(ji) * MIN( zdeltah(ji,jk) , 0._wp ) * rhoic * r1_rdtice  
    275276         END DO 
    276277      END DO 
     
    472473               ENDIF 
    473474               ! contribution to salt flux 
    474                zfsalt_melt(ji) = zfsalt_melt(ji) - sm_i_b(ji) * a_i_b(ji) * MIN( zdeltah(ji,jk) , 0._wp ) * rhoic * r1_rdtice  
     475               zsfx_melt(ji) = zsfx_melt(ji) - sm_i_b(ji) * a_i_b(ji) * MIN( zdeltah(ji,jk) , 0._wp ) * rhoic * r1_rdtice  
    475476            ENDIF 
    476477         END DO ! ji 
     
    592593         ! 
    593594         ! Salt flux 
    594          fseqv_1d(ji) = fseqv_1d(ji) +        zihgnew  * zfsalt_melt(ji)                                & 
    595             &                        - (1.0 - zihgnew) * zfmass_i  (ji) * sm_i_b(ji) ) * r1_rdtice 
     595         sfx_thd_1d(ji) = sfx_thd_1d(ji) +        zihgnew  * zsfx_melt(ji)                & 
     596            &                            - (1.0 - zihgnew) * zfmass_i (ji) * sm_i_b(ji) ) * r1_rdtice 
    596597         ! 
    597598         ! Heat flux 
     
    653654         ELSE                      ;   zsm_snowice = sm_i_b(ji)    
    654655         ENDIF 
    655          fseqv_1d(ji) = fseqv_1d(ji) - zsm_snowice * a_i_b(ji) * dh_snowice(ji) * rhoic * r1_rdtice 
     656         sfx_thd_1d(ji) = sfx_thd_1d(ji) - zsm_snowice * a_i_b(ji) * dh_snowice(ji) * rhoic * r1_rdtice 
    656657         ! 
    657658         ! entrapment during snow ice formation 
     
    678679      ! 
    679680      CALL wrk_dealloc( jpij, zh_i, zh_s, ztfs, zhsold, zqprec, zqfont_su, zqfont_bo, z_f_surf, zhgnew, zfmass_i ) 
    680       CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zfsalt_melt, zfdt_init, zfdt_final, zqt_i, zqt_s, zqt_dummy ) 
     681      CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zsfx_melt, zfdt_init, zfdt_final, zqt_i, zqt_s, zqt_dummy ) 
    681682      CALL wrk_dealloc( jpij, zinnermelt, zfbase, zdq_i ) 
    682683      CALL wrk_dealloc( jpij, jkmax, zdeltah, zqt_i_lay ) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90

    r3517 r3524  
    1515   !!   'key_lim3'                                      LIM3 sea-ice model 
    1616   !!---------------------------------------------------------------------- 
    17    USE par_oce          ! ocean parameters 
    18    USE phycst           ! physical constants (ocean directory)  
    19    USE ice              ! LIM-3 variables 
    20    USE par_ice          ! LIM-3 parameters 
    21    USE thd_ice          ! LIM-3: thermodynamics 
    22    USE in_out_manager   ! I/O manager 
    23    USE lib_mpp          ! MPP library 
    24    USE wrk_nemo         ! work arrays 
     17   USE par_oce        ! ocean parameters 
     18   USE phycst         ! physical constants (ocean directory)  
     19   USE ice            ! LIM-3 variables 
     20   USE par_ice        ! LIM-3 parameters 
     21   USE thd_ice        ! LIM-3: thermodynamics 
     22   USE in_out_manager ! I/O manager 
     23   USE lib_mpp        ! MPP library 
     24   USE wrk_nemo       ! work arrays 
     25   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2526 
    2627   IMPLICIT NONE 
     
    3334 
    3435   !!---------------------------------------------------------------------- 
    35    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     36   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    3637   !! $Id$ 
    3738   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90

    r3517 r3524  
    1616   !!   'key_lim3'                                      LIM3 sea-ice model 
    1717   !!---------------------------------------------------------------------- 
    18    !!   lim_thd_ent : ice redistribution of enthalpy 
     18   !!   lim_thd_ent   : ice redistribution of enthalpy 
    1919   !!---------------------------------------------------------------------- 
    20    USE par_oce          ! ocean parameters 
    21    USE dom_oce          ! domain variables 
    22    USE domain           ! 
    23    USE phycst           ! physical constants 
    24    USE ice              ! LIM variables 
    25    USE par_ice          ! LIM parameters 
    26    USE thd_ice          ! LIM thermodynamics 
    27    USE limvar           ! LIM variables 
    28    USE in_out_manager   ! I/O manager 
    29    USE lib_mpp          ! MPP library 
    30    USE wrk_nemo         ! work arrays 
     20   USE par_oce        ! ocean parameters 
     21   USE dom_oce        ! domain variables 
     22   USE domain         ! 
     23   USE phycst         ! physical constants 
     24   USE ice            ! LIM variables 
     25   USE par_ice        ! LIM parameters 
     26   USE thd_ice        ! LIM thermodynamics 
     27   USE limvar         ! LIM variables 
     28   USE in_out_manager ! I/O manager 
     29   USE lib_mpp        ! MPP library 
     30   USE wrk_nemo       ! work arrays 
     31   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3132 
    3233   IMPLICIT NONE 
     
    4344 
    4445   !!---------------------------------------------------------------------- 
    45    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     46   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    4647   !! $Id$ 
    4748   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90

    r3523 r3524  
    1313   !!   'key_lim3'                                      LIM3 sea-ice model 
    1414   !!---------------------------------------------------------------------- 
    15    !!   lim_lat_acr    : lateral accretion of ice 
    16    !!---------------------------------------------------------------------- 
    17    USE par_oce          ! ocean parameters 
    18    USE dom_oce          ! domain variables 
    19    USE phycst           ! physical constants 
    20    USE sbc_oce          ! Surface boundary condition: ocean fields 
    21    USE sbc_ice          ! Surface boundary condition: ice fields 
    22    USE thd_ice          ! LIM thermodynamics 
    23    USE dom_ice          ! LIM domain 
    24    USE par_ice          ! LIM parameters 
    25    USE ice              ! LIM variables 
    26    USE limtab           ! LIM 2D <==> 1D 
    27    USE limcons          ! LIM conservation 
    28    USE in_out_manager   ! I/O manager 
    29    USE lib_mpp          ! MPP library 
    30    USE wrk_nemo         ! work arrays 
     15   !!   lim_lat_acr   : lateral accretion of ice 
     16   !!---------------------------------------------------------------------- 
     17   USE par_oce        ! ocean parameters 
     18   USE dom_oce        ! domain variables 
     19   USE phycst         ! physical constants 
     20   USE sbc_oce        ! Surface boundary condition: ocean fields 
     21   USE sbc_ice        ! Surface boundary condition: ice fields 
     22   USE thd_ice        ! LIM thermodynamics 
     23   USE dom_ice        ! LIM domain 
     24   USE par_ice        ! LIM parameters 
     25   USE ice            ! LIM variables 
     26   USE limtab         ! LIM 2D <==> 1D 
     27   USE limcons        ! LIM conservation 
     28   USE in_out_manager ! I/O manager 
     29   USE lib_mpp        ! MPP library 
     30   USE wrk_nemo       ! work arrays 
     31   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3132 
    3233   IMPLICIT NONE 
     
    4546 
    4647   !!---------------------------------------------------------------------- 
    47    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     48   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    4849   !! $Id$ 
    4950   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    7778      !!               update ht_s_b, ht_i_b and tbif_1d(:,:)       
    7879      !!------------------------------------------------------------------------ 
    79       INTEGER ::   ji,jj,jk,jl,jm   ! dummy loop indices 
    80       INTEGER ::   layer, nbpac     ! local integers  
    81       INTEGER ::   zji, zjj, iter   !   -       - 
    82       REAL(wp)  ::   ztmelts, zdv, zqold, zfrazb, zweight, zalphai, zindb, zde  ! local scalars 
     80      INTEGER  ::   ji,jj,jk,jl,jm   ! dummy loop indices 
     81      INTEGER  ::   layer, nbpac     ! local integers  
     82      INTEGER  ::   zji, zjj, iter   !   -       - 
     83      REAL(wp) ::   ztmelts, zdv, zqold, zfrazb, zweight, zalphai, zindb, zde   ! local scalars 
    8384      REAL(wp) ::   zgamafr, zvfrx, zvgx, ztaux, ztwogp, zf , zhicol_new        !   -      - 
    8485      REAL(wp) ::   ztenagm, zvfry, zvgy, ztauy, zvrel2, zfp, zsqcd , zhicrit   !   -      - 
     86      REAL(wp) ::   zcoef                                                       !   -      - 
    8587      LOGICAL  ::   iterate_frazil   ! iterate frazil ice collection thickness 
    8688      CHARACTER (len = 15) :: fieldid 
     
    205207                  !------------- 
    206208                  ! C-grid wind stress components 
    207                   ztaux         = ( utau_ice(ji-1,jj  ) * tmu(ji-1,jj  ) & 
    208                      &          +   utau_ice(ji  ,jj  ) * tmu(ji  ,jj  ) ) / 2.0 
    209                   ztauy         = ( vtau_ice(ji  ,jj-1) * tmv(ji  ,jj-1) & 
    210                      &          +   vtau_ice(ji  ,jj  ) * tmv(ji  ,jj  ) ) / 2.0 
     209                  ztaux         = ( utau_ice(ji-1,jj  ) * tmu(ji-1,jj  )   & 
     210                     &          +   utau_ice(ji  ,jj  ) * tmu(ji  ,jj  ) ) * 0.5_wp 
     211                  ztauy         = ( vtau_ice(ji  ,jj-1) * tmv(ji  ,jj-1)   & 
     212                     &          +   vtau_ice(ji  ,jj  ) * tmv(ji  ,jj  ) ) * 0.5_wp 
    211213                  ! Square root of wind stress 
    212214                  ztenagm       =  SQRT( SQRT( ztaux * ztaux + ztauy * ztauy ) ) 
     
    222224                  !------------------- 
    223225                  ! C-grid ice velocity 
    224                   zindb = MAX(0.0, SIGN(1.0, at_i(ji,jj) )) 
    225                   zvgx  = zindb * ( u_ice(ji-1,jj  ) * tmu(ji-1,jj  ) & 
    226                      + u_ice(ji,jj    ) * tmu(ji  ,jj  ) ) / 2.0 
    227                   zvgy  = zindb * ( v_ice(ji  ,jj-1) * tmv(ji  ,jj-1) & 
    228                      + v_ice(ji,jj    ) * tmv(ji  ,jj  ) ) / 2.0 
     226                  zindb = MAX(  0._wp, SIGN( 1._wp , at_i(ji,jj) )  ) 
     227                  zvgx  = zindb * (  u_ice(ji-1,jj  ) * tmu(ji-1,jj  )    & 
     228                     &             + u_ice(ji,jj    ) * tmu(ji  ,jj  )  ) * 0.5_wp 
     229                  zvgy  = zindb * (  v_ice(ji  ,jj-1) * tmv(ji  ,jj-1)    & 
     230                     &             + v_ice(ji,jj    ) * tmv(ji  ,jj  )  ) * 0.5_wp 
    229231 
    230232                  !----------------------------------- 
     
    232234                  !----------------------------------- 
    233235                  ! absolute relative velocity 
    234                   zvrel2        = MAX( ( zvfrx - zvgx ) * ( zvfrx - zvgx ) + & 
    235                      ( zvfry - zvgy ) * ( zvfry - zvgy )   & 
    236                      , 0.15 * 0.15 ) 
    237                   zvrel(ji,jj)  = SQRT(zvrel2) 
     236                  zvrel2 = MAX(  ( zvfrx - zvgx ) * ( zvfrx - zvgx )   & 
     237                     &         + ( zvfry - zvgy ) * ( zvfry - zvgy ) , 0.15 * 0.15 ) 
     238                  zvrel(ji,jj)  = SQRT( zvrel2 ) 
    238239 
    239240                  !--------------------- 
     
    241242                  !--------------------- 
    242243                  hicol(ji,jj) = zhicrit + 0.1  
    243                   hicol(ji,jj) = zhicrit + hicol(ji,jj) /      &  
    244                      ( hicol(ji,jj) * hicol(ji,jj) - & 
    245                      zhicrit * zhicrit ) * ztwogp * zvrel2 
     244                  hicol(ji,jj) = zhicrit +   hicol(ji,jj)    & 
     245                     &                   / ( hicol(ji,jj) * hicol(ji,jj) -  zhicrit * zhicrit ) * ztwogp * zvrel2 
     246 
     247!!gm better coding: above: hicol(ji,jj) * hicol(ji,jj) = (zhicrit + 0.1)*(zhicrit + 0.1) 
     248!!gm                                                   = zhicrit**2 + 0.2*zhicrit +0.01 
     249!!gm                therefore the 2 lines with hicol can be replaced by 1 line: 
     250!!gm              hicol(ji,jj) = zhicrit + (zhicrit + 0.1) / ( 0.2 * zhicrit + 0.01 ) * ztwogp * zvrel2 
     251!!gm further more (zhicrit + 0.1)/(0.2 * zhicrit + 0.01 )*ztwogp can be computed one for all outside the DO loop 
    246252 
    247253                  iter = 1 
     
    278284      DO jj = 1, jpj 
    279285         DO ji = 1, jpi 
    280             IF ( tms(ji,jj) * ( qcmif(ji,jj) - qldif(ji,jj) ) > 0.e0 ) THEN 
     286            IF ( tms(ji,jj) * ( qcmif(ji,jj) - qldif(ji,jj) )  >  0._wp ) THEN 
    281287               nbpac = nbpac + 1 
    282288               npac( nbpac ) = (jj - 1) * jpi + ji 
    283                IF ( (ji.eq.jiindx).AND.(jj.eq.jjindx) ) THEN 
    284                   jiindex_1d = nbpac 
    285                ENDIF 
     289               IF( ji == jiindx .AND. jj == jjindx )   jiindex_1d = nbpac 
    286290            ENDIF 
    287291         END DO 
    288292      END DO 
    289293 
    290       IF( ln_nicep ) THEN 
    291          WRITE(numout,*) 'lim_thd_lac : nbpac = ', nbpac 
    292       ENDIF 
     294      IF( ln_nicep )   WRITE(numout,*) 'lim_thd_lac : nbpac = ', nbpac 
    293295 
    294296      !------------------------------ 
     
    302304         CALL tab_2d_1d( nbpac, zat_i_ac  (1:nbpac)     , at_i         , jpi, jpj, npac(1:nbpac) ) 
    303305         DO jl = 1, jpl 
    304             CALL tab_2d_1d( nbpac, za_i_ac(1:nbpac,jl)  , a_i(:,:,jl)  , jpi, jpj, npac(1:nbpac) ) 
    305             CALL tab_2d_1d( nbpac, zv_i_ac(1:nbpac,jl)  , v_i(:,:,jl)  , jpi, jpj, npac(1:nbpac) ) 
    306             CALL tab_2d_1d( nbpac, zoa_i_ac(1:nbpac,jl) , oa_i(:,:,jl) , jpi, jpj, npac(1:nbpac) ) 
     306            CALL tab_2d_1d( nbpac, za_i_ac  (1:nbpac,jl), a_i  (:,:,jl), jpi, jpj, npac(1:nbpac) ) 
     307            CALL tab_2d_1d( nbpac, zv_i_ac  (1:nbpac,jl), v_i  (:,:,jl), jpi, jpj, npac(1:nbpac) ) 
     308            CALL tab_2d_1d( nbpac, zoa_i_ac (1:nbpac,jl), oa_i (:,:,jl), jpi, jpj, npac(1:nbpac) ) 
    307309            CALL tab_2d_1d( nbpac, zsmv_i_ac(1:nbpac,jl), smv_i(:,:,jl), jpi, jpj, npac(1:nbpac) ) 
    308310            DO jk = 1, nlay_i 
     
    311313         END DO ! jl 
    312314 
    313          CALL tab_2d_1d( nbpac, qldif_1d  (1:nbpac)     , qldif , jpi, jpj, npac(1:nbpac) ) 
    314          CALL tab_2d_1d( nbpac, qcmif_1d  (1:nbpac)     , qcmif , jpi, jpj, npac(1:nbpac) ) 
    315          CALL tab_2d_1d( nbpac, t_bo_b    (1:nbpac)     , t_bo  , jpi, jpj, npac(1:nbpac) ) 
    316          CALL tab_2d_1d( nbpac, fseqv_1d  (1:nbpac)     , fseqv , jpi, jpj, npac(1:nbpac) ) 
     315         CALL tab_2d_1d( nbpac, qldif_1d  (1:nbpac)     , qldif  , jpi, jpj, npac(1:nbpac) ) 
     316         CALL tab_2d_1d( nbpac, qcmif_1d  (1:nbpac)     , qcmif  , jpi, jpj, npac(1:nbpac) ) 
     317         CALL tab_2d_1d( nbpac, t_bo_b    (1:nbpac)     , t_bo   , jpi, jpj, npac(1:nbpac) ) 
     318         CALL tab_2d_1d( nbpac, sfx_thd_1d(1:nbpac)     , sfx_thd, jpi, jpj, npac(1:nbpac) ) 
    317319         CALL tab_2d_1d( nbpac, rdm_ice_1d(1:nbpac)     , rdm_ice, jpi, jpj, npac(1:nbpac) ) 
    318          CALL tab_2d_1d( nbpac, hicol_b   (1:nbpac)     , hicol , jpi, jpj, npac(1:nbpac) ) 
    319          CALL tab_2d_1d( nbpac, zvrel_ac  (1:nbpac)     , zvrel , jpi, jpj, npac(1:nbpac) ) 
     320         CALL tab_2d_1d( nbpac, hicol_b   (1:nbpac)     , hicol  , jpi, jpj, npac(1:nbpac) ) 
     321         CALL tab_2d_1d( nbpac, zvrel_ac  (1:nbpac)     , zvrel  , jpi, jpj, npac(1:nbpac) ) 
    320322 
    321323         !------------------------------------------------------------------------------! 
     
    392394         ! note that for constant salinity zs_newice() = bulk_sal (see top of the subroutine) 
    393395         DO ji = 1, nbpac 
    394             fseqv_1d  (ji) = fseqv_1d  (ji) - zs_newice(ji) * rhoic * zv_newice(ji) * r1_rdtice 
     396            sfx_thd_1d(ji) = sfx_thd_1d(ji) - zs_newice(ji) * rhoic * zv_newice(ji) * r1_rdtice 
    395397            rdm_ice_1d(ji) = rdm_ice_1d(ji) +                 rhoic * zv_newice(ji) 
    396398         END DO ! ji 
     
    400402         !------------------------------------ 
    401403         DO ji = 1, nbpac 
    402             ! Volume 
    403             zji                  = MOD( npac(ji) - 1, jpi ) + 1 
    404             zjj                  = ( npac(ji) - 1 ) / jpi + 1 
    405             vt_i_init(zji,zjj)   = vt_i_init(zji,zjj) + zv_newice(ji) 
    406             ! Energy 
    407             zde                  = ze_newice(ji) / unit_fac 
    408             zde                  = zde * area(zji,zjj) * zv_newice(ji) 
    409             et_i_init(zji,zjj)   = et_i_init(zji,zjj) + zde 
     404            zji = MOD( npac(ji) - 1 , jpi ) + 1 
     405            zjj =    ( npac(ji) - 1 ) / jpi + 1 
     406            ! 
     407            zde = ze_newice(ji) / unit_fac * area(zji,zjj) * zv_newice(ji) 
     408            ! 
     409            vt_i_init(zji,zjj) = vt_i_init(zji,zjj) + zv_newice(ji)             ! volume 
     410            et_i_init(zji,zjj) = et_i_init(zji,zjj) + zde                       ! Energy 
     411 
    410412         END DO 
    411413 
     
    417419         !----------------- 
    418420         DO ji = 1, nbpac 
    419             za_newice(ji)     = zv_newice(ji) / zh_newice(ji) 
    420             ! diagnostic 
    421             zji                  = MOD( npac(ji) - 1, jpi ) + 1 
    422             zjj                  = ( npac(ji) - 1 ) / jpi + 1 
     421            zji = MOD( npac(ji) - 1 , jpi ) + 1 
     422            zjj =    ( npac(ji) - 1 ) / jpi + 1 
     423            za_newice(ji) = zv_newice(ji) / zh_newice(ji) 
    423424            diag_lat_gr(zji,zjj) = zv_newice(ji) * r1_rdtice 
    424425         END DO !ji 
     
    438439         !------------------------------------------- 
    439440         ! If lateral ice growth gives an ice concentration gt 1, then 
    440          ! we keep the excessive volume in memory and attribute it later 
    441          ! to bottom accretion 
    442          DO ji = 1, nbpac 
    443             ! vectorize 
    444             IF ( za_newice(ji) .GT. ( 1.0 - zat_i_ac(ji) ) ) THEN 
    445                zda_res(ji)    = za_newice(ji) - (1.0 - zat_i_ac(ji) ) 
    446                zdv_res(ji)    = zda_res(ji) * zh_newice(ji)  
    447                za_newice(ji)  = za_newice(ji) - zda_res(ji) 
    448                zv_newice(ji)  = zv_newice(ji) - zdv_res(ji) 
     441         ! we keep the excessive volume in memory and attribute it later to bottom accretion 
     442         DO ji = 1, nbpac 
     443            IF ( za_newice(ji)  >  ( 1._wp - zat_i_ac(ji) ) ) THEN 
     444               zda_res(ji)   = za_newice(ji) - (1.0 - zat_i_ac(ji) ) 
     445               zdv_res(ji)   = zda_res  (ji) * zh_newice(ji)  
     446               za_newice(ji) = za_newice(ji) - zda_res  (ji) 
     447               zv_newice(ji) = zv_newice(ji) - zdv_res  (ji) 
    449448            ELSE 
    450                zda_res(ji) = 0.0 
    451                zdv_res(ji) = 0.0 
     449               zda_res(ji) = 0._wp 
     450               zdv_res(ji) = 0._wp 
    452451            ENDIF 
    453452         END DO ! ji 
     
    459458         DO jl = 1, jpl 
    460459            DO ji = 1, nbpac 
    461                IF(  hi_max   (jl-1)  <  zh_newice(ji)   .AND.   & 
    462                   & zh_newice(ji)    <= hi_max   (jl)         ) THEN 
     460               IF(  hi_max   (jl-1)  <   zh_newice(ji)   .AND.   & 
     461                  & zh_newice(ji)    <=  hi_max   (jl)         ) THEN 
    463462                  za_i_ac (ji,jl) = za_i_ac (ji,jl) + za_newice(ji) 
    464463                  zv_i_ac (ji,jl) = zv_i_ac (ji,jl) + zv_newice(ji) 
     
    466465                  zcatac  (ji)    = jl 
    467466               ENDIF 
    468             END DO ! ji 
    469          END DO ! jl 
     467            END DO 
     468         END DO 
    470469 
    471470         !---------------------------------- 
     
    483482            DO ji = 1, nbpac 
    484483               jl = zcatac(ji) 
    485                zqold   = ze_i_ac(ji,jk,jl) ! [ J.m-3 ] 
     484               zqold   = ze_i_ac(ji,jk,jl)      ! [ J.m-3 ] 
    486485               zalphai = MIN( zhice_old(ji,jl) *   jk       / nlay_i , zh_newice(ji) )   & 
    487486                  &    - MIN( zhice_old(ji,jl) * ( jk - 1 ) / nlay_i , zh_newice(ji) ) 
     
    489488                  + ( 1.0 - zswinew(ji) ) * ( za_old(ji,jl)  * zqold * zhice_old(ji,jl) / nlay_i   & 
    490489                  + za_newice(ji)  * ze_newice(ji) * zalphai                                       & 
    491                   + za_newice(ji)  * ze_newice(ji) * zdhex(ji) / nlay_i ) / ( ( zv_i_ac(ji,jl) ) / nlay_i ) 
     490                  + za_newice(ji)  * ze_newice(ji) * zdhex(ji) / nlay_i ) / ( zv_i_ac(ji,jl) / nlay_i ) 
    492491            END DO 
    493492         END DO 
     
    529528               zdhicbot (ji,jl) = zdv_res(ji)    / MAX( za_i_ac(ji,jl) , epsi10 ) * zindb    & 
    530529                  &             +  zindb * zdh_frazb(ji)                               ! frazil ice may coalesce 
    531                zdummy(ji,jl)    = zv_i_ac(ji,jl)/MAX(za_i_ac(ji,jl),epsi10)*zindb      ! thickness of residual ice 
     530               zdummy(ji,jl)    = zv_i_ac(ji,jl) / MAX( za_i_ac(ji,jl) , epsi10 ) * zindb      ! thickness of residual ice 
    532531            END DO 
    533532         END DO 
     
    613612            END DO 
    614613         END DO 
    615          CALL tab_1d_2d( nbpac, fseqv  , npac(1:nbpac), fseqv_1d  (1:nbpac), jpi, jpj ) 
     614         CALL tab_1d_2d( nbpac, sfx_thd, npac(1:nbpac), sfx_thd_1d(1:nbpac), jpi, jpj ) 
    616615         CALL tab_1d_2d( nbpac, rdm_ice, npac(1:nbpac), rdm_ice_1d(1:nbpac), jpi, jpj ) 
    617616         ! 
     
    623622      DO jl = 1, jpl 
    624623         DO jk = 1, nlay_i          ! heat content in 10^9 Joules 
    625             e_i(:,:,jk,jl) = e_i(:,:,jk,jl) * area(:,:) * v_i(:,:,jl) / nlay_i  / unit_fac  
     624            e_i(:,:,jk,jl) = e_i(:,:,jk,jl) * area(:,:) * v_i(:,:,jl) / nlay_i / unit_fac  
    626625         END DO 
    627626      END DO 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90

    r3523 r3524  
    1212   !!   'key_lim3'                                      LIM-3 sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    !!   lim_thd_sal : salinity variations in the ice 
    15    !!---------------------------------------------------------------------- 
    16    USE par_oce          ! ocean parameters 
    17    USE phycst           ! physical constants (ocean directory) 
    18    USE sbc_oce          ! Surface boundary condition: ocean fields 
    19    USE ice              ! LIM variables 
    20    USE par_ice          ! LIM parameters 
    21    USE thd_ice          ! LIM thermodynamics 
    22    USE limvar           ! LIM variables 
    23    USE in_out_manager   ! I/O manager 
    24    USE lib_mpp          ! MPP library 
    25    USE wrk_nemo         ! work arrays 
     14   !!   lim_thd_sal   : salinity variations in the ice 
     15   !!---------------------------------------------------------------------- 
     16   USE par_oce        ! ocean parameters 
     17   USE phycst         ! physical constants (ocean directory) 
     18   USE sbc_oce        ! Surface boundary condition: ocean fields 
     19   USE ice            ! LIM variables 
     20   USE par_ice        ! LIM parameters 
     21   USE thd_ice        ! LIM thermodynamics 
     22   USE limvar         ! LIM variables 
     23   USE in_out_manager ! I/O manager 
     24   USE lib_mpp        ! MPP library 
     25   USE wrk_nemo       ! work arrays 
     26   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2627 
    2728   IMPLICIT NONE 
     
    3233 
    3334   !!---------------------------------------------------------------------- 
    34    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     35   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    3536   !! $Id$ 
    3637   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    149150         DO ji = kideb, kiut 
    150151            i_ice_switch = 1._wp - MAX(  0._wp, SIGN( 1._wp , - ht_i_b(ji) )  ) 
    151             fsbri_1d(ji) = fsbri_1d(ji) - i_ice_switch * rhoic * a_i_b(ji) * ht_i_b(ji)         & 
    152                &         * ( MAX( dsm_i_gd_1d(ji) + dsm_i_fl_1d(ji) , sm_i_b(ji) - zsiold(ji) ) ) * r1_rdtice 
    153          END DO ! ji 
     152            sfx_bri_1d(ji) = sfx_bri_1d(ji) - i_ice_switch * rhoic * a_i_b(ji) * ht_i_b(ji)         & 
     153               &           * ( MAX( dsm_i_gd_1d(ji) + dsm_i_fl_1d(ji) , sm_i_b(ji) - zsiold(ji) ) ) * r1_rdtice 
     154         END DO 
    154155 
    155156         ! Only necessary for conservation check since salinity is modified 
     
    183184      ! note: s_i_new = bulk_sal in constant salinity case 
    184185      DO ji = kideb, kiut 
    185          fseqv_1d(ji) = fseqv_1d(ji) - s_i_new(ji) * rhoic * a_i_b(ji) * MAX( dh_i_bott(ji) , 0._wp ) * r1_rdtice 
     186         sfx_thd_1d(ji) = sfx_thd_1d(ji) - s_i_new(ji) * rhoic * a_i_b(ji) * MAX( dh_i_bott(ji) , 0._wp ) * r1_rdtice 
    186187      END DO 
    187188      ! 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90

    r3523 r3524  
    1414   !!   lim_trp      : advection/diffusion process of sea ice 
    1515   !!---------------------------------------------------------------------- 
    16    USE phycst          ! physical constant 
    17    USE dom_oce         ! ocean domain 
    18    USE sbc_oce         ! ocean surface boundary condition 
    19    USE par_ice         ! LIM-3 parameter 
    20    USE dom_ice         ! LIM-3 domain 
    21    USE ice             ! LIM-3 variables 
    22    USE limadv          ! LIM-3 advection 
    23    USE limhdf          ! LIM-3 horizontal diffusion 
    24    USE in_out_manager  ! I/O manager 
    25    USE lbclnk          ! lateral boundary conditions -- MPP exchanges 
    26    USE lib_mpp         ! MPP library 
    27    USE wrk_nemo        ! work arrays 
    28    USE prtctl          ! Print control 
     16   USE phycst         ! physical constant 
     17   USE dom_oce        ! ocean domain 
     18   USE sbc_oce        ! ocean surface boundary condition 
     19   USE par_ice        ! ice parameter 
     20   USE dom_ice        ! ice domain 
     21   USE ice            ! ice variables 
     22   USE limadv         ! ice advection 
     23   USE limhdf         ! ice horizontal diffusion 
     24   USE in_out_manager ! I/O manager 
     25   USE lbclnk         ! lateral boundary conditions -- MPP exchanges 
     26   USE lib_mpp        ! MPP library 
     27   USE wrk_nemo       ! work arrays 
     28   USE prtctl         ! Print control 
     29   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2930 
    3031   IMPLICIT NONE 
     
    4546#  include "vectopt_loop_substitute.h90" 
    4647   !!---------------------------------------------------------------------- 
    47    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     48   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    4849   !! $Id$ 
    4950   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90

    r3523 r3524  
    1212   !!    lim_update   : computes update of sea-ice global variables from trend terms 
    1313   !!---------------------------------------------------------------------- 
    14    USE limrhg          ! ice rheology 
    15  
    16    USE dom_oce 
    17    USE oce             ! dynamics and tracers variables 
    18    USE in_out_manager 
    19    USE sbc_oce         ! Surface boundary condition: ocean fields 
    20    USE sbc_ice         ! Surface boundary condition: ice fields 
    21    USE dom_ice 
    22    USE phycst          ! physical constants 
    23    USE ice 
    24    USE limdyn 
    25    USE limtrp 
    26    USE limthd 
    27    USE limsbc 
    28    USE limdia 
    29    USE limwri 
    30    USE limrst 
    31    USE thd_ice         ! LIM thermodynamic sea-ice variables 
    32    USE par_ice 
    33    USE limitd_th 
    34    USE limvar 
    35    USE prtctl           ! Print control 
    36    USE lbclnk           ! lateral boundary condition - MPP exchanges 
    37    USE wrk_nemo         ! work arrays 
     14   USE dom_oce        ! ocean domain 
     15   USE oce            ! dynamics and tracers variables 
     16   USE sbc_oce        ! Surface boundary condition: ocean fields 
     17   USE sbc_ice        ! Surface boundary condition: ice fields 
     18   USE phycst         ! physical constants 
     19   USE ice            ! ice variables  
     20   USE par_ice        ! ice parameters 
     21   USE thd_ice        ! ice thermodynamic variables 
     22   USE dom_ice        ! ice domain 
     23   USE limrhg         ! ice rheology 
     24   USE limdyn         ! ice dynamics 
     25   USE limtrp         ! ice transport 
     26   USE limthd         ! ice thermodynamics 
     27   USE limsbc         ! ice-oce surface boundary conditions 
     28   USE limdia         ! ice diagnostics 
     29   USE limwri         ! ice outputs 
     30   USE limrst         ! ice restart 
     31   USE limitd_th      ! ice thickness distribution (thermodynamics) 
     32   USE limvar         ! ice variables 
     33   USE prtctl         ! Print control 
     34   USE in_out_manager ! I/O manager 
     35   USE lbclnk         ! lateral boundary condition - MPP exchanges 
     36   USE wrk_nemo       ! work arrays 
     37   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3838 
    3939   IMPLICIT NONE 
     
    5454#  include "vectopt_loop_substitute.h90" 
    5555   !!---------------------------------------------------------------------- 
    56    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     56   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    5757   !! $Id$ 
    5858   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    201201 
    202202                  !residual salt flux if ice is over-molten 
    203                   fsalt_res(ji,jj)  = fsalt_res(ji,jj) - sm_i(ji,jj,jl) * ( rhoic * zdvres * r1_rdtice ) 
     203                  sfx_res(ji,jj)  = sfx_res(ji,jj) - sm_i(ji,jj,jl) * ( rhoic * zdvres * r1_rdtice ) 
    204204                  !             fheat_res(ji,jj)  = fheat_res(ji,jj) + rhoic * lfus * zdvres * r1_rdtice 
    205205 
     
    224224         DO jj = 1, jpj 
    225225            DO ji = 1, jpi 
    226                IF ( ABS(fsalt_res(ji,jj)) .GT. 1.0 ) THEN  
    227                   WRITE(numout,*) ' ALERTE 1000 : residual salt flux of -> ', & 
    228                      fsalt_res(ji,jj) 
    229                   WRITE(numout,*) ' ji, jj : ', ji, jj, ' gphit, glamt : ', & 
    230                      gphit(ji,jj), glamt(ji,jj) 
     226               IF(  ABS( sfx_res(ji,jj) )  >  1._wp  ) THEN  
     227                  WRITE(numout,*) ' ALERTE 1000 : residual salt flux of -> ', sfx_res(ji,jj) 
     228                  WRITE(numout,*) ' ji, jj : ', ji, jj, ' gphit, glamt : ', gphit(ji,jj), glamt(ji,jj) 
    231229               ENDIF 
    232230            END DO 
     
    10101008         CALL prt_ctl(tab2d_1=fmmec  , clinfo1= ' lim_update : fmmec : ', tab2d_2=fhmec     , clinfo2= ' fhmec     : ') 
    10111009         CALL prt_ctl(tab2d_1=sst_m  , clinfo1= ' lim_update : sst   : ', tab2d_2=sss_m     , clinfo2= ' sss       : ') 
    1012          CALL prt_ctl(tab2d_1=fhbri  , clinfo1= ' lim_update : fhbri : ', tab2d_2=fheat_rpo , clinfo2= ' fheat_rpo : ') 
     1010         CALL prt_ctl(tab2d_1=fhbri  , clinfo1= ' lim_update : fhbri : ', tab2d_2=fheat_mec , clinfo2= ' fheat_mec : ') 
    10131011 
    10141012         CALL prt_ctl_info(' ') 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r3517 r3524  
    4343   !!   lim_var_bv        : 
    4444   !!---------------------------------------------------------------------- 
    45    USE par_oce          ! ocean parameters 
    46    USE phycst           ! physical constants (ocean directory)  
    47    USE sbc_oce          ! Surface boundary condition: ocean fields 
    48    USE ice              ! LIM variables 
    49    USE par_ice          ! LIM parameters 
    50    USE dom_ice          ! LIM domain 
    51    USE thd_ice          ! LIM thermodynamics 
    52    USE in_out_manager   ! I/O manager 
    53    USE lib_mpp          ! MPP library 
    54    USE wrk_nemo         ! work arrays 
     45   USE par_oce        ! ocean parameters 
     46   USE phycst         ! physical constants (ocean directory)  
     47   USE sbc_oce        ! Surface boundary condition: ocean fields 
     48   USE ice            ! ice variables 
     49   USE par_ice        ! ice parameters 
     50   USE thd_ice        ! ice variables (thermodynamics) 
     51   USE dom_ice        ! ice domain 
     52   USE in_out_manager ! I/O manager 
     53   USE lib_mpp        ! MPP library 
     54   USE wrk_nemo       ! work arrays 
     55   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    5556 
    5657   IMPLICIT NONE 
     
    7374 
    7475   !!---------------------------------------------------------------------- 
    75    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     76   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    7677   !! $Id$ 
    7778   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r3294 r3524  
    2525   USE wrk_nemo        ! work arrays 
    2626   USE par_ice 
     27   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2728 
    2829   IMPLICIT NONE 
     
    5152   REAL(wp)  ::   zone   = 1._wp       
    5253   !!---------------------------------------------------------------------- 
    53    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     54   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    5455   !! $Id$ 
    5556   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    245246            zcmo(ji,jj,25) = et_i(ji,jj) 
    246247            zcmo(ji,jj,26) = et_s(ji,jj) 
    247             zcmo(ji,jj,28) = fsbri(ji,jj) 
    248             zcmo(ji,jj,29) = fseqv(ji,jj) 
     248            zcmo(ji,jj,28) = sfx_bri(ji,jj) 
     249            zcmo(ji,jj,29) = sfx_thd(ji,jj) 
    249250 
    250251            zcmo(ji,jj,30) = bv_i(ji,jj) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90

    r3517 r3524  
    88   USE par_ice        ! LIM-3 parameters 
    99   USE in_out_manager ! I/O manager 
    10    USE lib_mpp         ! MPP library 
     10   USE lib_mpp        ! MPP library 
    1111 
    1212   IMPLICIT NONE 
     
    8383   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   i0            !: fraction of radiation transmitted to the ice 
    8484   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   old_ht_i_b    !: Ice thickness at the beginnning of the time step [m] 
    85     REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::  old_ht_s_b    !: Snow thickness at the beginning of the time step [m] 
    86    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fsbri_1d      !: Salt flux due to brine drainage 
     85   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   old_ht_s_b    !: Snow thickness at the beginning of the time step [m] 
     86   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_bri_1d    !: <==> the 2D sfx_bri 
    8787   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fhbri_1d      !: Heat flux due to brine drainage 
    88    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fseqv_1d      !: Equivalent Salt flux due to ice growth/decay 
     88   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_thd_1d    !: <==> the 2D sfx_thd 
    8989   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dsm_i_fl_1d   !: Ice salinity variations due to flushing 
    9090   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dsm_i_gd_1d   !: Ice salinity variations due to gravity drainage 
     
    138138 
    139139   !!---------------------------------------------------------------------- 
    140    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
     140   !! NEMO/LIM3 3.4 , UCL - NEMO Consortium (2011) 
    141141   !! $Id$ 
    142142   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    166166         &      tatm_ice_1d(jpij) , fsup       (jpij) , focea      (jpij) ,     &    
    167167         &      i0         (jpij) , old_ht_i_b (jpij) , old_ht_s_b (jpij) ,     &   
    168          &      fsbri_1d   (jpij) , fhbri_1d   (jpij) , fseqv_1d  (jpij) ,     & 
     168         &      sfx_bri_1d (jpij) , fhbri_1d   (jpij) , sfx_thd_1d (jpij) ,     & 
    169169         &      dsm_i_fl_1d(jpij) , dsm_i_gd_1d(jpij) , dsm_i_se_1d(jpij) ,     &      
    170170         &      dsm_i_si_1d(jpij) , hicol_b    (jpij)                     , STAT=ierr(2) ) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90

    r3294 r3524  
    1616   !!   'key_ldfslp'                      Rotation of lateral mixing tensor 
    1717   !!---------------------------------------------------------------------- 
    18    !!   ldf_slp_grif : calculates the triads of isoneutral slopes (Griffies operator) 
    19    !!   ldf_slp      : calculates the slopes of neutral surface   (Madec operator) 
    20    !!   ldf_slp_mxl  : calculates the slopes at the base of the mixed layer (Madec operator) 
    21    !!   ldf_slp_init : initialization of the slopes computation 
     18   !!   ldf_slp_grif  : calculates the triads of isoneutral slopes (Griffies operator) 
     19   !!   ldf_slp       : calculates the slopes of neutral surface   (Madec operator) 
     20   !!   ldf_slp_mxl   : calculates the slopes at the base of the mixed layer (Madec operator) 
     21   !!   ldf_slp_init  : initialization of the slopes computation 
    2222   !!---------------------------------------------------------------------- 
    23    USE oce             ! ocean dynamics and tracers 
    24    USE dom_oce         ! ocean space and time domain 
    25    USE ldftra_oce      ! lateral diffusion: traceur 
    26    USE ldfdyn_oce      ! lateral diffusion: dynamics 
    27    USE phycst          ! physical constants 
    28    USE zdfmxl          ! mixed layer depth 
    29    USE eosbn2          ! equation of states 
    30    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    31    USE in_out_manager  ! I/O manager 
    32    USE prtctl          ! Print control 
    33    USE wrk_nemo        ! work arrays 
    34    USE timing          ! Timing 
     23   USE oce            ! ocean dynamics and tracers 
     24   USE dom_oce        ! ocean space and time domain 
     25   USE ldftra_oce     ! lateral diffusion: traceur 
     26   USE ldfdyn_oce     ! lateral diffusion: dynamics 
     27   USE phycst         ! physical constants 
     28   USE zdfmxl         ! mixed layer depth 
     29   USE eosbn2         ! equation of states 
     30   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     31   USE in_out_manager ! I/O manager 
     32   USE prtctl         ! Print control 
     33   USE wrk_nemo       ! work arrays 
     34   USE timing         ! Timing 
     35   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3536 
    3637   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90

    r3294 r3524  
    1212 
    1313   !!---------------------------------------------------------------------- 
    14    !!   albedo_ice  : albedo for   ice (clear and overcast skies) 
    15    !!   albedo_oce  : albedo for ocean (clear and overcast skies) 
    16    !!   albedo_init : initialisation of albedo computation 
    17    !!---------------------------------------------------------------------- 
    18    USE phycst          ! physical constants 
    19    USE in_out_manager  ! I/O manager 
    20    USE lib_mpp         ! MPP library 
    21    USE wrk_nemo        ! work arrays 
     14   !!   albedo_ice    : albedo for   ice (clear and overcast skies) 
     15   !!   albedo_oce    : albedo for ocean (clear and overcast skies) 
     16   !!   albedo_init   : initialisation of albedo computation 
     17   !!---------------------------------------------------------------------- 
     18   USE phycst         ! physical constants 
     19   USE in_out_manager ! I/O manager 
     20   USE lib_mpp        ! MPP library 
     21   USE wrk_nemo       ! work arrays 
     22   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2223 
    2324   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90

    r3517 r3524  
    1919   !!   flx_blk_declin   : solar declination 
    2020   !!---------------------------------------------------------------------- 
    21    USE oce             ! ocean dynamics and tracers 
    22    USE dom_oce         ! ocean space and time domain 
    23    USE phycst          ! physical constants 
    24    USE fldread         ! read input fields 
    25    USE sbc_oce         ! Surface boundary condition: ocean fields 
    26    USE iom             ! I/O manager library 
    27    USE in_out_manager  ! I/O manager 
    28    USE lib_mpp         ! distribued memory computing library 
    29    USE wrk_nemo        ! work arrays 
    30    USE timing          ! Timing 
    31    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     21   USE oce            ! ocean dynamics and tracers 
     22   USE dom_oce        ! ocean space and time domain 
     23   USE phycst         ! physical constants 
     24   USE fldread        ! read input fields 
     25   USE sbc_oce        ! Surface boundary condition: ocean fields 
     26   USE iom            ! I/O manager library 
     27   USE in_out_manager ! I/O manager 
     28   USE lib_mpp        ! distribued memory computing library 
     29   USE wrk_nemo       ! work arrays 
     30   USE timing         ! Timing 
     31   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     32   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3233 
    3334   USE albedo 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90

    r3402 r3524  
    55   !!                   covered area using ice-if model 
    66   !!====================================================================== 
    7    !! History :  3.0   !  2006-06  (G. Madec)  Original code 
     7   !! History :  3.0  !  2006-06  (G. Madec)  Original code 
    88   !!---------------------------------------------------------------------- 
    99 
    1010   !!---------------------------------------------------------------------- 
    11    !!   sbc_ice_if     : update sbc in ice-covered area 
     11   !!   sbc_ice_if    : update sbc in ice-covered area 
    1212   !!---------------------------------------------------------------------- 
    13    USE oce             ! ocean dynamics and tracers 
    14    USE dom_oce         ! ocean space and time domain 
    15    USE phycst          ! physical constants 
    16    USE eosbn2          ! equation of state 
    17    USE sbc_oce         ! surface boundary condition: ocean fields 
     13   USE oce            ! ocean dynamics and tracers 
     14   USE dom_oce        ! ocean space and time domain 
     15   USE phycst         ! physical constants 
     16   USE eosbn2         ! equation of state 
     17   USE sbc_oce        ! surface boundary condition: ocean fields 
    1818   USE sbccpl 
    19    USE fldread         ! read input field 
    20    USE iom             ! I/O manager library 
    21    USE in_out_manager  ! I/O manager 
    22    USE lib_mpp         ! MPP library 
     19   USE fldread        ! read input field 
     20   USE iom            ! I/O manager library 
     21   USE in_out_manager ! I/O manager 
     22   USE lib_mpp        ! MPP library 
     23   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2324 
    2425   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90

    r3402 r3524  
    99 
    1010   !!---------------------------------------------------------------------- 
    11    !!   sbc_ssr        : add to sbc a restoring term toward SST/SSS climatology 
    12    !!---------------------------------------------------------------------- 
    13    USE oce             ! ocean dynamics and tracers 
    14    USE dom_oce         ! ocean space and time domain 
    15    USE sbc_oce         ! surface boundary condition 
    16    USE phycst          ! physical constants 
    17    USE sbcrnf          ! surface boundary condition : runoffs 
    18    USE fldread         ! read input fields 
    19    USE iom             ! I/O manager 
    20    USE in_out_manager  ! I/O manager 
    21    USE lib_mpp         ! distribued memory computing library 
    22    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    23    USE timing          ! Timing 
     11   !!   sbc_ssr       : add to sbc a restoring term toward SST/SSS climatology 
     12   !!---------------------------------------------------------------------- 
     13   USE oce            ! ocean dynamics and tracers 
     14   USE dom_oce        ! ocean space and time domain 
     15   USE sbc_oce        ! surface boundary condition 
     16   USE phycst         ! physical constants 
     17   USE sbcrnf         ! surface boundary condition : runoffs 
     18   USE fldread        ! read input fields 
     19   USE iom            ! I/O manager 
     20   USE in_out_manager ! I/O manager 
     21   USE lib_mpp        ! distribued memory computing library 
     22   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     23   USE timing         ! Timing 
     24   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2425 
    2526   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90

    r3294 r3524  
    1414   !!                   and vertical advection trends using MUSCL scheme 
    1515   !!---------------------------------------------------------------------- 
    16    USE oce             ! ocean dynamics and active tracers 
    17    USE dom_oce         ! ocean space and time domain 
    18    USE trdmod_oce      ! tracers trends  
    19    USE trdtra      ! tracers trends  
    20    USE in_out_manager  ! I/O manager 
    21    USE dynspg_oce      ! choice/control of key cpp for surface pressure gradient 
    22    USE trabbl          ! tracers: bottom boundary layer 
    23    USE lib_mpp         ! distribued memory computing 
    24    USE lbclnk          ! ocean lateral boundary condition (or mpp link)  
    25    USE diaptr          ! poleward transport diagnostics 
    26    USE trc_oce         ! share passive tracers/Ocean variables 
    27    USE wrk_nemo        ! Memory Allocation 
    28    USE timing          ! Timing 
     16   USE oce            ! ocean dynamics and active tracers 
     17   USE dom_oce        ! ocean space and time domain 
     18   USE trdmod_oce     ! tracers trends  
     19   USE trdtra         ! tracers trends  
     20   USE in_out_manager ! I/O manager 
     21   USE dynspg_oce     ! choice/control of key cpp for surface pressure gradient 
     22   USE trabbl         ! tracers: bottom boundary layer 
     23   USE lib_mpp        ! distribued memory computing 
     24   USE lbclnk         ! ocean lateral boundary condition (or mpp link)  
     25   USE diaptr         ! poleward transport diagnostics 
     26   USE trc_oce        ! share passive tracers/Ocean variables 
     27   USE wrk_nemo       ! Memory Allocation 
     28   USE timing         ! Timing 
     29   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2930 
    3031   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90

    r3294 r3524  
    2525   USE wrk_nemo        ! Memory Allocation 
    2626   USE timing          ! Timing 
    27  
     27   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2828 
    2929   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90

    r3301 r3524  
    2828   USE wrk_nemo        ! Memory Allocation 
    2929   USE timing          ! Timing 
     30   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3031 
    3132   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90

    r3294 r3524  
    1717 
    1818   !!---------------------------------------------------------------------- 
    19    !!   tra_adv_tvd  : update the tracer trend with the horizontal 
    20    !!                  and vertical advection trends using a TVD scheme 
    21    !!   nonosc       : compute monotonic tracer fluxes by a nonoscillatory 
    22    !!                  algorithm  
    23    !!---------------------------------------------------------------------- 
    24    USE oce             ! ocean dynamics and active tracers 
    25    USE dom_oce         ! ocean space and time domain 
    26    USE trdmod_oce      ! tracers trends 
    27    USE trdtra          ! tracers trends 
    28    USE in_out_manager  ! I/O manager 
    29    USE dynspg_oce      ! choice/control of key cpp for surface pressure gradient 
    30    USE lib_mpp         ! MPP library 
    31    USE lbclnk          ! ocean lateral boundary condition (or mpp link)  
    32    USE diaptr          ! poleward transport diagnostics 
    33    USE trc_oce         ! share passive tracers/Ocean variables 
    34    USE wrk_nemo        ! Memory Allocation 
    35    USE timing          ! Timing 
     19   !!   tra_adv_tvd   : update the tracer trend with the 3D advection trends using a TVD scheme 
     20   !!   nonosc        : compute monotonic tracer fluxes by a non-oscillatory algorithm  
     21   !!---------------------------------------------------------------------- 
     22   USE oce            ! ocean dynamics and active tracers 
     23   USE dom_oce        ! ocean space and time domain 
     24   USE trdmod_oce     ! tracers trends 
     25   USE trdtra         ! tracers trends 
     26   USE in_out_manager ! I/O manager 
     27   USE dynspg_oce     ! choice/control of key cpp for surface pressure gradient 
     28   USE lib_mpp        ! MPP library 
     29   USE lbclnk         ! ocean lateral boundary condition (or mpp link)  
     30   USE diaptr         ! poleward transport diagnostics 
     31   USE trc_oce        ! share passive tracers/Ocean variables 
     32   USE wrk_nemo       ! Memory Allocation 
     33   USE timing         ! Timing 
     34   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3635 
    3736   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90

    r3294 r3524  
    1212   !!                 advection trends using a third order biaised scheme   
    1313   !!---------------------------------------------------------------------- 
    14    USE oce             ! ocean dynamics and active tracers 
    15    USE dom_oce         ! ocean space and time domain 
    16    USE trdmod_oce         ! ocean space and time domain 
     14   USE oce            ! ocean dynamics and active tracers 
     15   USE dom_oce        ! ocean space and time domain 
     16   USE trdmod_oce     ! ocean space and time domain 
    1717   USE trdtra 
    1818   USE lib_mpp 
    19    USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
    20    USE in_out_manager  ! I/O manager 
    21    USE diaptr          ! poleward transport diagnostics 
    22    USE dynspg_oce      ! choice/control of key cpp for surface pressure gradient 
    23    USE trc_oce         ! share passive tracers/Ocean variables 
    24    USE wrk_nemo        ! Memory Allocation 
    25    USE timing          ! Timing 
     19   USE lbclnk         ! ocean lateral boundary condition (or mpp link) 
     20   USE in_out_manager ! I/O manager 
     21   USE diaptr         ! poleward transport diagnostics 
     22   USE dynspg_oce     ! choice/control of key cpp for surface pressure gradient 
     23   USE trc_oce        ! share passive tracers/Ocean variables 
     24   USE wrk_nemo       ! Memory Allocation 
     25   USE timing         ! Timing 
     26   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2627 
    2728   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90

    r3396 r3524  
    1212   !!   'key_zdfgls'                 Generic Length Scale vertical physics 
    1313   !!---------------------------------------------------------------------- 
    14    !!   zdf_gls      : update momentum and tracer Kz from a gls scheme 
    15    !!   zdf_gls_init : initialization, namelist read, and parameters control 
    16    !!   gls_rst      : read/write gls restart in ocean restart file 
     14   !!   zdf_gls       : update momentum and tracer Kz from a gls scheme 
     15   !!   zdf_gls_init  : initialization, namelist read, and parameters control 
     16   !!   gls_rst       : read/write gls restart in ocean restart file 
    1717   !!---------------------------------------------------------------------- 
    1818   USE oce            ! ocean dynamics and active tracers  
     
    3131   USE iom            ! I/O manager library 
    3232   USE timing         ! Timing 
     33   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3334 
    3435   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90

    r3402 r3524  
    1515   !!   'key_zdfkpp'                                             KPP scheme 
    1616   !!---------------------------------------------------------------------- 
    17    !!   zdf_kpp      : update momentum and tracer Kz from a kpp scheme 
    18    !!   zdf_kpp_init : initialization, namelist read, and parameters control 
    19    !!   tra_kpp      : compute and add to the T & S trend the non-local flux 
    20    !!   trc_kpp      : compute and add to the passive tracer trend the non-local flux (lk_top=T) 
     17   !!   zdf_kpp       : update momentum and tracer Kz from a kpp scheme 
     18   !!   zdf_kpp_init  : initialization, namelist read, and parameters control 
     19   !!   tra_kpp       : compute and add to the T & S trend the non-local flux 
     20   !!   trc_kpp       : compute and add to the passive tracer trend the non-local flux (lk_top=T) 
    2121   !!---------------------------------------------------------------------- 
    22    USE oce             ! ocean dynamics and active tracers  
    23    USE dom_oce         ! ocean space and time domain 
    24    USE zdf_oce         ! ocean vertical physics 
    25    USE sbc_oce         ! surface boundary condition: ocean 
    26    USE phycst          ! physical constants 
    27    USE eosbn2          ! equation of state 
    28    USE zdfddm          ! double diffusion mixing 
    29    USE in_out_manager  ! I/O manager 
    30    USE lib_mpp         ! MPP library 
    31    USE wrk_nemo        ! work arrays 
    32    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    33    USE prtctl          ! Print control 
    34    USE trdmod_oce      ! ocean trends definition 
    35    USE trdtra          ! tracers trends 
    36    USE timing          ! Timing 
     22   USE oce            ! ocean dynamics and active tracers  
     23   USE dom_oce        ! ocean space and time domain 
     24   USE zdf_oce        ! ocean vertical physics 
     25   USE sbc_oce        ! surface boundary condition: ocean 
     26   USE phycst         ! physical constants 
     27   USE eosbn2         ! equation of state 
     28   USE zdfddm         ! double diffusion mixing 
     29   USE in_out_manager ! I/O manager 
     30   USE lib_mpp        ! MPP library 
     31   USE wrk_nemo       ! work arrays 
     32   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     33   USE prtctl         ! Print control 
     34   USE trdmod_oce     ! ocean trends definition 
     35   USE trdtra         ! tracers trends 
     36   USE timing         ! Timing 
     37   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3738 
    3839   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90

    r3294 r3524  
    1717   !!   'key_zdfric'                                             Kz = f(Ri) 
    1818   !!---------------------------------------------------------------------- 
    19    !!   zdf_ric      : update momentum and tracer Kz from the Richardson 
     19   !!   zdf_ric       : update momentum and tracer Kz from the Richardson 
    2020   !!                  number computation 
    21    !!   zdf_ric_init : initialization, namelist read, & parameters control 
    22    !!---------------------------------------------------------------------- 
    23    USE oce                   ! ocean dynamics and tracers variables 
    24    USE dom_oce               ! ocean space and time domain variables 
    25    USE zdf_oce               ! ocean vertical physics 
    26    USE in_out_manager        ! I/O manager 
    27    USE lbclnk                ! ocean lateral boundary condition (or mpp link) 
    28    USE lib_mpp               ! MPP library 
    29    USE wrk_nemo              ! work arrays 
    30    USE timing                ! Timing 
     21   !!   zdf_ric_init  : initialization, namelist read, & parameters control 
     22   !!---------------------------------------------------------------------- 
     23   USE oce            ! ocean dynamics and tracers variables 
     24   USE dom_oce        ! ocean space and time domain variables 
     25   USE zdf_oce        ! ocean vertical physics 
     26   USE in_out_manager ! I/O manager 
     27   USE lbclnk         ! ocean lateral boundary condition (or mpp link) 
     28   USE lib_mpp        ! MPP library 
     29   USE wrk_nemo       ! work arrays 
     30   USE timing         ! Timing 
     31   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3132 
    3233   USE eosbn2, ONLY : nn_eos 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r3294 r3524  
    3131   !!   'key_zdftke'                                   TKE vertical physics 
    3232   !!---------------------------------------------------------------------- 
    33    !!   zdf_tke      : update momentum and tracer Kz from a tke scheme 
    34    !!   tke_tke      : tke time stepping: update tke at now time step (en) 
    35    !!   tke_avn      : compute mixing length scale and deduce avm and avt 
    36    !!   zdf_tke_init : initialization, namelist read, and parameters control 
    37    !!   tke_rst      : read/write tke restart in ocean restart file 
     33   !!   zdf_tke       : update momentum and tracer Kz from a tke scheme 
     34   !!   tke_tke       : tke time stepping: update tke at now time step (en) 
     35   !!   tke_avn       : compute mixing length scale and deduce avm and avt 
     36   !!   zdf_tke_init  : initialization, namelist read, and parameters control 
     37   !!   tke_rst       : read/write tke restart in ocean restart file 
    3838   !!---------------------------------------------------------------------- 
    3939   USE oce            ! ocean: dynamics and active tracers variables 
     
    5252   USE wrk_nemo       ! work arrays 
    5353   USE timing         ! Timing 
     54   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    5455 
    5556   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90

    r3294 r3524  
    1212   !!   'key_zdftmx'                                  Tidal vertical mixing 
    1313   !!---------------------------------------------------------------------- 
    14    !!   zdf_tmx      : global     momentum & tracer Kz with tidal induced Kz 
    15    !!   tmx_itf      : Indonesian momentum & tracer Kz with tidal induced Kz  
    16    !!---------------------------------------------------------------------- 
    17    USE oce             ! ocean dynamics and tracers variables 
    18    USE dom_oce         ! ocean space and time domain variables 
    19    USE zdf_oce         ! ocean vertical physics variables 
    20    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    21    USE eosbn2          ! ocean equation of state 
    22    USE phycst          ! physical constants 
    23    USE prtctl          ! Print control 
    24    USE in_out_manager  ! I/O manager 
    25    USE iom             ! I/O Manager 
    26    USE lib_mpp         ! MPP library 
    27    USE wrk_nemo        ! work arrays 
    28    USE timing          ! Timing 
     14   !!   zdf_tmx       : global     momentum & tracer Kz with tidal induced Kz 
     15   !!   tmx_itf       : Indonesian momentum & tracer Kz with tidal induced Kz  
     16   !!---------------------------------------------------------------------- 
     17   USE oce            ! ocean dynamics and tracers variables 
     18   USE dom_oce        ! ocean space and time domain variables 
     19   USE zdf_oce        ! ocean vertical physics variables 
     20   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     21   USE eosbn2         ! ocean equation of state 
     22   USE phycst         ! physical constants 
     23   USE prtctl         ! Print control 
     24   USE in_out_manager ! I/O manager 
     25   USE iom            ! I/O Manager 
     26   USE lib_mpp        ! MPP library 
     27   USE wrk_nemo       ! work arrays 
     28   USE timing         ! Timing 
     29   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2930 
    3031   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zrem.F90

    r3295 r3524  
    44   !! TOP :   PISCES Compute remineralization/scavenging of organic compounds 
    55   !!====================================================================== 
    6    !! History :   1.0  !  2004     (O. Aumont) Original code 
    7    !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
    8    !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Quota model for iron 
     6   !! History :  1.0  !  2004     (O. Aumont) Original code 
     7   !!            2.0  !  2007-12  (C. Ethe, G. Madec)  F90 
     8   !!            3.4  !  2011-06  (O. Aumont, C. Ethe) Quota model for iron 
    99   !!---------------------------------------------------------------------- 
    1010#if defined key_pisces 
     
    1717   !!   p4z_rem_alloc :  Allocate remineralisation variables 
    1818   !!---------------------------------------------------------------------- 
    19    USE oce_trc         !  shared variables between ocean and passive tracers 
    20    USE trc             !  passive tracers common variables  
    21    USE sms_pisces      !  PISCES Source Minus Sink variables 
    22    USE p4zopt          !  optical model 
    23    USE p4zche          !  chemical model 
    24    USE p4zprod         !  Growth rate of the 2 phyto groups 
    25    USE p4zmeso         !  Sources and sinks of mesozooplankton 
    26    USE p4zint          !  interpolation and computation of various fields 
    27    USE prtctl_trc      !  print control for debugging 
     19   USE oce_trc        !  shared variables between ocean and passive tracers 
     20   USE trc            !  passive tracers common variables  
     21   USE sms_pisces     !  PISCES Source Minus Sink variables 
     22   USE p4zopt         !  optical model 
     23   USE p4zche         !  chemical model 
     24   USE p4zprod        !  Growth rate of the 2 phyto groups 
     25   USE p4zmeso        !  Sources and sinks of mesozooplankton 
     26   USE p4zint         !  interpolation and computation of various fields 
     27   USE prtctl_trc     !  print control for debugging 
     28   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2829 
    2930   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90

    r3295 r3524  
    1919   USE prtctl_trc      !  print control for debugging 
    2020   USE iom             !  I/O manager 
     21   USE lib_fortran     ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2122 
    2223   IMPLICIT NONE 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/TOP_SRC/SED/sedchem.F90

    r2761 r3524  
    11MODULE sedchem 
    2  
     2   ! 
    33#if defined key_sed  
    44   !!====================================================================== 
     
    66   !! sediment :   Variable for chemistry of the CO2 cycle 
    77   !!====================================================================== 
    8    !!   modules used 
    9    USE sed     ! sediment global variable 
     8   USE sed            ! sediment global variable 
    109   USE sedarr 
    11  
    12    !! * Accessibility 
     10   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
     11 
    1312   PUBLIC sed_chem    
    1413 
Note: See TracChangeset for help on using the changeset viewer.