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

Changeset 7280


Ignore:
Timestamp:
2016-11-21T11:40:00+01:00 (7 years ago)
Author:
flavoni
Message:

merge CNRS2016 with aerobulk branch

Location:
branches/2016/dev_CNRS_2016/NEMOGCM
Files:
3 deleted
61 edited
5 copied

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg

    r7278 r7280  
    4747                           !     (also = the frequency of sea-ice model call) 
    4848   ln_flx      = .true.    !  flux formulation                          (T => fill namsbc_flx ) 
    49    ln_blk_core = .false.   !  CORE bulk formulation                     (T => fill namsbc_core) 
    50    nn_ice      = 0         !  =0 no ice boundary condition   , 
     49   ln_blk      = .false.   !  Bulk formulation                          (T => fill namsbc_blk ) 
     50   nn_ice      = 0         !  =0 no ice boundary condition 
    5151   ln_ssr      = .false.   !  Sea Surface Restoring on T and/or S       (T => fill namsbc_ssr) 
    5252   nn_fwb      = 0         !  FreshWater Budget: =0 unchecked 
    53    ln_apr_dyn  = .false.    !  Patm gradient added in ocean & ice Eqs.   (T => fill namsbc_apr ) 
     53   ln_apr_dyn  = .false.   !  Patm gradient added in ocean & ice Eqs.   (T => fill namsbc_apr ) 
    5454   ln_traqsr   = .false.   !  Light penetration (T) or not (F) 
    55  
    5655/ 
    5756!----------------------------------------------------------------------- 
     
    6059!          !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    6160!          !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
    62    sn_utau     = 'amm12_utau'     ,          1        ,  'utau'      , .false.      , .false. , 'daily'   ,  ''      ,  ''  , '' 
    63    sn_vtau     = 'amm12_vtau'     ,          1        ,  'vtau'      , .false.      , .false. , 'daily'   ,  ''      ,  ''  , '' 
    64    sn_qtot     = 'amm12_flx'      ,          3        ,  'sonsfldo'  ,  .true.      , .false. , 'daily'   ,  ''      ,  ''  , '' 
    65    sn_qsr      = 'amm12_flx'      ,          3        ,  'soshfldo'  ,  .true.      , .false. , 'daily'   ,  ''      ,  ''  , '' 
    66    sn_emp      = 'amm12_flx'      ,          3        ,  'sowafldo'  ,  .true.      , .false. , 'daily'   ,  ''      ,  ''  , '' 
    67    cn_dir      = './fluxes/'        !  root directory for the location of the flux files 
    68 / 
    69 !----------------------------------------------------------------------- 
    70 &namsbc_clio   !   namsbc_clio  CLIO bulk formulae 
    71 !----------------------------------------------------------------------- 
    72 / 
    73 !----------------------------------------------------------------------- 
    74 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    75 !----------------------------------------------------------------------- 
    76 / 
    77 !----------------------------------------------------------------------- 
    78 &namsbc_mfs   !   namsbc_mfs  MFS bulk formulae 
    79 !----------------------------------------------------------------------- 
    80 / 
    81 !----------------------------------------------------------------------- 
    82 &namsbc_cpl    !   coupled ocean/atmosphere model                       ("key_oasis3") 
    83 !----------------------------------------------------------------------- 
     61   sn_utau = 'amm12_utau',          1        , 'utau'    ,  .false.     , .false., 'daily'   ,  ''      ,  ''      , '' 
     62   sn_vtau = 'amm12_vtau',          1        , 'vtau'    ,  .false.     , .false., 'daily'   ,  ''      ,  ''      , '' 
     63   sn_qtot = 'amm12_flx' ,          3        , 'sonsfldo',  .true.      , .false., 'daily'   ,  ''      ,  ''      , '' 
     64   sn_qsr  = 'amm12_flx' ,          3        , 'soshfldo',  .true.      , .false., 'daily'   ,  ''      ,  ''      , '' 
     65   sn_emp  = 'amm12_flx' ,          3        , 'sowafldo',  .true.      , .false., 'daily'   ,  ''      ,  ''      , '' 
     66   cn_dir  = './fluxes/'        !  root directory for the location of the flux files 
    8467/ 
    8568!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg

    r7278 r7280  
    9696/ 
    9797!----------------------------------------------------------------------- 
    98 &namsbc_clio   !   namsbc_clio  CLIO bulk formulae 
    99 !----------------------------------------------------------------------- 
    100 / 
    101 !----------------------------------------------------------------------- 
    102 &namsbc_core   !   namsbc_core  CORE bulk formulae 
     98&namsbc_blk   !   namsbc_blk  generic Bulk formula                      (ln_blk = T) 
    10399!----------------------------------------------------------------------- 
    104100!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     
    112108   sn_prec     = 'forcing_PAPASTATION_1h' ,         1         , 'prec'    ,   .false.    , .false. , 'yearly' , '' , '', '' 
    113109   sn_snow     = 'forcing_PAPASTATION_1h' ,         1         , 'snow'    ,   .false.    , .false. , 'yearly' , '' , '', '' 
    114    rn_zqt      =  2.    !  air temperature and humidity referenced at 2m (T) instead 10m (F) 
    115 / 
    116 !----------------------------------------------------------------------- 
    117 &namsbc_mfs   !   namsbc_mfs  MFS bulk formulae 
    118 !----------------------------------------------------------------------- 
     110   sn_slp      = 'slp.15JUNE2009_fill'        ,         6         , 'SLP',        .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
     111 
     112   nn_bulk_algo = 1        !  Bulk algorithm to use to compute bulk transfer coefficients Cd, Ce and Ch 
     113                           !  1 => "NCAR" algorithm        (Large and Yeager, 2008) 
     114                           !  2 => "COARE 3.0" algorithm   (Fairall et al 2003) 
     115                           !  3 => "ECMWF" algorithm       (IFS cycle 31) 
     116                           !  4 => "COARE 3.5" algorithm   (Edson et al 2013) 
     117 
     118   rn_zqt      =  2.       !  Air temperature and humidity reference height (m) 
    119119/ 
    120120!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/GYRE/EXP00/namelist_cfg

    r7278 r7280  
    5757   !                       !     (also = the frequency of sea-ice model call) 
    5858   ln_usr      = .true.    !  user defined formulation                  (T => check usrdef_sbc) 
     59   ln_blk      = .false.   !  CORE bulk formulation                     (T => fill namsbc_core) 
    5960   nn_ice      = 0         !  =0 no ice boundary condition   , 
    6061   ln_rnf      = .false.   !  runoffs                                   (T => fill namsbc_rnf) 
     
    6768   nn_tau000   =   100     !  gently increase the stress over the first ntau_rst time-steps 
    6869   rn_utau0    =   0.1e0   !  uniform value for the i-stress 
    69 / 
    70 !----------------------------------------------------------------------- 
    71 &namsbc_flx    !   surface boundary condition : flux formulation 
    72 !----------------------------------------------------------------------- 
    73 / 
    74 !----------------------------------------------------------------------- 
    75 &namsbc_clio   !   namsbc_clio  CLIO bulk formulae 
    76 !----------------------------------------------------------------------- 
    77 / 
    78 !----------------------------------------------------------------------- 
    79 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    80 !----------------------------------------------------------------------- 
    81 / 
    82 !----------------------------------------------------------------------- 
    83 &namsbc_mfs   !   namsbc_mfs  MFS bulk formulae 
    84 !----------------------------------------------------------------------- 
    85 / 
    86 !----------------------------------------------------------------------- 
    87 &namsbc_cpl    !   coupled ocean/atmosphere model                       ("key_oasis3") 
    88 !----------------------------------------------------------------------- 
    8970/ 
    9071!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg

    r7278 r7280  
    5555                           !     (also = the frequency of sea-ice model call) 
    5656   ln_usr      = .true.    !  user defined formulation                  (T => check usrdef_sbc) 
     57   ln_blk      = .false.   !  Bulk formulation                          (T => fill namsbc_blk ) 
    5758   nn_ice      = 0         !  =0 no ice boundary condition   , 
    5859   ln_rnf      = .false.   !  runoffs                                   (T => fill namsbc_rnf) 
    5960   ln_ssr      = .false.   !  Sea Surface Restoring on T and/or S       (T => fill namsbc_ssr) 
    6061   nn_fwb      = 0         !  FreshWater Budget: =0 unchecked 
    61 / 
    62 !----------------------------------------------------------------------- 
    63 &namsbc_flx    !   surface boundary condition : flux formulation 
    64 !----------------------------------------------------------------------- 
    65 / 
    66 !----------------------------------------------------------------------- 
    67 &namsbc_clio   !   namsbc_clio  CLIO bulk formulae 
    68 !----------------------------------------------------------------------- 
    69 / 
    70 !----------------------------------------------------------------------- 
    71 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    72 !----------------------------------------------------------------------- 
    73 / 
    74 !----------------------------------------------------------------------- 
    75 &namsbc_mfs   !   namsbc_mfs  MFS bulk formulae 
    76 !----------------------------------------------------------------------- 
    77 / 
    78 !----------------------------------------------------------------------- 
    79 &namsbc_cpl    !   coupled ocean/atmosphere model                       ("key_oasis3") 
    80 !----------------------------------------------------------------------- 
    8162/ 
    8263!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg

    r7278 r7280  
    4646                           !     (also = the frequency of sea-ice model call) 
    4747   ln_usr      = .true.    !  user defined formulation                  (T => check usrdef_sbc) 
     48   ln_blk      = .false.   !  Bulk formulation                          (T => fill namsbc_blk ) 
    4849   nn_ice      = 0         !  =0 no ice boundary condition   , 
    4950   ln_rnf      = .false.   !  runoffs                                   (T => fill namsbc_rnf) 
     
    5758   ln_qsr_2bd  = .true.    !  2 bands              light penetration 
    5859   nn_chldta   =      0    !  RGB : Chl data (=1) or cst value (=0) 
    59 / 
    60  
    61 !----------------------------------------------------------------------- 
    62 &namberg       !   iceberg parameters 
    63 !----------------------------------------------------------------------- 
    6460/ 
    6561!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/namelist_cfg

    r7278 r7280  
    4646                           !     (also = the frequency of sea-ice model call) 
    4747   ln_usr      = .true.    !  user defined formulation                  (T => check usrdef_sbc) 
     48   ln_blk      = .false.   !  Bulk formulation                          (T => fill namsbc_blk ) 
    4849   nn_ice      = 0         !  =0 no ice boundary condition   , 
    4950   ln_rnf      = .false.   !  runoffs                                   (T => fill namsbc_rnf) 
     
    5556!----------------------------------------------------------------------- 
    5657   nn_tau000   =   100     !  gently increase the stress over the first ntau_rst time-steps 
    57    rn_utau0    =   0.1e0   !  uniform value for the i-stress 
    58 / 
    59 !----------------------------------------------------------------------- 
    60 &namsbc_flx    !   surface boundary condition : flux formulation 
    61 !----------------------------------------------------------------------- 
    62 / 
    63 !----------------------------------------------------------------------- 
    64 &namsbc_clio   !   namsbc_clio  CLIO bulk formulae 
    65 !----------------------------------------------------------------------- 
    66 / 
    67 !----------------------------------------------------------------------- 
    68 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    69 !----------------------------------------------------------------------- 
    70 / 
    71 !----------------------------------------------------------------------- 
    72 &namsbc_mfs   !   namsbc_mfs  MFS bulk formulae 
    73 !----------------------------------------------------------------------- 
    74 / 
    75 !----------------------------------------------------------------------- 
    76 &namsbc_cpl    !   coupled ocean/atmosphere model                       ("key_oasis3") 
    77 !----------------------------------------------------------------------- 
     58   rn_utau0    =   0.1     !  uniform value for the i-stress 
    7859/ 
    7960!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist_cfg

    r7278 r7280  
    5656/ 
    5757!----------------------------------------------------------------------- 
    58 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    59 !----------------------------------------------------------------------- 
    60 !              !  file name                    ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                               ! rotation ! land/sea mask ! 
    61 !              !                               !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                              ! pairing  ! filename      ! 
    62    sn_wndi     = 'u_10.15JUNE2009_fill'        ,         6         , 'U_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'      , 'Uwnd'   , '' 
    63    sn_wndj     = 'v_10.15JUNE2009_fill'        ,         6         , 'V_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'      , 'Vwnd'   , '' 
    64    sn_qsr      = 'ncar_rad.15JUNE2009_fill'    ,        24         , 'SWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    65    sn_qlw      = 'ncar_rad.15JUNE2009_fill'    ,        24         , 'LWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    66    sn_tair     = 't_10.15JUNE2009_fill'        ,         6         , 'T_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    67    sn_humi     = 'q_10.15JUNE2009_fill'        ,         6         , 'Q_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    68    sn_prec     = 'ncar_precip.15JUNE2009_fill' ,        -1         , 'PRC_MOD1',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    69    sn_snow     = 'ncar_precip.15JUNE2009_fill' ,        -1         , 'SNOW'    ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    70    sn_tdif     = 'taudif_core'                 ,        24         , 'taudif'  ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    71  
    72    cn_dir      = './'      !  root directory for the location of the bulk files 
    73    ln_taudif   = .false.   !  HF tau contribution: use "mean of stress module - module of the mean stress" data 
    74    rn_zqt      = 10.        !  Air temperature and humidity reference height (m) 
    75    rn_zu       = 10.        !  Wind vector reference height (m) 
    76    rn_pfac     = 1.        !  multiplicative factor for precipitation (total & snow) 
    77    rn_efac     = 1.        !  multiplicative factor for evaporation (0. or 1.) 
    78    rn_vfac     = 0.        !  multiplicative factor for ocean/ice velocity 
    79                            !  in the calculation of the wind stress (0.=absolute winds or 1.=relative winds) 
     58&namsbc_blk   !   namsbc_blk  generic Bulk formula                      (ln_blk = T) 
     59!----------------------------------------------------------------------- 
     60!              !  file name                   ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                              ! rotation ! land/sea mask ! 
     61!              !                              !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                             ! pairing  ! filename      ! 
     62   sn_wndi     = 'u_10.15JUNE2009_fill'       ,         6         , 'U_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'     , 'Uwnd'   , '' 
     63   sn_wndj     = 'v_10.15JUNE2009_fill'       ,         6         , 'V_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'     , 'Vwnd'   , '' 
     64   sn_qsr      = 'ncar_rad.15JUNE2009_fill'   ,        24         , 'SWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     65   sn_qlw      = 'ncar_rad.15JUNE2009_fill'   ,        24         , 'LWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     66   sn_tair     = 't_10.15JUNE2009_fill'       ,         6         , 'T_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     67   sn_humi     = 'q_10.15JUNE2009_fill'       ,         6         , 'Q_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     68   sn_prec     = 'ncar_precip.15JUNE2009_fill',        -1         , 'PRC_MOD1',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     69   sn_snow     = 'ncar_precip.15JUNE2009_fill',        -1         , 'SNOW'    ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     70   sn_slp      = 'slp.15JUNE2009_fill'        ,         6         , 'SLP'     ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     71   sn_tdif     = 'taudif_core'                ,        24         , 'taudif'  ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     72   ! 
     73   ln_NCAR     = .true.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
     74   ! 
    8075/ 
    8176!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist_cfg

    r7278 r7280  
    4343&namsbc        !   Surface Boundary Condition (surface module) 
    4444!----------------------------------------------------------------------- 
    45    ln_blk_core = .true.    !  CORE bulk formulation                     (T => fill namsbc_core) 
    46 / 
    47 !----------------------------------------------------------------------- 
    48 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    49 !----------------------------------------------------------------------- 
     45   ln_blk      = .true.    !  Bulk formulation                          (T => fill namsbc_blk ) 
     46/ 
     47!----------------------------------------------------------------------- 
     48&namsbc_blk   !   namsbc_blk  generic Bulk formula                      (ln_blk = T) 
     49!----------------------------------------------------------------------- 
     50   ln_NCAR     = .true.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
    5051/ 
    5152!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/1_namelist_cfg

    r7277 r7280  
    3535!----------------------------------------------------------------------- 
    3636&namcrs        !   Grid coarsening for dynamics output and/or 
    37                !   passive tracer coarsened online simulations 
     37!              !   passive tracer coarsened online simulations 
    3838!----------------------------------------------------------------------- 
    3939/ 
     
    5757/ 
    5858!----------------------------------------------------------------------- 
    59 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    60 !----------------------------------------------------------------------- 
    61 !              !  file name                    ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                               ! rotation ! land/sea mask ! 
    62 !              !                               !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                              ! pairing  ! filename      ! 
    63    sn_wndi     = 'u_10.15JUNE2009_fill'        ,         6         , 'U_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'      , 'Uwnd'   , '' 
    64    sn_wndj     = 'v_10.15JUNE2009_fill'        ,         6         , 'V_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'      , 'Vwnd'   , '' 
    65    sn_qsr      = 'ncar_rad.15JUNE2009_fill'    ,        24         , 'SWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    66    sn_qlw      = 'ncar_rad.15JUNE2009_fill'    ,        24         , 'LWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    67    sn_tair     = 't_10.15JUNE2009_fill'        ,         6         , 'T_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    68    sn_humi     = 'q_10.15JUNE2009_fill'        ,         6         , 'Q_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    69    sn_prec     = 'ncar_precip.15JUNE2009_fill' ,        -1         , 'PRC_MOD1',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    70    sn_snow     = 'ncar_precip.15JUNE2009_fill' ,        -1         , 'SNOW'    ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    71    sn_tdif     = 'taudif_core'                 ,        24         , 'taudif'  ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    72  
    73    cn_dir      = './'      !  root directory for the location of the bulk files 
    74    ln_taudif   = .false.   !  HF tau contribution: use "mean of stress module - module of the mean stress" data 
    75    rn_zqt      = 10.        !  Air temperature and humidity reference height (m) 
    76    rn_zu       = 10.        !  Wind vector reference height (m) 
    77    rn_pfac     = 1.        !  multiplicative factor for precipitation (total & snow) 
    78    rn_efac     = 1.        !  multiplicative factor for evaporation (0. or 1.) 
    79    rn_vfac     = 0.        !  multiplicative factor for ocean/ice velocity 
    80                            !  in the calculation of the wind stress (0.=absolute winds or 1.=relative winds) 
     59&namsbc_blk   !   namsbc_blk  generic Bulk formula                      (ln_blk = T) 
     60!----------------------------------------------------------------------- 
     61!              !  file name                   ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                              ! rotation ! land/sea mask ! 
     62!              !                              !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                             ! pairing  ! filename      ! 
     63   sn_wndi     = 'u_10.15JUNE2009_fill'       ,         6         , 'U_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'     , 'Uwnd'   , '' 
     64   sn_wndj     = 'v_10.15JUNE2009_fill'       ,         6         , 'V_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'     , 'Vwnd'   , '' 
     65   sn_qsr      = 'ncar_rad.15JUNE2009_fill'   ,        24         , 'SWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     66   sn_qlw      = 'ncar_rad.15JUNE2009_fill'   ,        24         , 'LWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     67   sn_tair     = 't_10.15JUNE2009_fill'       ,         6         , 'T_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     68   sn_humi     = 'q_10.15JUNE2009_fill'       ,         6         , 'Q_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     69   sn_prec     = 'ncar_precip.15JUNE2009_fill',        -1         , 'PRC_MOD1',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     70   sn_snow     = 'ncar_precip.15JUNE2009_fill',        -1         , 'SNOW'    ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     71   sn_slp      = 'slp.15JUNE2009_fill'        ,         6         , 'SLP'     ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     72   sn_tdif     = 'taudif_core'                ,        24         , 'taudif'  ,   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'    , ''       , '' 
     73   ! 
     74   !                    !  bulk algorithm : 
     75   ln_NCAR     = .true.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
     76   ! 
    8177/ 
    8278!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_cfg

    r7278 r7280  
    4343&namsbc        !   Surface Boundary Condition (surface module) 
    4444!----------------------------------------------------------------------- 
    45    ln_blk_core = .true.    !  CORE bulk formulation                     (T => fill namsbc_core) 
    46 / 
    47 !----------------------------------------------------------------------- 
    48 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    49 !----------------------------------------------------------------------- 
     45   ln_blk      = .true.    !  Bulk formulation                          (T => fill namsbc_blk ) 
     46/ 
     47!----------------------------------------------------------------------- 
     48&namsbc_blk   !   namsbc_blk  Bulk formulae 
     49!----------------------------------------------------------------------- 
     50   ln_NCAR     = .true.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
    5051/ 
    5152!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/1_namelist_cfg

    r7277 r7280  
    116116   nn_fsbc     = 5         !  frequency of surface boundary condition computation  
    117117                           !     (also = the frequency of sea-ice model call) 
    118    ln_blk_core = .true.    !  CORE bulk formulation                     (T => fill namsbc_core)  
     118   ln_flx      = .false.   !  flux formulation                          (T => fill namsbc_flx ) 
    119119   nn_ice      = 0         !  =0 no ice boundary condition   , 
    120120                           !  =1 use observed ice-cover      , 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_cfg

    r7278 r7280  
    7070&namsbc        !   Surface Boundary Condition (surface module) 
    7171!----------------------------------------------------------------------- 
    72    ln_blk_core = .true.    !  CORE bulk formulation                     (T => fill namsbc_core) 
    73 / 
    74 !----------------------------------------------------------------------- 
    75 &namsbc_flx    !   surface boundary condition : flux formulation 
    76 !----------------------------------------------------------------------- 
    77 /       
    78 !----------------------------------------------------------------------- 
    79 &namsbc_clio   !   namsbc_clio  CLIO bulk formulae 
    80 !----------------------------------------------------------------------- 
    81 / 
    82 !----------------------------------------------------------------------- 
    83 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    84 !----------------------------------------------------------------------- 
    85 / 
    86 !----------------------------------------------------------------------- 
    87 &namsbc_mfs   !   namsbc_mfs  MFS bulk formulae 
    88 !----------------------------------------------------------------------- 
    89 / 
    90 !----------------------------------------------------------------------- 
    91 &namsbc_cpl    !   coupled ocean/atmosphere model                       ("key_oasis3") 
    92 !----------------------------------------------------------------------- 
     72   ln_blk      = .true.    !  Bulk formulation                          (T => fill namsbc_blk ) 
     73/ 
     74!----------------------------------------------------------------------- 
     75&namsbc_blk   !   namsbc_blk  Bulk formulae 
     76!----------------------------------------------------------------------- 
     77   ln_NCAR     = .true.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
    9378/ 
    9479!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_cfg

    r7278 r7280  
    4343&namsbc        !   Surface Boundary Condition (surface module) 
    4444!----------------------------------------------------------------------- 
    45    ln_blk_core = .true.    !  CORE bulk formulation                     (T => fill namsbc_core) 
    46 / 
    47 !----------------------------------------------------------------------- 
    48 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    49 !----------------------------------------------------------------------- 
     45   ln_blk      = .true.    !  Bulk formulation                          (T => fill namsbc_blk ) 
     46/ 
     47!----------------------------------------------------------------------- 
     48&namsbc_blk   !   namsbc_blk  Bulk formulae 
     49!----------------------------------------------------------------------- 
     50   ln_NCAR     = .true.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
    5051/ 
    5152!----------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_cfg

    r7278 r7280  
    4848&namsbc        !   Surface Boundary Condition (surface module) 
    4949!----------------------------------------------------------------------- 
     50   ln_blk      = .true.    !  Bulk formulation                          (T => fill namsbc_blk ) 
    5051   nn_fsbc     = 1         !  frequency of surface boundary condition computation  
    5152   ln_blk_core = .true.    !  CORE bulk formulation                     (T => fill namsbc_core) 
    5253   ln_rnf      = .false.   !  runoffs 
    5354   ln_traqsr   = .false.   !  Light penetration (T) or not (F) 
    54  
     55/ 
     56!----------------------------------------------------------------------- 
     57&namsbc_blk   !   namsbc_blk  Bulk formulae 
     58!----------------------------------------------------------------------- 
     59   ln_NCAR     = .true.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
     60/ 
    5561!----------------------------------------------------------------------- 
    5662&namtra_qsr    !   penetrative solar radiation 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/ORCA2_SAS_LIM/EXP00/namelist_cfg

    r7278 r7280  
    4343&namsbc        !   Surface Boundary Condition (surface module) 
    4444!----------------------------------------------------------------------- 
    45    ln_blk_core = .true.    !  CORE bulk formulation                     (T => fill namsbc_core) 
    46 / 
    47 !----------------------------------------------------------------------- 
    48 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    49 !----------------------------------------------------------------------- 
    50 / 
    51 !----------------------------------------------------------------------- 
    52 &namtra_qsr    !   penetrative solar radiation 
    53 !----------------------------------------------------------------------- 
    54 / 
     45   ln_blk      = .true.    !  Bulk formulation                          (T => fill namsbc_blk ) 
     46/ 
     47!----------------------------------------------------------------------- 
     48&namsbc_blk   !   namsbc_blk  Bulk formulae 
     49!----------------------------------------------------------------------- 
     50   ln_NCAR     = .true.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
     51/ 
     52!----------------------------------------------------------------------- 
     53&namsbc_sas    !   Stand-Alone Surface module 
     54!----------------------------------------------------------------------- 
     55/       
    5556!----------------------------------------------------------------------- 
    5657&namsbc_rnf    !   runoffs namelist surface boundary condition 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/SHARED/namelist_ref

    r7278 r7280  
    44!! NEMO/OPA  :  1 - run manager      (namrun) 
    55!! namelists    2 - Domain           (namcfg, namzgr, namdom, namtsd, namcrs, namc1d, namc1d_uvd) 
    6 !!              3 - Surface boundary (namsbc, namsbc_flx, namsbc_clio, namsbc_core, namsbc_sas 
     6!!              3 - Surface boundary (namsbc, namsbc_flx, namsbc_blk, namsbc_sas) 
    77!!                                    namsbc_cpl, namtra_qsr, namsbc_rnf, 
    88!!                                    namsbc_apr, namsbc_ssr, namsbc_alb, namsbc_wave) 
     
    162162!!   namsbc          surface boundary condition 
    163163!!   namsbc_flx      flux               formulation                     (ln_flx     =T) 
    164 !!   namsbc_clio     CLIO bulk formulae formulation                     (ln_blk_clio=T) 
    165 !!   namsbc_core     CORE bulk formulae formulation                     (ln_blk_core=T) 
    166 !!   namsbc_mfs      MFS  bulk formulae formulation                     (ln_blk_mfs =T) 
     164!!   namsbc_blk      Bulk formulae formulation                          (ln_blk     =T) 
    167165!!   namsbc_cpl      CouPLed            formulation                     ("key_oasis3" ) 
    168 !!   namsbc_sas      StAndalone Surface module 
     166!!   namsbc_sas      Stand-Alone Surface module 
    169167!!   namtra_qsr      penetrative solar radiation                        (ln_traqsr  =T) 
    170168!!   namsbc_rnf      river runoffs                                      (ln_rnf     =T) 
     
    186184   ln_usr      = .false.   !  user defined formulation                  (T => check usrdef_sbc) 
    187185   ln_flx      = .false.   !  flux formulation                          (T => fill namsbc_flx ) 
    188    ln_blk_clio = .false.   !  CLIO bulk formulation                     (T => fill namsbc_clio) 
    189    ln_blk_core = .false.    !  CORE bulk formulation                     (T => fill namsbc_core) 
    190    ln_blk_mfs  = .false.   !  MFS bulk formulation                      (T => fill namsbc_mfs ) 
     186   ln_blk      = .true.    !  Bulk formulation                          (T => fill namsbc_blk ) 
    191187                     ! Type of coupling (Ocean/Ice/Atmosphere) : 
    192188   ln_cpl      = .false.   !  atmosphere coupled   formulation          ( requires key_oasis3 ) 
     
    204200   nn_ice      = 2         !  =0 no ice boundary condition   , 
    205201                           !  =1 use observed ice-cover      , 
    206                            !  =2 ice-model used                         ("key_lim3", "key_lim2", "key_cice") 
     202                           !  =2 to 4 :  ice-model used (LIM2, LIM3 or CICE)                         ("key_lim3", "key_lim2", or "key_cice") 
    207203   nn_ice_embd = 1         !  =0 levitating ice (no mass exchange, concentration/dilution effect) 
    208204                           !  =1 levitating ice with mass and salt exchange but no presure effect 
    209205                           !  =2 embedded sea-ice (full salt and mass exchanges and pressure) 
    210206                     ! Misc. options of sbc :  
    211    ln_traqsr   = .true.    !  Light penetration in the ocean            (T => fill namtra_qsr ) 
     207   ln_traqsr   = .true.    !  Light penetration in the ocean            (T => fill namtra_qsr) 
    212208   ln_dm2dc    = .false.   !  daily mean to diurnal cycle on short wave 
    213209   ln_rnf      = .true.    !  runoffs                                   (T => fill namsbc_rnf) 
     
    216212                           !     =1 global mean of e-p-r set to zero at each time step 
    217213                           !     =2 annual global mean of e-p-r set to zero 
    218    ln_apr_dyn  = .false.   !  Patm gradient added in ocean & ice Eqs.   (T => fill namsbc_apr ) 
    219    ln_isf      = .false.   !  ice shelf                                 (T   => fill namsbc_isf) 
     214   ln_apr_dyn  = .false.   !  Patm gradient added in ocean & ice Eqs.   (T => fill namsbc_apr) 
     215   ln_isf      = .false.   !  ice shelf                                 (T => fill namsbc_isf) 
    220216   ln_wave     = .false.   !  coupling with surface wave                (T => fill namsbc_wave) 
    221217   nn_lsm      = 0         !  =0 land/sea mask for input fields is not applied (keep empty land/sea mask filename field) , 
     
    223219/ 
    224220!----------------------------------------------------------------------- 
    225 &namsbc_flx    !   surface boundary condition : flux formulation 
     221&namsbc_flx    !   surface boundary condition : flux formulation        (ln_ana = T) 
    226222!----------------------------------------------------------------------- 
    227223!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     
    236232/ 
    237233!----------------------------------------------------------------------- 
    238 &namsbc_clio   !   namsbc_clio  CLIO bulk formulae 
    239 !----------------------------------------------------------------------- 
    240 !              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    241 !              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
    242    sn_utau     = 'taux_1m'   ,       -1          , 'sozotaux',   .true.     , .true. , 'yearly'  , ''       , ''       , '' 
    243    sn_vtau     = 'tauy_1m'   ,       -1          , 'sometauy',   .true.     , .true. , 'yearly'  , ''       , ''       , '' 
    244    sn_wndm     = 'flx'       ,       -1          , 'socliowi',   .true.     , .true. , 'yearly'  , ''       , ''       , '' 
    245    sn_tair     = 'flx'       ,       -1          , 'socliot2',   .true.     , .true. , 'yearly'  , ''       , ''       , '' 
    246    sn_humi     = 'flx'       ,       -1          , 'socliohu',   .true.     , .true. , 'yearly'  , ''       , ''       , '' 
    247    sn_ccov     = 'flx'       ,       -1          , 'socliocl',   .false.    , .true. , 'yearly'  , ''       , ''       , '' 
    248    sn_prec     = 'flx'       ,       -1          , 'socliopl',   .false.    , .true. , 'yearly'  , ''       , ''       , '' 
    249  
    250    cn_dir      = './'      !  root directory for the location of the bulk files are 
    251 / 
    252 !----------------------------------------------------------------------- 
    253 &namsbc_core   !   namsbc_core  CORE bulk formulae 
    254 !----------------------------------------------------------------------- 
    255 !              !  file name                   ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                               ! rotation ! land/sea mask ! 
    256 !              !                              !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                              ! pairing  ! filename      ! 
     234&namsbc_blk   !   namsbc_blk  generic Bulk formula                      (ln_blk = T) 
     235!----------------------------------------------------------------------- 
     236!              !  file name                   ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                              ! rotation ! land/sea mask ! 
     237!              !                              !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                             ! pairing  ! filename      ! 
    257238   sn_wndi     = 'u_10.15JUNE2009_fill'       ,         6         , 'U_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bicubic_noc.nc'   , 'Uwnd'   , '' 
    258239   sn_wndj     = 'v_10.15JUNE2009_fill'       ,         6         , 'V_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bicubic_noc.nc'   , 'Vwnd'   , '' 
     
    263244   sn_prec     = 'ncar_precip.15JUNE2009_fill',        -1         , 'PRC_MOD1',   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    264245   sn_snow     = 'ncar_precip.15JUNE2009_fill',        -1         , 'SNOW'    ,   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
     246   sn_slp      = 'slp.15JUNE2009_fill'        ,         6         , 'SLP'     ,   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    265247   sn_tdif     = 'taudif_core'                ,        24         , 'taudif'  ,   .false.    , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc'  , ''       , '' 
    266  
     248   !                    !  bulk algorithm : 
     249   ln_NCAR     = .false.   ! "NCAR"      algorithm   (Large and Yeager 2008) 
     250   ln_COARE_3p0= .false.   ! "COARE 3.0" algorithm   (Fairall et al. 2003) 
     251   ln_COARE_3p5= .false.   ! "COARE 3.5" algorithm   (Edson et al. 2013) 
     252   ln_ECMWF    = .false.   ! "ECMWF"     algorithm   (IFS cycle 31) 
     253   ! 
    267254   cn_dir      = './'      !  root directory for the location of the bulk files 
    268255   ln_taudif   = .false.   !  HF tau contribution: use "mean of stress module - module of the mean stress" data 
     
    273260   rn_vfac     = 0.        !  multiplicative factor for ocean/ice velocity 
    274261                           !  in the calculation of the wind stress (0.=absolute winds or 1.=relative winds) 
    275 / 
    276 !----------------------------------------------------------------------- 
    277 &namsbc_mfs   !   namsbc_mfs  MFS bulk formulae 
    278 !----------------------------------------------------------------------- 
    279 !              !  file name  ! frequency (hours) ! variable ! time interp. !  clim  ! 'yearly'/ ! weights     ! rotation ! land/sea mask ! 
    280 !              !             !  (if <0  months)  !   name   !   (logical)  !  (T/F) ! 'monthly' ! filename    ! pairing  ! filename      ! 
    281    sn_wndi     =   'ecmwf'   ,        6          , 'u10'    ,    .true.    , .false., 'daily'   ,'bicubic.nc' ,   ''     ,   '' 
    282    sn_wndj     =   'ecmwf'   ,        6          , 'v10'    ,    .true.    , .false., 'daily'   ,'bicubic.nc' ,   ''     ,   '' 
    283    sn_clc      =   'ecmwf'   ,        6          , 'clc'    ,    .true.    , .false., 'daily'   ,'bilinear.nc',   ''     ,   '' 
    284    sn_msl      =   'ecmwf'   ,        6          , 'msl'    ,    .true.    , .false., 'daily'   ,'bicubic.nc' ,   ''     ,   '' 
    285    sn_tair     =   'ecmwf'   ,        6          , 't2'     ,    .true.    , .false., 'daily'   ,'bicubic.nc' ,   ''     ,   '' 
    286    sn_rhm      =   'ecmwf'   ,        6          , 'rh'     ,    .true.    , .false., 'daily'   ,'bilinear.nc',   ''     ,   '' 
    287    sn_prec     =   'ecmwf'   ,        6          , 'precip' ,    .true.    , .true. , 'daily'   ,'bicubic.nc' ,   ''     ,   '' 
    288  
    289    cn_dir      = './ECMWF/'      !  root directory for the location of the bulk files 
    290262/ 
    291263!----------------------------------------------------------------------- 
     
    415387/ 
    416388!----------------------------------------------------------------------- 
    417 &namsbc_apr    !   Atmospheric pressure used as ocean forcing or in bulk 
     389&namsbc_apr    !   Atmospheric pressure used as ocean forcing           (ln_apr_dyn =T) 
    418390!----------------------------------------------------------------------- 
    419391!              !  file name ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/CONFIG/cfg.txt

    r7278 r7280  
    66GYRE_BFM OPA_SRC TOP_SRC 
    77AMM12 OPA_SRC 
    8 ORCA2_LIM3 OPA_SRC LIM_SRC_3 NST_SRC 
    98ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC 
    109ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 
     
    1413GYRE OPA_SRC 
    1514ISOMIP OPA_SRC 
     15ORCA2_LIM3 OPA_SRC LIM_SRC_3 NST_SRC 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r7278 r7280  
    55   !!====================================================================== 
    66   !! History :  2.0  ! 2004-01 (C. Ethe, G. Madec)  Original code 
    7    !!            4.0  ! 2011-02 (G. Madec) dynamical allocation 
     7   !!            3.0  ! 2011-02 (G. Madec) dynamical allocation 
    88   !!             -   ! 2014    (C. Rousset) add N/S initializations 
    99   !!---------------------------------------------------------------------- 
     
    2525   USE dom_ice          ! sea-ice domain 
    2626   USE limvar           ! lim_var_salprof 
     27   ! 
    2728   USE in_out_manager   ! I/O manager 
    2829   USE lib_mpp          ! MPP library 
     
    3738   PUBLIC   lim_istate      ! routine called by lim_init.F90 
    3839 
    39    !                          !!** init namelist (namiceini) ** 
     40   !                           !!** init namelist (namiceini) ** 
    4041   REAL(wp) ::   rn_thres_sst   ! threshold water temperature for initial sea ice 
    4142   REAL(wp) ::   rn_hts_ini_n   ! initial snow thickness in the north 
     
    5758   INTEGER , PARAMETER ::   jp_tmi = 5           ! index of ice temp at T-point 
    5859   INTEGER , PARAMETER ::   jp_smi = 6           ! index of ice sali at T-point 
    59    TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   si    ! structure of input fields (file informations, fields read) 
     60   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   si  ! structure of input fields (file informations, fields read) 
    6061 
    6162   LOGICAL  ::  ln_iceini        ! initialization or not 
     
    7475      !! ** Purpose :   defined the sea-ice initial state 
    7576      !! 
    76       !! ** Method  :    
    77       !!                This routine will put some ice where ocean 
     77      !! ** Method  :   This routine will put some ice where ocean 
    7878      !!                is at the freezing point, then fill in ice  
    7979      !!                state variables using prescribed initial  
    8080      !!                values in the namelist             
    8181      !! 
    82       !! ** Steps   :    
    83       !!                1) Read namelist 
     82      !! ** Steps   :   1) Read namelist 
    8483      !!                2) Basal temperature; ice and hemisphere masks 
    8584      !!                3) Fill in the ice thickness distribution using gaussian 
     
    9695      !!   4.0  !  09-11  (M. Vancoppenolle)   Enhanced version for ice cats 
    9796      !!-------------------------------------------------------------------- 
    98  
    99       !! * Local variables 
    100       INTEGER    :: ji, jj, jk, jl             ! dummy loop indices 
    101       REAL(wp)   :: ztmelts, zdh 
    102       INTEGER    :: i_hemis, i_fill, jl0   
     97      INTEGER  :: ji, jj, jk, jl   ! dummy loop indices 
     98      REAL(wp) :: ztmelts, zdh 
     99      INTEGER  :: i_hemis, i_fill, jl0   
    103100      REAL(wp)   :: ztest_1, ztest_2, ztest_3, ztest_4, ztests, zsigma, zarg, zA, zV, zA_cons, zV_cons, zconv  
    104101      REAL(wp), POINTER, DIMENSION(:,:)   :: zswitch    ! ice indicator 
     
    108105      !-------------------------------------------------------------------- 
    109106 
    110       CALL wrk_alloc( jpi, jpj, jpl, zh_i_ini,  za_i_ini,  zv_i_ini ) 
    111       CALL wrk_alloc( jpi, jpj,      zht_i_ini, zat_i_ini, zvt_i_ini, zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 
    112       CALL wrk_alloc( jpi, jpj,      zswitch ) 
     107      CALL wrk_alloc( jpi,jpj,jpl,  zh_i_ini,  za_i_ini,  zv_i_ini ) 
     108      CALL wrk_alloc( jpi,jpj,       zht_i_ini, zat_i_ini, zvt_i_ini, zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 
     109      CALL wrk_alloc( jpi,jpj,       zswitch ) 
    113110 
    114111      IF(lwp) WRITE(numout,*) 
    115       IF(lwp) WRITE(numout,*) 'lim_istate : Ice initialization ' 
    116       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' 
     112      IF(lwp) WRITE(numout,*) 'lim_istate : sea-ice initialization ' 
     113      IF(lwp) WRITE(numout,*) '~~~~~~~~~~ ' 
    117114 
    118115      !-------------------------------------------------------------------- 
    119116      ! 1) Read namelist 
    120117      !-------------------------------------------------------------------- 
    121  
     118      ! 
    122119      CALL lim_istate_init     !  reading the initials parameters of the ice 
    123120 
     
    134131 
    135132      IF( ln_iceini ) THEN 
    136  
     133         ! 
    137134         !-------------------------------------------------------------------- 
    138135         ! 2) Basal temperature, ice mask and hemispheric index 
    139136         !-------------------------------------------------------------------- 
    140  
     137         ! 
    141138         DO jj = 1, jpj                                       ! ice if sst <= t-freez + ttest 
    142139            DO ji = 1, jpi 
     
    153150         !-------------------------------------------------------------------- 
    154151         IF( ln_iceini_file )THEN 
    155  
     152            ! 
    156153            zht_i_ini(:,:)  = si(jp_hti)%fnow(:,:,1) 
    157154            zht_s_ini(:,:)  = si(jp_hts)%fnow(:,:,1) 
     
    160157            ztm_i_ini(:,:)  = si(jp_tmi)%fnow(:,:,1) 
    161158            zsm_i_ini(:,:)  = si(jp_smi)%fnow(:,:,1) 
    162  
     159            ! 
    163160         ELSE ! ln_iceini_file = F 
    164  
     161            ! 
    165162            !----------------------------- 
    166163            ! 3.1) Hemisphere-dependent arrays 
     
    186183               END DO 
    187184            END DO 
    188  
     185            ! 
    189186         ENDIF ! ln_iceini_file 
    190187 
     
    200197         za_i_ini(:,:,:) = 0._wp 
    201198         zv_i_ini(:,:,:) = 0._wp 
    202  
     199         ! 
    203200         DO jj = 1, jpj 
    204201            DO ji = 1, jpi 
    205  
     202               ! 
    206203               IF( zat_i_ini(ji,jj) > 0._wp .AND. zht_i_ini(ji,jj) > 0._wp )THEN 
    207  
    208                   ztest_1 = 0 ; ztest_2 = 0 ; ztest_3 = 0 ; ztest_4 = 0 
     204                  ! 
     205                  ztest_1 = 0   ;   ztest_2 = 0   ;   ztest_3 = 0   ;  ztest_4 = 0 
    209206!                  ztests  = 0  
    210  
     207                  ! 
    211208                  DO i_fill = jpl, 1, -1 
    212  
    213 !                     IF( ztests .NE. 4 ) THEN 
    214                      IF ( ( ztest_1 + ztest_2 + ztest_3 + ztest_4 ) .NE. 4 ) THEN 
     209                     ! 
     210!                     IF( ztests /= 4 ) THEN 
     211                     IF ( ( ztest_1 + ztest_2 + ztest_3 + ztest_4 ) /= 4 ) THEN 
    215212                        !---------------------------- 
    216213                        ! fill the i_fill categories 
     
    223220                           za_i_ini(ji,jj,2:jpl)   = 0._wp 
    224221                        ELSE 
    225  
     222                           ! 
    226223                           ! *** >1 categores to fill 
    227224                           !--- Ice thicknesses in the i_fill - 1 first categories 
     
    229226                              zh_i_ini(ji,jj,jl) = hi_mean(jl) 
    230227                           END DO 
    231                 
     228                           ! 
    232229                           !--- jl0: most likely index where cc will be maximum 
    233230                           DO jl = 1, jpl 
     
    238235                           END DO 
    239236                           jl0 = MIN(jl0, i_fill) 
    240                 
     237                           ! 
    241238                           !--- Concentrations 
    242239                           za_i_ini(ji,jj,jl0) = zat_i_ini(ji,jj) / SQRT(REAL(jpl)) 
    243240                           DO jl = 1, i_fill - 1 
    244                               IF( jl .NE. jl0 )THEN 
     241                              IF( jl /= jl0 )THEN 
    245242                                 zsigma             = 0.5 * zht_i_ini(ji,jj) 
    246243                                 zarg               = ( zh_i_ini(ji,jj,jl) - zht_i_ini(ji,jj) ) / zsigma 
     
    248245                              ENDIF 
    249246                           END DO 
    250                 
     247                           ! 
    251248                           zA = 0. ! sum of the areas in the jpl categories  
    252249                           DO jl = 1, i_fill - 1 
     
    254251                           END DO 
    255252                           za_i_ini(ji,jj,i_fill)   = zat_i_ini(ji,jj) - zA ! ice conc in the last category 
    256                            IF ( i_fill .LT. jpl ) za_i_ini(ji,jj,i_fill+1:jpl) = 0._wp 
    257           
     253                           IF ( i_fill < jpl ) za_i_ini(ji,jj,i_fill+1:jpl) = 0._wp 
     254                           ! 
    258255                           !--- Ice thickness in the last category 
    259256                           zV = 0. ! sum of the volumes of the N-1 categories 
     
    262259                           END DO 
    263260                           zh_i_ini(ji,jj,i_fill) = ( zvt_i_ini(ji,jj) - zV ) / za_i_ini(ji,jj,i_fill)  
    264                            IF ( i_fill .LT. jpl ) zh_i_ini(ji,jj,i_fill+1:jpl) = 0._wp 
    265  
     261                           IF ( i_fill < jpl ) zh_i_ini(ji,jj,i_fill+1:jpl) = 0._wp 
     262                           ! 
    266263                           !--- volumes 
    267264                           zv_i_ini(ji,jj,:) = za_i_ini(ji,jj,:) * zh_i_ini(ji,jj,:) 
    268                            IF ( i_fill .LT. jpl ) zv_i_ini(ji,jj,i_fill+1:jpl) = 0._wp 
    269  
     265                           IF ( i_fill < jpl ) zv_i_ini(ji,jj,i_fill+1:jpl) = 0._wp 
     266                           ! 
    270267                        ENDIF ! i_fill 
    271  
     268                        ! 
    272269                        !--------------------- 
    273270                        ! Compatibility tests 
     
    275272                        ! Test 1: area conservation 
    276273                        zA_cons = SUM(za_i_ini(ji,jj,:)) ; zconv = ABS(zat_i_ini(ji,jj) - zA_cons ) 
    277                         IF ( zconv .LT. 1.0e-6 ) THEN 
    278                            ztest_1 = 1 
    279                         ELSE  
    280                           ztest_1 = 0 
     274                        IF( zconv < 1.0e-6 ) THEN   ;   ztest_1 = 1. 
     275                        ELSE                        ;   ztest_1 = 0. 
    281276                        ENDIF 
    282  
     277                        ! 
    283278                        ! Test 2: volume conservation 
    284279                        zV_cons = SUM(zv_i_ini(ji,jj,:)) 
    285                         zconv = ABS(zvt_i_ini(ji,jj) - zV_cons) 
    286  
    287                         IF( zconv .LT. 1.0e-6 ) THEN 
    288                            ztest_2 = 1 
    289                         ELSE 
    290                            ztest_2 = 0 
     280                        zconv   = ABS(zvt_i_ini(ji,jj) - zV_cons) 
     281                        IF( zconv < 1.0e-6 ) THEN   ;   ztest_2 = 1. 
     282                        ELSE                        ;   ztest_2 = 0. 
    291283                        ENDIF 
    292  
     284                        ! 
    293285                        ! Test 3: thickness of the last category is in-bounds ? 
    294                         IF ( zh_i_ini(ji,jj,i_fill) > hi_max(i_fill-1) ) THEN 
    295                            ztest_3 = 1 
    296                         ELSE 
    297                            ztest_3 = 0 
     286                        IF( zh_i_ini(ji,jj,i_fill) > hi_max(i_fill-1) ) THEN   ;   ztest_3 = 1. 
     287                        ELSE                                                   ;   ztest_3 = 0. 
    298288                        ENDIF 
    299  
     289                        ! 
    300290                        ! Test 4: positivity of ice concentrations 
    301291                        ztest_4 = 1 
    302292                        DO jl = 1, jpl 
    303                            IF ( za_i_ini(ji,jj,jl) .LT. 0._wp ) THEN  
    304                               ztest_4 = 0 
    305                            ENDIF 
     293                           IF( za_i_ini(ji,jj,jl) < 0._wp )   ztest_4 = 0 
    306294                        END DO 
    307  
     295                        ! 
    308296                     ENDIF ! ztest_1 + ztest_2 + ztest_3 + ztest_4 
    309   
     297                     ! 
    310298                     ztests = ztest_1 + ztest_2 + ztest_3 + ztest_4 
    311  
     299                     ! 
    312300                  END DO ! i_fill 
    313  
     301                  ! 
    314302                  IF(lwp) THEN  
    315                      WRITE(numout,*) ' ztests : ', ztests 
    316                      IF( ztests .NE. 4 )THEN 
     303                     IF( ztests /= 4 ) THEN 
    317304                        WRITE(numout,*) 
    318305                        WRITE(numout,*) ' !!!! ALERT                  !!! ' 
    319306                        WRITE(numout,*) ' !!!! Something is wrong in the LIM3 initialization procedure ' 
    320307                        WRITE(numout,*) 
    321                         WRITE(numout,*) ' *** ztests is not equal to 4 ' 
     308                        WRITE(numout,*) ' *** ztests is not equal to 4 :   ztests : ', ztests 
    322309                        WRITE(numout,*) ' *** ztest_i (i=1,4) = ', ztest_1, ztest_2, ztest_3, ztest_4 
    323310                        WRITE(numout,*) ' zat_i_ini : ', zat_i_ini(ji,jj) 
    324311                        WRITE(numout,*) ' zht_i_ini : ', zht_i_ini(ji,jj) 
    325                      ENDIF ! ztests .NE. 4 
     312                     ENDIF ! ztests /= 4 
    326313                  ENDIF 
    327        
     314                  ! 
    328315               ENDIF !  zat_i_ini(ji,jj) > 0._wp .AND. zhm_i_ini(ji,jj) > 0._wp 
    329  
    330             ENDDO    
    331          ENDDO    
     316               ! 
     317            END DO    
     318         END DO    
    332319 
    333320         !--------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90

    r7278 r7280  
    969969      IF (lwp) THEN                          ! control print 
    970970         WRITE(numout,*) 
    971          WRITE(numout,*)' lim_itd_me_init : ice parameters for mechanical ice redistribution ' 
    972          WRITE(numout,*)' ~~~~~~~~~~~~~~~' 
    973          WRITE(numout,*)'   Fraction of shear energy contributing to ridging        rn_cs       = ', rn_cs  
    974          WRITE(numout,*)'   Fraction of snow volume conserved during ridging        rn_fsnowrdg = ', rn_fsnowrdg  
    975          WRITE(numout,*)'   Fraction of snow volume conserved during ridging        rn_fsnowrft = ', rn_fsnowrft  
    976          WRITE(numout,*)'   Fraction of total ice coverage contributing to ridging  rn_gstar    = ', rn_gstar 
    977          WRITE(numout,*)'   Equivalent to G* for an exponential part function       rn_astar    = ', rn_astar 
    978          WRITE(numout,*)'   Quantity playing a role in max ridged ice thickness     rn_hstar    = ', rn_hstar 
    979          WRITE(numout,*)'   Rafting of ice sheets or not                            ln_rafting  = ', ln_rafting 
    980          WRITE(numout,*)'   Parmeter thickness (threshold between ridge-raft)       rn_hraft    = ', rn_hraft 
    981          WRITE(numout,*)'   Rafting hyperbolic tangent coefficient                  rn_craft    = ', rn_craft   
    982          WRITE(numout,*)'   Initial porosity of ridges                              rn_por_rdg  = ', rn_por_rdg 
    983          WRITE(numout,*)'   Switch for part. function (0) linear (1) exponential    nn_partfun  = ', nn_partfun 
     971         WRITE(numout,*) ' lim_itd_me_init : ice parameters for mechanical ice redistribution ' 
     972         WRITE(numout,*) ' ~~~~~~~~~~~~~~~' 
     973         WRITE(numout,*) '   Namelist namiceitdme :' 
     974         WRITE(numout,*) '      Fraction of shear energy contributing to ridging        rn_cs       = ', rn_cs  
     975         WRITE(numout,*) '      Fraction of snow volume conserved during ridging        rn_fsnowrdg = ', rn_fsnowrdg  
     976         WRITE(numout,*) '      Fraction of snow volume conserved during ridging        rn_fsnowrft = ', rn_fsnowrft  
     977         WRITE(numout,*) '      Fraction of total ice coverage contributing to ridging  rn_gstar    = ', rn_gstar 
     978         WRITE(numout,*) '      Equivalent to G* for an exponential part function       rn_astar    = ', rn_astar 
     979         WRITE(numout,*) '      Quantity playing a role in max ridged ice thickness     rn_hstar    = ', rn_hstar 
     980         WRITE(numout,*) '      Rafting of ice sheets or not                            ln_rafting  = ', ln_rafting 
     981         WRITE(numout,*) '      Parmeter thickness (threshold between ridge-raft)       rn_hraft    = ', rn_hraft 
     982         WRITE(numout,*) '      Rafting hyperbolic tangent coefficient                  rn_craft    = ', rn_craft   
     983         WRITE(numout,*) '      Initial porosity of ridges                              rn_por_rdg  = ', rn_por_rdg 
     984         WRITE(numout,*) '      Switch for part. function (0) linear (1) exponential    nn_partfun  = ', nn_partfun 
    984985      ENDIF 
    985986      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r7278 r7280  
    621621      IF(lwp) THEN 
    622622         WRITE(numout,*) 
    623          WRITE(numout,*) 'lim_thd : Ice Thermodynamics' 
    624          WRITE(numout,*) '~~~~~~~' 
     623         WRITE(numout,*) 'lim_thd_init : Ice Thermodynamics initialization' 
     624         WRITE(numout,*) '~~~~~~~~~~~~' 
    625625      ENDIF 
    626626      ! 
     
    634634      IF(lwm) WRITE ( numoni, namicethd ) 
    635635      ! 
    636       IF ( ( jpl > 1 ) .AND. ( nn_monocat == 1 ) ) THEN  
    637          nn_monocat = 0 
    638          IF(lwp) WRITE(numout, *) '   nn_monocat must be 0 in multi-category case ' 
    639       ENDIF 
    640  
    641       ! 
    642636      IF(lwp) THEN                          ! control print 
    643          WRITE(numout,*) 
    644637         WRITE(numout,*)'   Namelist of ice parameters for ice thermodynamic computation ' 
    645638         WRITE(numout,*)'      ice thick. for lateral accretion                        rn_hnewice   = ', rn_hnewice 
     
    659652         WRITE(numout,*)'      iterate the surface non-solar flux (T) or not (F)       ln_it_qnsice = ', ln_it_qnsice 
    660653      ENDIF 
     654      IF( jpl > 1 .AND. nn_monocat == 1 ) THEN  
     655         nn_monocat = 0 
     656         IF(lwp) WRITE(numout,*) 
     657         IF(lwp) WRITE(numout,*) '   nn_monocat forced to 0 as jpl>1, i.e. multi-category case is chosen' 
     658      ENDIF 
    661659      ! 
    662660   END SUBROUTINE lim_thd_init 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90

    r7278 r7280  
    144144         WRITE(numout,*) 'lim_thd_sal_init : Ice parameters for salinity ' 
    145145         WRITE(numout,*) '~~~~~~~~~~~~~~~~' 
    146          WRITE(numout,*) '   switch for salinity nn_icesal        = ', nn_icesal 
    147          WRITE(numout,*) '   bulk salinity value if nn_icesal = 1 = ', rn_icesal 
    148          WRITE(numout,*) '   restoring salinity for GD            = ', rn_sal_gd 
    149          WRITE(numout,*) '   restoring time for GD                = ', rn_time_gd 
    150          WRITE(numout,*) '   restoring salinity for flushing      = ', rn_sal_fl 
    151          WRITE(numout,*) '   restoring time for flushing          = ', rn_time_fl 
    152          WRITE(numout,*) '   Maximum tolerated ice salinity       = ', rn_simax 
    153          WRITE(numout,*) '   Minimum tolerated ice salinity       = ', rn_simin 
     146         WRITE(numout,*) '   Namelist namicesal :' 
     147         WRITE(numout,*) '      switch for salinity nn_icesal        = ', nn_icesal 
     148         WRITE(numout,*) '      bulk salinity value if nn_icesal = 1 = ', rn_icesal 
     149         WRITE(numout,*) '      restoring salinity for GD            = ', rn_sal_gd 
     150         WRITE(numout,*) '      restoring time for GD                = ', rn_time_gd 
     151         WRITE(numout,*) '      restoring salinity for flushing      = ', rn_sal_fl 
     152         WRITE(numout,*) '      restoring time for flushing          = ', rn_time_fl 
     153         WRITE(numout,*) '      Maximum tolerated ice salinity       = ', rn_simax 
     154         WRITE(numout,*) '      Minimum tolerated ice salinity       = ', rn_simin 
    154155      ENDIF 
    155156      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90

    r6140 r7280  
    230230 
    231231   SUBROUTINE dia_hsb_rst( kt, cdrw ) 
    232      !!--------------------------------------------------------------------- 
    233      !!                   ***  ROUTINE limdia_rst  *** 
    234      !!                      
    235      !! ** Purpose :   Read or write DIA file in restart file 
    236      !! 
    237      !! ** Method  :   use of IOM library 
    238      !!---------------------------------------------------------------------- 
    239      INTEGER         , INTENT(in) ::   kt     ! ocean time-step 
    240      CHARACTER(len=*), INTENT(in) ::   cdrw   ! "READ"/"WRITE" flag 
    241      ! 
    242      INTEGER ::   ji, jj, jk   ! dummy loop indices 
    243      INTEGER ::   id1          ! local integers 
    244      !!---------------------------------------------------------------------- 
    245      ! 
    246      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
    247         IF( ln_rstart ) THEN                   !* Read the restart file 
    248            !id1 = iom_varid( numror, 'frc_vol'  , ldstop = .FALSE. ) 
    249            ! 
    250            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    251            IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 
    252            IF(lwp) WRITE(numout,*) '~~~~~~~' 
    253            CALL iom_get( numror, 'frc_v', frc_v ) 
    254            CALL iom_get( numror, 'frc_t', frc_t ) 
    255            CALL iom_get( numror, 'frc_s', frc_s ) 
    256            IF( ln_linssh ) THEN 
    257               CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 
    258               CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 
    259            ENDIF 
    260            CALL iom_get( numror, jpdom_autoglo, 'surf_ini', surf_ini ) ! ice sheet coupling 
    261            CALL iom_get( numror, jpdom_autoglo, 'ssh_ini', ssh_ini ) 
    262            CALL iom_get( numror, jpdom_autoglo, 'e3t_ini', e3t_ini ) 
    263            CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini ) 
    264            CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini ) 
    265            IF( ln_linssh ) THEN 
    266               CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
    267               CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
    268            ENDIF 
    269        ELSE 
    270           IF(lwp) WRITE(numout,*) '~~~~~~~' 
    271           IF(lwp) WRITE(numout,*) ' dia_hsb at initial state ' 
    272           IF(lwp) WRITE(numout,*) '~~~~~~~' 
    273           surf_ini(:,:) = e1e2t(:,:) * tmask_i(:,:)         ! initial ocean surface 
    274           ssh_ini(:,:) = sshn(:,:)                          ! initial ssh 
    275           DO jk = 1, jpk 
    276              ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 
    277              e3t_ini   (:,:,jk) = e3t_n(:,:,jk)                      * tmask(:,:,jk)  ! initial vertical scale factors 
    278              hc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_tem) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial heat content 
    279              sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial salt content 
    280           END DO 
    281           frc_v = 0._wp                                           ! volume       trend due to forcing 
    282           frc_t = 0._wp                                           ! heat content   -    -   -    -    
    283           frc_s = 0._wp                                           ! salt content   -    -   -    -         
    284           IF( ln_linssh ) THEN 
    285              IF ( ln_isfcav ) THEN 
    286                 DO ji=1,jpi 
    287                    DO jj=1,jpj 
    288                       ssh_hc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) * sshn(ji,jj)   ! initial heat content in ssh 
    289                       ssh_sc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) * sshn(ji,jj)   ! initial salt content in ssh 
    290                    ENDDO 
    291                 ENDDO 
    292              ELSE 
    293                 ssh_hc_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:)   ! initial heat content in ssh 
    294                 ssh_sc_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:)   ! initial salt content in ssh 
    295              END IF 
    296              frc_wn_t = 0._wp                                       ! initial heat content misfit due to free surface 
    297              frc_wn_s = 0._wp                                       ! initial salt content misfit due to free surface 
    298           ENDIF 
    299        ENDIF 
    300  
    301      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
    302         !                                   ! ------------------- 
    303         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    304         IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 
    305         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    306  
    307         CALL iom_rstput( kt, nitrst, numrow, 'frc_v'   , frc_v     ) 
    308         CALL iom_rstput( kt, nitrst, numrow, 'frc_t'   , frc_t     ) 
    309         CALL iom_rstput( kt, nitrst, numrow, 'frc_s'   , frc_s     ) 
    310         IF( ln_linssh ) THEN 
    311            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 
    312            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 
    313         ENDIF 
    314         CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini )      ! ice sheet coupling 
    315         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini ) 
    316         CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini ) 
    317         CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini ) 
    318         CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini ) 
    319         IF( ln_linssh ) THEN 
    320            CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
    321            CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
    322         ENDIF 
    323         ! 
    324      ENDIF 
    325      ! 
     232      !!--------------------------------------------------------------------- 
     233      !!                   ***  ROUTINE limdia_rst  *** 
     234      !!                      
     235      !! ** Purpose :   Read or write DIA file in restart file 
     236      !!  
     237      !! ** Method  :   use of IOM library 
     238      !!---------------------------------------------------------------------- 
     239      INTEGER         , INTENT(in) ::   kt     ! ocean time-step 
     240      CHARACTER(len=*), INTENT(in) ::   cdrw   ! "READ"/"WRITE" flag 
     241      ! 
     242      INTEGER ::   ji, jj, jk   ! dummy loop indices 
     243      INTEGER ::   id1          ! local integers 
     244      !!---------------------------------------------------------------------- 
     245      ! 
     246      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
     247         IF( ln_rstart ) THEN                   !* Read the restart file 
     248            !id1 = iom_varid( numror, 'frc_vol'  , ldstop = .FALSE. ) 
     249            ! 
     250            IF(lwp) WRITE(numout,*) 
     251            IF(lwp) WRITE(numout,*) '   dia_hsb_rst : read restart at it= ', kt,' date= ', ndastp 
     252            IF(lwp) WRITE(numout,*) '   ~~~~~~~~~~~' 
     253            CALL iom_get( numror, 'frc_v', frc_v ) 
     254            CALL iom_get( numror, 'frc_t', frc_t ) 
     255            CALL iom_get( numror, 'frc_s', frc_s ) 
     256            IF( ln_linssh ) THEN 
     257               CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 
     258               CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 
     259            ENDIF 
     260            CALL iom_get( numror, jpdom_autoglo, 'surf_ini', surf_ini ) ! ice sheet coupling 
     261            CALL iom_get( numror, jpdom_autoglo, 'ssh_ini', ssh_ini ) 
     262            CALL iom_get( numror, jpdom_autoglo, 'e3t_ini', e3t_ini ) 
     263            CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini ) 
     264            CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini ) 
     265            IF( ln_linssh ) THEN 
     266               CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
     267               CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
     268            ENDIF 
     269         ELSE 
     270            IF(lwp) WRITE(numout,*) 
     271            IF(lwp) WRITE(numout,*) '   dia_hsb_rst : no restart, set value at initial state ' 
     272            IF(lwp) WRITE(numout,*) '   ~~~~~~~~~~~' 
     273            surf_ini(:,:) = e1e2t(:,:) * tmask_i(:,:)         ! initial ocean surface 
     274            ssh_ini(:,:) = sshn(:,:)                          ! initial ssh 
     275            DO jk = 1, jpk 
     276               ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 
     277               e3t_ini   (:,:,jk) = e3t_n(:,:,jk)                      * tmask(:,:,jk)  ! initial vertical scale factors 
     278               hc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_tem) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial heat content 
     279               sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial salt content 
     280            END DO 
     281            frc_v = 0._wp                                           ! volume       trend due to forcing 
     282            frc_t = 0._wp                                           ! heat content   -    -   -    -    
     283            frc_s = 0._wp                                           ! salt content   -    -   -    -         
     284            IF( ln_linssh ) THEN 
     285               IF( ln_isfcav ) THEN 
     286                  DO ji=1,jpi 
     287                     DO jj=1,jpj 
     288                        ssh_hc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) * sshn(ji,jj)   ! initial heat content in ssh 
     289                        ssh_sc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) * sshn(ji,jj)   ! initial salt content in ssh 
     290                     END DO 
     291                  END DO 
     292               ELSE 
     293                  ssh_hc_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:)   ! initial heat content in ssh 
     294                  ssh_sc_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:)   ! initial salt content in ssh 
     295               END IF 
     296               frc_wn_t = 0._wp                                       ! initial heat content misfit due to free surface 
     297               frc_wn_s = 0._wp                                       ! initial salt content misfit due to free surface 
     298            ENDIF 
     299         ENDIF 
     300         ! 
     301      ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN   ! Create restart file 
     302         !                                   ! ------------------- 
     303         IF(lwp) WRITE(numout,*) 
     304         IF(lwp) WRITE(numout,*) '   dia_hsb_rst : write restart at it= ', kt,' date= ', ndastp 
     305         IF(lwp) WRITE(numout,*) '   ~~~~~~~~~~~' 
     306 
     307         CALL iom_rstput( kt, nitrst, numrow, 'frc_v'   , frc_v     ) 
     308         CALL iom_rstput( kt, nitrst, numrow, 'frc_t'   , frc_t     ) 
     309         CALL iom_rstput( kt, nitrst, numrow, 'frc_s'   , frc_s     ) 
     310         IF( ln_linssh ) THEN 
     311            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 
     312            CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 
     313         ENDIF 
     314         CALL iom_rstput( kt, nitrst, numrow, 'surf_ini', surf_ini )      ! ice sheet coupling 
     315         CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini ) 
     316         CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini ) 
     317         CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini ) 
     318         CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini ) 
     319         IF( ln_linssh ) THEN 
     320            CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
     321            CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
     322         ENDIF 
     323         ! 
     324      ENDIF 
     325      ! 
    326326   END SUBROUTINE dia_hsb_rst 
    327327 
     
    342342      INTEGER ::   ierror   ! local integer 
    343343      INTEGER ::   ios 
    344       ! 
     344      !! 
    345345      NAMELIST/namhsb/ ln_diahsb 
    346346      !!---------------------------------------------------------------------- 
    347  
    348       IF(lwp) THEN 
    349          WRITE(numout,*) 
    350          WRITE(numout,*) 'dia_hsb_init : check the heat and salt budgets' 
    351          WRITE(numout,*) '~~~~~~~~ ' 
    352       ENDIF 
    353  
     347      ! 
    354348      REWIND( numnam_ref )              ! Namelist namhsb in reference namelist 
    355349      READ  ( numnam_ref, namhsb, IOSTAT = ios, ERR = 901) 
     
    368362         WRITE(numout,*) '   Namelist namhsb : set hsb parameters' 
    369363         WRITE(numout,*) '      Switch for hsb diagnostic (T) or not (F)  ln_diahsb  = ', ln_diahsb 
    370          WRITE(numout,*) 
    371364      ENDIF 
    372365 
    373366      IF( .NOT. ln_diahsb )   RETURN 
    374          !      IF( .NOT. lk_mpp_rep ) & 
    375          !        CALL ctl_stop (' Your global mpp_sum if performed in single precision - 64 bits -', & 
    376          !             &         ' whereas the global sum to be precise must be done in double precision ',& 
    377          !             &         ' please add key_mpp_rep') 
    378367 
    379368      ! ------------------- ! 
     
    383372         &      e3t_ini(jpi,jpj,jpk), surf(jpi,jpj),  ssh_ini(jpi,jpj), STAT=ierror  ) 
    384373      IF( ierror > 0 ) THEN 
    385          CALL ctl_stop( 'dia_hsb: unable to allocate hc_loc_ini' )   ;   RETURN 
     374         CALL ctl_stop( 'dia_hsb_init: unable to allocate hc_loc_ini' )   ;   RETURN 
    386375      ENDIF 
    387376 
    388377      IF( ln_linssh )   ALLOCATE( ssh_hc_loc_ini(jpi,jpj), ssh_sc_loc_ini(jpi,jpj),STAT=ierror ) 
    389378      IF( ierror > 0 ) THEN 
    390          CALL ctl_stop( 'dia_hsb: unable to allocate hc_loc_ini' )   ;   RETURN 
     379         CALL ctl_stop( 'dia_hsb_init: unable to allocate hc_loc_ini' )   ;   RETURN 
    391380      ENDIF 
    392381 
     
    394383      ! 2 - Time independant variables and file opening ! 
    395384      ! ----------------------------------------------- ! 
    396       IF(lwp) WRITE(numout,*) "dia_hsb: heat salt volume budgets activated" 
    397       IF(lwp) WRITE(numout,*) '~~~~~~~' 
     385      IF(lwp) WRITE(numout,*) 
     386      IF(lwp) WRITE(numout,*) "   heat salt volume budgets activated" 
    398387      surf(:,:) = e1t(:,:) * e2t(:,:) * tmask_i(:,:)      ! masked surface grid cell area 
    399388      surf_tot  = glob_sum( surf(:,:) )                                       ! total ocean surface area 
    400389 
    401       IF( lk_bdy ) CALL ctl_warn( 'dia_hsb does not take open boundary fluxes into account' )          
     390      IF( lk_bdy ) CALL ctl_warn( 'dia_hsb_init: heat/salt budget does not consider open boundary fluxes' )          
    402391      ! 
    403392      ! ---------------------------------- ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DIU/cool_skin.F90

    r7278 r7280  
    1010 
    1111   !!---------------------------------------------------------------------- 
    12    !!   diurnal_sst_coolskin_step  : time-step the cool skin corrections 
     12   !!   diurnal_sst_coolskin_init : initialisation of the cool skin 
     13   !!   diurnal_sst_coolskin_step : time-stepping  of the cool skin corrections 
    1314   !!---------------------------------------------------------------------- 
    1415   USE par_kind 
     
    2122    
    2223   IMPLICIT NONE 
    23     
     24   PRIVATE 
     25 
    2426   ! Namelist parameters 
    2527 
     
    3739   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: x_csthick   ! Cool skin thickness 
    3840 
    39    PRIVATE 
    4041   PUBLIC diurnal_sst_coolskin_step, diurnal_sst_coolskin_init 
    4142 
    4243      !! * Substitutions 
    4344#  include "vectopt_loop_substitute.h90" 
    44     
     45   !!---------------------------------------------------------------------- 
     46   !! NEMO/OPA 4.0 , NEMO-consortium (2016)  
     47   !! $Id:  $ 
     48   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     49   !!----------------------------------------------------------------------    
    4550   CONTAINS  
    4651    
     
    5661      !!  
    5762      !!---------------------------------------------------------------------- 
    58        
    59       IMPLICIT NONE 
    60        
    6163      ALLOCATE( x_csdsst(jpi,jpj), x_csthick(jpi,jpj) ) 
    6264      x_csdsst = 0. 
    6365      x_csthick = 0. 
    64        
     66      ! 
    6567   END SUBROUTINE diurnal_sst_coolskin_init 
    66   
     68 
     69 
    6770   SUBROUTINE diurnal_sst_coolskin_step(psqflux, pstauflux, psrho, rdt) 
    6871      !!---------------------------------------------------------------------- 
     
    7578      !! ** Reference :  
    7679      !!---------------------------------------------------------------------- 
    77       
    78       IMPLICIT NONE 
    79       
    8080      ! Dummy variables 
    8181      REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: psqflux     ! Heat (non-solar)(Watts) 
     
    9494      
    9595      INTEGER :: ji,jj 
    96       
    97       IF ( .NOT. ln_blk_core ) THEN 
    98          CALL ctl_stop("cool_skin.f90: diurnal flux processing only implemented"//& 
    99          &             " for core bulk forcing") 
    100       ENDIF 
    101   
     96      !!---------------------------------------------------------------------- 
     97      ! 
     98      IF( .NOT. ln_blk )   CALL ctl_stop("cool_skin.f90: diurnal flux processing only implemented for bulk forcing") 
     99      ! 
    102100      DO jj = 1,jpj 
    103101         DO ji = 1,jpi 
    104              
     102            ! 
    105103            ! Calcualte wind speed from wind stress and friction velocity 
    106104            IF( tmask(ji,jj,1) == 1. .AND. pstauflux(ji,jj) /= 0 .AND. psrho(ji,jj) /=0 ) THEN 
     
    111109               z_wspd(ji,jj) = 0.      
    112110            ENDIF 
    113  
    114   
     111            ! 
    115112            ! Calculate gamma function which is dependent upon wind speed 
    116113            IF( tmask(ji,jj,1) == 1. ) THEN 
     
    119116               IF( ( z_wspd(ji,jj) >= 10. ) ) z_gamma(ji,jj) = 6. 
    120117            ENDIF 
    121  
    122  
     118            ! 
    123119            ! Calculate lamda function 
    124120            IF( tmask(ji,jj,1) == 1. .AND. z_fv(ji,jj) /= 0 ) THEN 
     
    127123               z_lamda(ji,jj) = 0. 
    128124            ENDIF 
    129  
    130  
    131  
     125            ! 
    132126            ! Calculate the cool skin thickness - only when heat flux is out of the ocean 
    133127            IF( tmask(ji,jj,1) == 1. .AND. z_fv(ji,jj) /= 0 .AND. psqflux(ji,jj) < 0 ) THEN 
    134                 x_csthick(ji,jj) = ( z_lamda(ji,jj) * pp_v ) / z_fv(ji,jj) 
     128               x_csthick(ji,jj) = ( z_lamda(ji,jj) * pp_v ) / z_fv(ji,jj) 
    135129            ELSE 
    136                 x_csthick(ji,jj) = 0. 
     130               x_csthick(ji,jj) = 0. 
    137131            ENDIF 
    138  
    139  
    140  
     132            ! 
    141133            ! Calculate the cool skin correction - only when the heat flux is out of the ocean 
    142134            IF( tmask(ji,jj,1) == 1. .AND. x_csthick(ji,jj) /= 0. .AND. psqflux(ji,jj) < 0. ) THEN 
     
    145137               x_csdsst(ji,jj) = 0. 
    146138            ENDIF 
    147  
    148          ENDDO 
    149       ENDDO 
    150  
     139            ! 
     140         END DO 
     141      END DO 
     142      ! 
    151143   END SUBROUTINE diurnal_sst_coolskin_step 
    152144 
    153  
     145   !!====================================================================== 
    154146END MODULE cool_skin 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DIU/step_diu.F90

    r6017 r7280  
    6464      
    6565      ! Cool skin 
    66       IF ( .NOT.ln_diurnal ) CALL ctl_stop(  "stp_diurnal: ln_diurnal not set" ) 
     66      IF( .NOT.ln_diurnal )   CALL ctl_stop( "stp_diurnal: ln_diurnal not set" ) 
    6767          
    68       IF ( .NOT. ln_blk_core ) THEN 
    69          CALL ctl_stop("step.f90: diurnal flux processing only implemented"//& 
    70          &             " for core forcing")  
    71       ENDIF 
     68      IF( .NOT. ln_blk    )   CALL ctl_stop( "stp_diurnal: diurnal flux processing only implemented for bulk forcing" )  
    7269 
    7370      CALL diurnal_sst_coolskin_step( qns, taum, rhop(:,:,1), rdt) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90

    r7277 r7280  
    5353      LOGICAL, INTENT(in), OPTIONAL ::   ld_tradmp   ! force the initialization when tradp is used 
    5454      ! 
    55       INTEGER ::   ierr0, ierr1, ierr2, ierr3   ! temporary integers 
    56       ! 
     55      INTEGER ::   ios, ierr0, ierr1, ierr2, ierr3   ! local integers 
     56      !! 
    5757      CHARACTER(len=100)            ::   cn_dir          ! Root directory for location of ssr files 
    5858      TYPE(FLD_N), DIMENSION( jpts) ::   slf_i           ! array of namelist informations on the fields to read 
     
    6060      !! 
    6161      NAMELIST/namtsd/   ln_tsd_init, ln_tsd_tradmp, cn_dir, sn_tem, sn_sal 
    62       INTEGER  ::   ios 
    6362      !!---------------------------------------------------------------------- 
    6463      ! 
     
    117116         !                         ! fill sf_tsd with sn_tem & sn_sal and control print 
    118117         slf_i(jp_tem) = sn_tem   ;   slf_i(jp_sal) = sn_sal 
    119          CALL fld_fill( sf_tsd, slf_i, cn_dir, 'dta_tsd', 'Temperature & Salinity data', 'namtsd' ) 
     118         CALL fld_fill( sf_tsd, slf_i, cn_dir, 'dta_tsd', 'Temperature & Salinity data', 'namtsd', no_print ) 
    120119         ! 
    121120      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90

    r7277 r7280  
    104104 
    105105      IF(lwp) WRITE(numout,*) 
    106       IF(lwp) WRITE(numout,*) ' phy_cst : initialization of physical constants' 
    107       IF(lwp) WRITE(numout,*) ' ~~~~~~~' 
     106      IF(lwp) WRITE(numout,*) 'phy_cst : initialization of ocean parameters and constants' 
     107      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    108108 
    109109      ! Define & print constants 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90

    r6140 r7280  
    106106         WRITE(numout,*) 
    107107         WRITE(numout,*) 'dyn_adv_init : choice/control of the momentum advection scheme' 
    108          WRITE(numout,*) '~~~~~~~~~~~' 
    109          WRITE(numout,*) '       Namelist namdyn_adv : chose a advection formulation & scheme for momentum' 
    110          WRITE(numout,*) '          Vector/flux form (T/F)                           ln_dynadv_vec  = ', ln_dynadv_vec 
    111          WRITE(numout,*) '          = 0 standard scheme  ; =1 Hollingsworth scheme   nn_dynkeg      = ', nn_dynkeg 
    112          WRITE(numout,*) '          2nd order centred advection scheme               ln_dynadv_cen2 = ', ln_dynadv_cen2 
    113          WRITE(numout,*) '          3rd order UBS advection scheme                   ln_dynadv_ubs  = ', ln_dynadv_ubs 
    114          WRITE(numout,*) '          Sub timestepping of vertical advection           ln_dynzad_zts  = ', ln_dynzad_zts 
     108         WRITE(numout,*) '~~~~~~~~~~~~' 
     109         WRITE(numout,*) '   Namelist namdyn_adv : chose a advection formulation & scheme for momentum' 
     110         WRITE(numout,*) '      Vector/flux form (T/F)                           ln_dynadv_vec  = ', ln_dynadv_vec 
     111         WRITE(numout,*) '      = 0 standard scheme  ; =1 Hollingsworth scheme   nn_dynkeg      = ', nn_dynkeg 
     112         WRITE(numout,*) '      2nd order centred advection scheme               ln_dynadv_cen2 = ', ln_dynadv_cen2 
     113         WRITE(numout,*) '      3rd order UBS advection scheme                   ln_dynadv_ubs  = ', ln_dynadv_ubs 
     114         WRITE(numout,*) '      Sub timestepping of vertical advection           ln_dynzad_zts  = ', ln_dynzad_zts 
    115115      ENDIF 
    116116 
     
    134134      IF(lwp) THEN                    ! Print the choice 
    135135         WRITE(numout,*) 
    136          IF( nadv ==  0 )   WRITE(numout,*) '         vector form : keg + zad + vor is used'  
    137          IF( nadv ==  1 )   WRITE(numout,*) '         vector form : keg + zad_zts + vor is used' 
     136         IF( nadv ==  0 )   WRITE(numout,*) '      ===>>   vector form : keg + zad + vor is used'  
     137         IF( nadv ==  1 )   WRITE(numout,*) '      ===>>   vector form : keg + zad_zts + vor is used' 
    138138         IF( nadv ==  0 .OR. nadv ==  1 ) THEN 
    139             IF( nn_dynkeg == nkeg_C2  )   WRITE(numout,*) 'with Centered standard keg scheme' 
    140             IF( nn_dynkeg == nkeg_HW  )   WRITE(numout,*) 'with Hollingsworth keg scheme' 
     139            IF( nn_dynkeg == nkeg_C2  )   WRITE(numout,*) '              with Centered standard keg scheme' 
     140            IF( nn_dynkeg == nkeg_HW  )   WRITE(numout,*) '              with Hollingsworth keg scheme' 
    141141         ENDIF 
    142          IF( nadv ==  2 )   WRITE(numout,*) '         flux form   : 2nd order scheme is used' 
    143          IF( nadv ==  3 )   WRITE(numout,*) '         flux form   : UBS       scheme is used' 
     142         IF( nadv ==  2 )   WRITE(numout,*) '      ===>>   flux form   : 2nd order scheme is used' 
     143         IF( nadv ==  3 )   WRITE(numout,*) '      ===>>   flux form   : UBS       scheme is used' 
    144144      ENDIF 
    145145      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90

    r6140 r7280  
    110110         WRITE(numout,*) 
    111111         WRITE(numout,*) 'dyn_ldf_init : Choice of the lateral diffusive operator on dynamics' 
    112          WRITE(numout,*) '~~~~~~~~~~~' 
    113          WRITE(numout,*) '       Namelist nam_dynldf : set lateral mixing parameters (type, direction, coefficients)' 
    114          WRITE(numout,*) '          laplacian operator          ln_dynldf_lap = ', ln_dynldf_lap 
    115          WRITE(numout,*) '          bilaplacian operator        ln_dynldf_blp = ', ln_dynldf_blp 
    116          WRITE(numout,*) '          iso-level                   ln_dynldf_lev = ', ln_dynldf_lev 
    117          WRITE(numout,*) '          horizontal (geopotential)   ln_dynldf_hor = ', ln_dynldf_hor 
    118          WRITE(numout,*) '          iso-neutral                 ln_dynldf_iso = ', ln_dynldf_iso 
     112         WRITE(numout,*) '~~~~~~~~~~~~' 
     113         WRITE(numout,*) '   Namelist nam_dynldf : set lateral mixing parameters (type, direction, coefficients)' 
     114         WRITE(numout,*) '      laplacian operator          ln_dynldf_lap = ', ln_dynldf_lap 
     115         WRITE(numout,*) '      bilaplacian operator        ln_dynldf_blp = ', ln_dynldf_blp 
     116         WRITE(numout,*) '      iso-level                   ln_dynldf_lev = ', ln_dynldf_lev 
     117         WRITE(numout,*) '      horizontal (geopotential)   ln_dynldf_hor = ', ln_dynldf_hor 
     118         WRITE(numout,*) '      iso-neutral                 ln_dynldf_iso = ', ln_dynldf_iso 
    119119      ENDIF 
    120120      !                                   ! use of lateral operator or not 
     
    180180      IF(lwp) THEN 
    181181         WRITE(numout,*) 
    182          IF( nldf == np_no_ldf )   WRITE(numout,*) '              NO lateral viscosity' 
    183          IF( nldf == np_lap    )   WRITE(numout,*) '              iso-level laplacian operator' 
    184          IF( nldf == np_lap_i  )   WRITE(numout,*) '              rotated laplacian operator with iso-level background' 
    185          IF( nldf == np_blp    )   WRITE(numout,*) '              iso-level bi-laplacian operator' 
     182         IF( nldf == np_no_ldf )   WRITE(numout,*) '      ===>>   NO lateral viscosity' 
     183         IF( nldf == np_lap    )   WRITE(numout,*) '      ===>>   iso-level laplacian operator' 
     184         IF( nldf == np_lap_i  )   WRITE(numout,*) '      ===>>   rotated laplacian operator with iso-level background' 
     185         IF( nldf == np_blp    )   WRITE(numout,*) '      ===>>   iso-level bi-laplacian operator' 
    186186      ENDIF 
    187187      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r6140 r7280  
    216216      IF(lwp) THEN 
    217217         WRITE(numout,*) 
    218          IF( nspg == np_EXP )   WRITE(numout,*) '     explicit free surface' 
    219          IF( nspg == np_TS  )   WRITE(numout,*) '     free surface with time splitting scheme' 
    220          IF( nspg == np_NO  )   WRITE(numout,*) '     No surface surface pressure gradient trend in momentum Eqs.' 
     218         IF( nspg == np_EXP )   WRITE(numout,*) '      ===>>   explicit free surface' 
     219         IF( nspg == np_TS  )   WRITE(numout,*) '      ===>>   free surface with time splitting scheme' 
     220         IF( nspg == np_NO  )   WRITE(numout,*) '      ===>>   No surface surface pressure gradient trend in momentum Eqs.' 
    221221      ENDIF 
    222222      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r7277 r7280  
    626626         WRITE(numout,*) 'dyn_vor_init : vorticity term : read namelist and control the consistency' 
    627627         WRITE(numout,*) '~~~~~~~~~~~~' 
    628          WRITE(numout,*) '        Namelist namdyn_vor : choice of the vorticity term scheme' 
    629          WRITE(numout,*) '           energy    conserving scheme                    ln_dynvor_ene = ', ln_dynvor_ene 
    630          WRITE(numout,*) '           enstrophy conserving scheme                    ln_dynvor_ens = ', ln_dynvor_ens 
    631          WRITE(numout,*) '           mixed enstrophy/energy conserving scheme       ln_dynvor_mix = ', ln_dynvor_mix 
    632          WRITE(numout,*) '           enstrophy and energy conserving scheme         ln_dynvor_een = ', ln_dynvor_een 
    633          WRITE(numout,*) '              e3f = averaging /4 (=0) or /sum(tmask) (=1)    nn_een_e3f = ', nn_een_e3f 
    634          WRITE(numout,*) '           masked (=T) or unmasked(=F) vorticity          ln_dynvor_msk = ', ln_dynvor_msk 
     628         WRITE(numout,*) '   Namelist namdyn_vor : choice of the vorticity term scheme' 
     629         WRITE(numout,*) '      energy    conserving scheme                    ln_dynvor_ene = ', ln_dynvor_ene 
     630         WRITE(numout,*) '      enstrophy conserving scheme                    ln_dynvor_ens = ', ln_dynvor_ens 
     631         WRITE(numout,*) '      mixed enstrophy/energy conserving scheme       ln_dynvor_mix = ', ln_dynvor_mix 
     632         WRITE(numout,*) '      enstrophy and energy conserving scheme         ln_dynvor_een = ', ln_dynvor_een 
     633         WRITE(numout,*) '         e3f = averaging /4 (=0) or /sum(tmask) (=1)    nn_een_e3f = ', nn_een_e3f 
     634         WRITE(numout,*) '      masked (=T) or unmasked(=F) vorticity          ln_dynvor_msk = ', ln_dynvor_msk 
    635635      ENDIF 
    636636 
     
    639639      ! at angles with three ocean points and one land point 
    640640      IF(lwp) WRITE(numout,*) 
    641       IF(lwp) WRITE(numout,*) '           namlbc: change fmask value in the angles (T)   ln_vorlat = ', ln_vorlat 
     641      IF(lwp) WRITE(numout,*) '      change fmask value in the angles (T)           ln_vorlat = ', ln_vorlat 
    642642      IF( ln_vorlat .AND. ( ln_dynvor_ene .OR. ln_dynvor_ens .OR. ln_dynvor_mix ) ) THEN 
    643643         DO jk = 1, jpk 
     
    666666      ncor = np_COR 
    667667      IF( ln_dynadv_vec ) THEN      
    668          IF(lwp) WRITE(numout,*) '         Vector form advection : vorticity = Coriolis + relative vorticity' 
     668         IF(lwp) WRITE(numout,*) '      ===>>   Vector form advection : vorticity = Coriolis + relative vorticity' 
    669669         nrvm = np_RVO        ! relative vorticity 
    670670         ntot = np_CRV        ! relative + planetary vorticity 
    671671      ELSE                         
    672          IF(lwp) WRITE(numout,*) '         Flux form advection   : vorticity = Coriolis + metric term' 
     672         IF(lwp) WRITE(numout,*) '      ===>>   Flux form advection   : vorticity = Coriolis + metric term' 
    673673         nrvm = np_MET        ! metric term 
    674674         ntot = np_CME        ! Coriolis + metric term 
     
    677677      IF(lwp) THEN                   ! Print the choice 
    678678         WRITE(numout,*) 
    679          IF( nvor_scheme ==  np_ENE )   WRITE(numout,*) '         vorticity scheme ==>> energy conserving scheme' 
    680          IF( nvor_scheme ==  np_ENS )   WRITE(numout,*) '         vorticity scheme ==>> enstrophy conserving scheme' 
    681          IF( nvor_scheme ==  np_MIX )   WRITE(numout,*) '         vorticity scheme ==>> mixed enstrophy/energy conserving scheme' 
    682          IF( nvor_scheme ==  np_EEN )   WRITE(numout,*) '         vorticity scheme ==>> energy and enstrophy conserving scheme' 
     679         IF( nvor_scheme ==  np_ENE )   WRITE(numout,*) '      ===>>  energy conserving scheme' 
     680         IF( nvor_scheme ==  np_ENS )   WRITE(numout,*) '      ===>>  enstrophy conserving scheme' 
     681         IF( nvor_scheme ==  np_MIX )   WRITE(numout,*) '      ===>>  mixed enstrophy/energy conserving scheme' 
     682         IF( nvor_scheme ==  np_EEN )   WRITE(numout,*) '      ===>>  energy and enstrophy conserving scheme' 
    683683      ENDIF 
    684684      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90

    r6140 r7280  
    119119         WRITE(numout,*) 'dyn_zdf_init : vertical dynamics physics scheme' 
    120120         WRITE(numout,*) '~~~~~~~~~~~' 
    121          IF( nzdf ==  0 )   WRITE(numout,*) '              Explicit time-splitting scheme' 
    122          IF( nzdf ==  1 )   WRITE(numout,*) '              Implicit (euler backward) scheme' 
     121         IF( nzdf ==  0 )   WRITE(numout,*) '      ===>>   Explicit time-splitting scheme' 
     122         IF( nzdf ==  1 )   WRITE(numout,*) '      ===>>   Implicit (euler backward) scheme' 
    123123      ENDIF 
    124124      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90

    r7277 r7280  
    7575         WRITE(numout,*) 
    7676         WRITE(numout,*) 'wad_init : Wetting and drying initialization through namelist read' 
    77          WRITE(numout,*) '~~~~~~~ ' 
     77         WRITE(numout,*) '~~~~~~~~' 
    7878         WRITE(numout,*) '   Namelist namwad' 
    7979         WRITE(numout,*) '      Logical activation                 ln_wd      = ', ln_wd 
     
    268268      REAL(wp) ::   ztmp                ! local scalars 
    269269      REAL(wp), POINTER,  DIMENSION(:,:) ::   zwdlmtu, zwdlmtv         !: W/D flux limiters 
    270       REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxp,  zflxn            ! 2D workspace 
    271       REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! 2D workspace 
     270      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxp,  zflxn            ! local 2D workspace 
     271      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! local 2D workspace 
    272272      !!---------------------------------------------------------------------- 
    273273      ! 
     
    390390      ! 
    391391   END SUBROUTINE wad_lmt_bt 
    392     
     392 
    393393   !!============================================================================== 
    394394END MODULE wet_dry 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/ICB/icbini.F90

    r5215 r7280  
    372372      IF(lwp) THEN 
    373373         WRITE(numout,*) 
    374          WRITE(numout,*) 'icbini :   AGRIF is not compatible with namelist namberg :  ' 
    375          WRITE(numout,*) '         definition of rn_initial_mass(nclasses) with nclasses as PARAMETER ' 
    376          WRITE(numout,*) ' namelist namberg not read' 
     374         WRITE(numout,*) 'icbini : AGRIF is not compatible with namelist namberg :  ' 
     375         WRITE(numout,*) '~~~~~~   definition of rn_initial_mass(nclasses) with nclasses as PARAMETER ' 
     376         WRITE(numout,*) '         ==>>>   force  NO icebergs used. The namelist namberg is not read' 
    377377      ENDIF 
    378378      ln_icebergs = .false.       
     
    381381         IF(lwp) THEN 
    382382            WRITE(numout,*) 
    383             WRITE(numout,*) 'icbini :   Namelist namberg ln_icebergs = F , NO icebergs used' 
    384             WRITE(numout,*) '~~~~~~~~ ' 
     383            WRITE(numout,*) 'icbini : Namelist namberg ln_icebergs = F , NO icebergs used' 
     384            WRITE(numout,*) '~~~~~~ ' 
    385385         ENDIF 
    386386         RETURN 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90

    r7277 r7280  
    1717   IMPLICIT NONE 
    1818   PUBLIC 
    19   
     19 
    2020   !!---------------------------------------------------------------------- 
    2121   !!                   namrun namelist parameters 
     
    9595   !!                    output monitoring 
    9696   !!---------------------------------------------------------------------- 
    97    LOGICAL ::   ln_ctl       !: run control for debugging 
    98    INTEGER ::   nn_timing    !: run control for timing 
    99    INTEGER ::   nn_diacfl    !: flag whether to create CFL diagnostics 
    100    INTEGER ::   nn_print     !: level of print (0 no print) 
    101    INTEGER ::   nn_ictls     !: Start i indice for the SUM control 
    102    INTEGER ::   nn_ictle     !: End   i indice for the SUM control 
    103    INTEGER ::   nn_jctls     !: Start j indice for the SUM control 
    104    INTEGER ::   nn_jctle     !: End   j indice for the SUM control 
    105    INTEGER ::   nn_isplt     !: number of processors following i 
    106    INTEGER ::   nn_jsplt     !: number of processors following j 
    107    INTEGER ::   nn_bit_cmp   =    0    !: bit reproducibility (0/1) 
    108  
     97   LOGICAL ::   ln_ctl           !: run control for debugging 
     98   INTEGER ::   nn_timing        !: run control for timing 
     99   INTEGER ::   nn_diacfl        !: flag whether to create CFL diagnostics 
     100   INTEGER ::   nn_print         !: level of print (0 no print) 
     101   INTEGER ::   nn_ictls         !: Start i indice for the SUM control 
     102   INTEGER ::   nn_ictle         !: End   i indice for the SUM control 
     103   INTEGER ::   nn_jctls         !: Start j indice for the SUM control 
     104   INTEGER ::   nn_jctle         !: End   j indice for the SUM control 
     105   INTEGER ::   nn_isplt         !: number of processors following i 
     106   INTEGER ::   nn_jsplt         !: number of processors following j 
     107   INTEGER ::   nn_bench         !: benchmark parameter (0/1) 
     108   INTEGER ::   nn_bit_cmp = 0   !: bit reproducibility  (0/1) 
    109109   !                                           
    110110   INTEGER ::   nprint, nictls, nictle, njctls, njctle, isplt, jsplt    !: OLD namelist names 
     
    137137   !!                          Run control   
    138138   !!---------------------------------------------------------------------- 
     139   INTEGER       ::   no_print = 0          !: optional argument of fld_fill (if present, suppress some control print) 
    139140   INTEGER       ::   nstop = 0             !: error flag (=number of reason for a premature stop run) 
    140141   INTEGER       ::   nwarn = 0             !: warning flag (=number of warning found during the run) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90

    r7278 r7280  
    43034303            WRITE(kout,*) 
    43044304         ENDIF 
     4305         CALL FLUSH(kout)  
    43054306         STOP 'ctl_opn bad opening' 
    43064307      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90

    r7278 r7280  
    6565         WRITE(numout,*) 
    6666         WRITE(numout,*) 'mpp_init(2) : NO massively parallel processing' 
    67          WRITE(numout,*) '~~~~~~~~~~~: ' 
     67         WRITE(numout,*) '~~~~~~~~~~~ ' 
    6868         WRITE(numout,*) '         nperio = ', nperio 
    6969         WRITE(numout,*) '         npolj  = ', npolj 
     
    265265       
    266266      IF(lwp) WRITE(numout,*) 
    267       IF(lwp) WRITE(numout,*) ' mpp_init: defines mpp subdomains' 
    268       IF(lwp) WRITE(numout,*) ' ~~~~~~  ----------------------' 
    269       IF(lwp) WRITE(numout,*) 
    270       IF(lwp) WRITE(numout,*) 'iresti=',iresti,' irestj=',irestj 
    271       IF(lwp) WRITE(numout,*) 
    272       IF(lwp) WRITE(numout,*) 'jpni=',jpni,' jpnj=',jpnj 
     267      IF(lwp) WRITE(numout,*) '   defines mpp subdomains' 
     268      IF(lwp) WRITE(numout,*) '      jpni=', jpni, ' iresti=', iresti 
     269      IF(lwp) WRITE(numout,*) '      jpnj=', jpnj, ' irestj=', irestj 
    273270      zidom = nreci 
    274271      DO ji = 1, jpni 
     
    276273      END DO 
    277274      IF(lwp) WRITE(numout,*) 
    278       IF(lwp) WRITE(numout,*)' sum ilcit(i,1)=', zidom, ' jpiglo=', jpiglo 
     275      IF(lwp) WRITE(numout,*)'      sum ilcit(i,1)=', zidom, ' jpiglo=', jpiglo 
    279276 
    280277      zjdom = nrecj 
     
    282279         zjdom = zjdom + ilcjt(1,jj) - nrecj 
    283280      END DO 
    284       IF(lwp) WRITE(numout,*)' sum ilcit(1,j)=', zjdom, ' jpjglo=', jpjglo 
    285       IF(lwp) WRITE(numout,*) 
     281      IF(lwp) WRITE(numout,*)'      sum ilcit(1,j)=', zjdom, ' jpjglo=', jpjglo 
    286282 
    287283      IF(lwp) THEN 
     
    360356      njmpp  = njmppt(narea)   
    361357 
    362      ! Save processor layout in layout.dat file  
    363        IF (lwp) THEN 
    364         CALL ctl_opn( inum, 'layout.dat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., narea ) 
    365         WRITE(inum,'(a)') '   jpnij     jpi     jpj     jpk  jpiglo  jpjglo' 
    366         WRITE(inum,'(6i8)') jpnij,jpi,jpj,jpk,jpiglo,jpjglo 
    367         WRITE(inum,'(a)') 'NAREA nlci nlcj nldi nldj nlei nlej nimpp njmpp' 
    368  
    369         DO jn = 1, jpnij 
    370          WRITE(inum,'(9i5)') jn, nlcit(jn), nlcjt(jn), & 
    371                                       nldit(jn), nldjt(jn), & 
    372                                       nleit(jn), nlejt(jn), & 
    373                                       nimppt(jn), njmppt(jn) 
    374         END DO 
    375         CLOSE(inum)    
     358      ! Save processor layout in layout.dat file  
     359      IF(lwp) THEN 
     360         CALL ctl_opn( inum, 'layout.dat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE., narea ) 
     361         WRITE(inum,'(a)') '   jpnij     jpi     jpj     jpk  jpiglo  jpjglo' 
     362         WRITE(inum,'(6i8)') jpnij,jpi,jpj,jpk,jpiglo,jpjglo 
     363         WRITE(inum,'(a)') 'NAREA nlci nlcj nldi nldj nlei nlej nimpp njmpp' 
     364         ! 
     365         DO jn = 1, jpnij 
     366            WRITE(inum,'(9i5)') jn, nlcit(jn), nlcjt(jn), & 
     367               &                    nldit(jn), nldjt(jn), & 
     368               &                    nleit(jn), nlejt(jn), & 
     369               &                    nimppt(jn), njmppt(jn) 
     370         END DO 
     371         CLOSE(inum)    
    376372      END IF 
    377  
    378373 
    379374      ! w a r n i n g  narea (zone) /= nproc (processors)! 
     
    428423 
    429424      IF(lwp) THEN 
    430          WRITE(numout,*) ' nproc  = ', nproc 
    431          WRITE(numout,*) ' nowe   = ', nowe  , ' noea   =  ', noea 
    432          WRITE(numout,*) ' nono   = ', nono  , ' noso   =  ', noso 
    433          WRITE(numout,*) ' nbondi = ', nbondi 
    434          WRITE(numout,*) ' nbondj = ', nbondj 
    435          WRITE(numout,*) ' npolj  = ', npolj 
    436          WRITE(numout,*) ' nperio = ', nperio 
    437          WRITE(numout,*) ' nlci   = ', nlci 
    438          WRITE(numout,*) ' nlcj   = ', nlcj 
    439          WRITE(numout,*) ' nimpp  = ', nimpp 
    440          WRITE(numout,*) ' njmpp  = ', njmpp 
    441          WRITE(numout,*) ' nreci  = ', nreci  , ' npse   = ', npse 
    442          WRITE(numout,*) ' nrecj  = ', nrecj  , ' npsw   = ', npsw 
    443          WRITE(numout,*) ' jpreci = ', jpreci , ' npne   = ', npne 
    444          WRITE(numout,*) ' jprecj = ', jprecj , ' npnw   = ', npnw 
     425         WRITE(numout,*) '      nproc  = ', nproc 
     426         WRITE(numout,*) '      nowe   = ', nowe  , '      noea   =  ', noea 
     427         WRITE(numout,*) '      nono   = ', nono  , '      noso   =  ', noso 
     428         WRITE(numout,*) '      nbondi = ', nbondi, '      nbondj = ', nbondj 
     429         WRITE(numout,*) '      npolj  = ', npolj 
     430         WRITE(numout,*) '      nperio = ', nperio 
     431         WRITE(numout,*) '      nlci   = ', nlci  , '      nlcj   = ', nlcj 
     432         WRITE(numout,*) '      nimpp  = ', nimpp , '      njmpp  = ', njmpp 
     433         WRITE(numout,*) '      nreci  = ', nreci , '      npse   = ', npse 
     434         WRITE(numout,*) '      nrecj  = ', nrecj , '      npsw   = ', npsw 
     435         WRITE(numout,*) '      jpreci = ', jpreci, '      npne   = ', npne 
     436         WRITE(numout,*) '      jprecj = ', jprecj, '      npnw   = ', npnw 
    445437         WRITE(numout,*) 
    446438      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/LDF/ldfc1d_c2d.F90

    r6140 r7280  
    5959      REAL(wp) ::   zw    , zdep2   !   -      - 
    6060      !!---------------------------------------------------------------------- 
     61 
     62      IF(lwp) THEN 
     63         WRITE(numout,*) 
     64         WRITE(numout,*) '   ldf_c1d : set a given profile to eddy diffusivity/viscosity coefficients' 
     65         WRITE(numout,*) '   ~~~~~~~' 
     66      ENDIF 
    6167 
    6268      ! initialization of the profile 
     
    130136      ! 
    131137      IF(lwp) THEN 
    132          WRITE(numout,*) 'ldf_c2d :     aht = rn_aht0 *  max(e1,e2)/e_equator     (  laplacian) ' 
    133          WRITE(numout,*) '~~~~~~~       or  = rn_bht0 * [max(e1,e2)/e_equator]**3 (bilaplacian)' 
     138         WRITE(numout,*) 
     139         WRITE(numout,*) '   ldf_c2d :     aht = rn_aht0 *  max(e1,e2)/e_equator     (  laplacian) ' 
     140         WRITE(numout,*) '   ~~~~~~~       or  = rn_bht0 * [max(e1,e2)/e_equator]**3 (bilaplacian)' 
    134141         WRITE(numout,*) 
    135142      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/cyclone.F90

    r5215 r7280  
    2727   PRIVATE 
    2828 
    29    PUBLIC   wnd_cyc   ! routine called in sbcblk_core.F90 module 
     29   PUBLIC   wnd_cyc   ! routine called in sbcblk.F90 module 
    3030 
    3131   INTEGER , PARAMETER ::   jp_is1  = 1   ! index of presence 1 or absence 0 of a TC record 
     
    102102         sn_tc = FLD_N( 'tc_track',     6     ,  'tc'     ,  .true.    , .false. ,   'yearly'  , ''       , ''         , ''            ) 
    103103         ! 
    104          !  Namelist is read in namsbc_core 
     104         !  Namelist is read in namsbc_blk 
    105105         ! set sf structure 
    106106         ALLOCATE( sf(1), STAT=ierror ) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r6140 r7280  
    44   !! Ocean forcing:  read input field for surface boundary condition 
    55   !!===================================================================== 
    6    !! History :  2.0  !  06-2006  (S. Masson, G. Madec)  Original code 
    7    !!                 !  05-2008  (S. Alderson)  Modified for Interpolation in memory from input grid to model grid 
    8    !!                 !  10-2013  (D. Delrosso, P. Oddo)  suppression of land point prior to interpolation 
     6   !! History :  2.0  !  2006-06  (S. Masson, G. Madec)  Original code 
     7   !!            3.0  !  2008-05  (S. Alderson)  Modified for Interpolation in memory from input grid to model grid 
     8   !!            3.4  !  2013-10  (D. Delrosso, P. Oddo)  suppression of land point prior to interpolation 
    99   !!---------------------------------------------------------------------- 
    1010 
    1111   !!---------------------------------------------------------------------- 
    12    !!   fld_read      : read input fields used for the computation of the 
    13    !!                   surface boundary condition 
     12   !!   fld_read      : read input fields used for the computation of the surface boundary condition 
     13   !!   fld_init      : initialization of field read 
     14   !!   fld_rec       : determined the record(s) to be read 
     15   !!   fld_get       : read the data 
     16   !!   fld_map       : read global data from file and map onto local data using a general mapping (use for open boundaries) 
     17   !!   fld_rot       : rotate the vector fields onto the local grid direction 
     18   !!   fld_clopn     : update the data file name and close/open the files 
     19   !!   fld_fill      : fill the data structure with the associated information read in namelist 
     20   !!   wgt_list      : manage the weights used for interpolation 
     21   !!   wgt_print     : print the list of known weights 
     22   !!   fld_weight    : create a WGT structure and fill in data from file, restructuring as required 
     23   !!   apply_seaoverland : fill land with ocean values 
     24   !!   seaoverland   : create shifted matrices for seaoverland application 
     25   !!   fld_interp    : apply weights to input gridded data to create data on model grid 
     26   !!   ksec_week     : function returning the first 3 letters of the first day of the weekly file 
    1427   !!---------------------------------------------------------------------- 
    1528   USE oce            ! ocean dynamics and tracers 
     
    274287            IF( sd(jf)%ln_tint ) THEN              ! temporal interpolation 
    275288               IF(lwp .AND. kt - nit000 <= 100 ) THEN  
    276                   clfmt = "('fld_read: var ', a, ' kt = ', i8, ' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
     289                  clfmt = "('   fld_read: var ', a, ' kt = ', i8, ' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
    277290                     &    "', records b/a: ', i6.4, '/', i6.4, ' (days ', f9.4,'/', f9.4, ')')" 
    278291                  WRITE(numout, clfmt)  TRIM( sd(jf)%clvar ), kt, REAL(isecsbc,wp)/rday, nyear, nmonth, nday,   &             
    279292                     & sd(jf)%nrec_b(1), sd(jf)%nrec_a(1), REAL(sd(jf)%nrec_b(2),wp)/rday, REAL(sd(jf)%nrec_a(2),wp)/rday 
    280                   WRITE(numout, *) 'it_offset is : ',it_offset 
     293                  WRITE(numout, *) '      it_offset is : ',it_offset 
    281294               ENDIF 
    282295               ! temporal interpolation weights 
     
    286299            ELSE   ! nothing to do... 
    287300               IF(lwp .AND. kt - nit000 <= 100 ) THEN 
    288                   clfmt = "('fld_read: var ', a, ' kt = ', i8,' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
     301                  clfmt = "('   fld_read: var ', a, ' kt = ', i8,' (', f9.4,' days), Y/M/D = ', i4.4,'/', i2.2,'/', i2.2," //   & 
    289302                     &    "', record: ', i6.4, ' (days ', f9.4, ' <-> ', f9.4, ')')" 
    290303                  WRITE(numout, clfmt) TRIM(sd(jf)%clvar), kt, REAL(isecsbc,wp)/rday, nyear, nmonth, nday,    & 
     
    407420         CALL fld_get( sdjf, map )         ! read before data in after arrays(as we will swap it later) 
    408421         ! 
    409          clfmt = "('fld_init : time-interpolation for ', a, ' read previous record = ', i6, ' at time = ', f7.2, ' days')" 
     422         clfmt = "('   fld_init : time-interpolation for ', a, ' read previous record = ', i6, ' at time = ', f7.2, ' days')" 
    410423         IF(lwp) WRITE(numout, clfmt) TRIM(sdjf%clvar), sdjf%nrec_a(1), REAL(sdjf%nrec_a(2),wp)/rday 
    411424         ! 
     
    791804      !!                    ***  ROUTINE fld_clopn  *** 
    792805      !! 
    793       !! ** Purpose :   update the file name and open the file 
     806      !! ** Purpose :   update the file name and close/open the files 
    794807      !!---------------------------------------------------------------------- 
    795808      TYPE(FLD)        , INTENT(inout) ::   sdjf     ! input field related variables 
     
    882895 
    883896 
    884    SUBROUTINE fld_fill( sdf, sdf_n, cdir, cdcaller, cdtitle, cdnam ) 
     897   SUBROUTINE fld_fill( sdf, sdf_n, cdir, cdcaller, cdtitle, cdnam, knoprint ) 
    885898      !!--------------------------------------------------------------------- 
    886899      !!                    ***  ROUTINE fld_fill  *** 
    887900      !! 
    888       !! ** Purpose :   fill sdf with sdf_n and control print 
    889       !!---------------------------------------------------------------------- 
    890       TYPE(FLD)  , DIMENSION(:), INTENT(inout) ::   sdf        ! structure of input fields (file informations, fields read) 
    891       TYPE(FLD_N), DIMENSION(:), INTENT(in   ) ::   sdf_n      ! array of namelist information structures 
    892       CHARACTER(len=*)         , INTENT(in   ) ::   cdir       ! Root directory for location of flx files 
    893       CHARACTER(len=*)         , INTENT(in   ) ::   cdcaller   !  
    894       CHARACTER(len=*)         , INTENT(in   ) ::   cdtitle    !  
    895       CHARACTER(len=*)         , INTENT(in   ) ::   cdnam      !  
    896       ! 
    897       INTEGER  ::   jf       ! dummy indices 
     901      !! ** Purpose :   fill the data structure (sdf) with the associated information  
     902      !!              read in namelist (sdf_n) and control print 
     903      !!---------------------------------------------------------------------- 
     904      TYPE(FLD)  , DIMENSION(:)          , INTENT(inout) ::   sdf        ! structure of input fields (file informations, fields read) 
     905      TYPE(FLD_N), DIMENSION(:)          , INTENT(in   ) ::   sdf_n      ! array of namelist information structures 
     906      CHARACTER(len=*)                   , INTENT(in   ) ::   cdir       ! Root directory for location of flx files 
     907      CHARACTER(len=*)                   , INTENT(in   ) ::   cdcaller   ! name of the calling routine 
     908      CHARACTER(len=*)                   , INTENT(in   ) ::   cdtitle    ! description of the calling routine  
     909      CHARACTER(len=*)                   , INTENT(in   ) ::   cdnam      ! name of the namelist from which sdf_n comes 
     910      INTEGER                  , OPTIONAL, INTENT(in   ) ::   knoprint   ! no calling routine information printed 
     911      ! 
     912      INTEGER  ::   jf   ! dummy indices 
    898913      !!--------------------------------------------------------------------- 
    899914      ! 
     
    922937      IF(lwp) THEN      ! control print 
    923938         WRITE(numout,*) 
    924          WRITE(numout,*) TRIM( cdcaller )//' : '//TRIM( cdtitle ) 
    925          WRITE(numout,*) (/ ('~', jf = 1, LEN_TRIM( cdcaller ) ) /) 
    926          WRITE(numout,*) '          '//TRIM( cdnam )//' Namelist' 
    927          WRITE(numout,*) '          list of files and frequency (>0: in hours ; <0 in months)' 
     939         IF( .NOT.PRESENT( knoprint) ) THEN 
     940            WRITE(numout,*) TRIM( cdcaller )//' : '//TRIM( cdtitle ) 
     941            WRITE(numout,*) (/ ('~', jf = 1, LEN_TRIM( cdcaller ) ) /) 
     942         ENDIF 
     943         WRITE(numout,*) '   fld_fill : fill data structure with information from namelist '//TRIM( cdnam ) 
     944         WRITE(numout,*) '   ~~~~~~~~' 
     945         WRITE(numout,*) '      list of files and frequency (>0: in hours ; <0 in months)' 
    928946         DO jf = 1, SIZE(sdf) 
    929             WRITE(numout,*) '               root filename: '  , TRIM( sdf(jf)%clrootname ),   & 
    930                &                          ' variable name: '  , TRIM( sdf(jf)%clvar      ) 
    931             WRITE(numout,*) '               frequency: '      ,       sdf(jf)%nfreqh      ,   & 
    932                &                          ' time interp: '    ,       sdf(jf)%ln_tint     ,   & 
    933                &                          ' climatology: '    ,       sdf(jf)%ln_clim     ,   & 
    934                &                          ' weights    : '    , TRIM( sdf(jf)%wgtname    ),   & 
    935                &                          ' pairing    : '    , TRIM( sdf(jf)%vcomp      ),   & 
    936                &                          ' data type: '      ,       sdf(jf)%cltype      ,   & 
    937                &                          ' land/sea mask:'   , TRIM( sdf(jf)%lsmname    ) 
     947            WRITE(numout,*) '      root filename: '  , TRIM( sdf(jf)%clrootname ), '   variable name: ', TRIM( sdf(jf)%clvar ) 
     948            WRITE(numout,*) '         frequency: '      ,       sdf(jf)%nfreqh      ,   & 
     949               &                  '   time interp: '    ,       sdf(jf)%ln_tint     ,   & 
     950               &                  '   climatology: '    ,       sdf(jf)%ln_clim 
     951            WRITE(numout,*) '         weights: '        , TRIM( sdf(jf)%wgtname    ),   & 
     952               &                  '   pairing: '        , TRIM( sdf(jf)%vcomp      ),   & 
     953               &                  '   data type: '      ,       sdf(jf)%cltype      ,   & 
     954               &                  '   land/sea mask:'   , TRIM( sdf(jf)%lsmname    ) 
    938955            call flush(numout) 
    939956         END DO 
     
    947964      !!                    ***  ROUTINE wgt_list  *** 
    948965      !! 
    949       !! ** Purpose :   search array of WGTs and find a weights file 
    950       !!                entry, or return a new one adding it to the end 
    951       !!                if it is a new entry, the weights data is read in and 
    952       !!                restructured (fld_weight) 
     966      !! ** Purpose :   search array of WGTs and find a weights file entry, 
     967      !!                or return a new one adding it to the end if new entry. 
     968      !!                the weights data is read in and restructured (fld_weight) 
    953969      !!---------------------------------------------------------------------- 
    954970      TYPE( FLD ), INTENT(in   ) ::   sd        ! field with name of weights file 
     
    10191035      !!                    ***  ROUTINE fld_weight  *** 
    10201036      !! 
    1021       !! ** Purpose :   create a new WGT structure and fill in data from   
    1022       !!                file, restructuring as required 
     1037      !! ** Purpose :   create a new WGT structure and fill in data from file, 
     1038      !!              restructuring as required 
    10231039      !!---------------------------------------------------------------------- 
    10241040      TYPE( FLD ), INTENT(in) ::   sd   ! field with name of weights file 
     
    11631179 
    11641180   SUBROUTINE apply_seaoverland( clmaskfile, zfieldo, jpi1_lsm, jpi2_lsm, jpj1_lsm,   & 
    1165                           &      jpj2_lsm, itmpi, itmpj, itmpz, rec1_lsm, recn_lsm ) 
     1181      &                          jpj2_lsm, itmpi, itmpj, itmpz, rec1_lsm, recn_lsm ) 
    11661182      !!--------------------------------------------------------------------- 
    11671183      !!                    ***  ROUTINE apply_seaoverland  *** 
     
    14921508      !!                    ***  FUNCTION kshift_week ***  
    14931509      !! 
    1494       !! ** Purpose :   
    1495       !!--------------------------------------------------------------------- 
    1496       CHARACTER(len=*), INTENT(in)   ::   cdday   !3 first letters of the first day of the weekly file 
    1497       !! 
    1498       INTEGER                        ::   ksec_week  ! output variable 
    1499       INTEGER                        ::   ijul       !temp variable 
    1500       INTEGER                        ::   ishift     !temp variable 
     1510      !! ** Purpose :   return the first 3 letters of the first day of the weekly file 
     1511      !!--------------------------------------------------------------------- 
     1512      CHARACTER(len=*), INTENT(in)   ::   cdday   ! first 3 letters of the first day of the weekly file 
     1513      !! 
     1514      INTEGER                        ::   ksec_week      ! output variable 
     1515      INTEGER                        ::   ijul, ishift   ! local integer 
    15011516      CHARACTER(len=3),DIMENSION(7)  ::   cl_week  
    15021517      !!---------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r7277 r7280  
    1010   !!            3.3  ! 2010-10  (J. Chanut, C. Bricaud)  add the surface pressure forcing 
    1111   !!            4.0  ! 2012-05  (C. Rousset) add attenuation coef for use in ice model  
     12   !!            4.0  ! 2016-06  (L. Brodeau) new unified bulk routine (based on AeroBulk) 
    1213   !!---------------------------------------------------------------------- 
    1314 
     
    3132   !                                   !!* namsbc namelist * 
    3233   LOGICAL , PUBLIC ::   ln_usr         !: user defined formulation 
    33    LOGICAL , PUBLIC ::   ln_flx         !: flux         formulation 
    34    LOGICAL , PUBLIC ::   ln_blk_clio    !: CLIO bulk    formulation 
    35    LOGICAL , PUBLIC ::   ln_blk_core    !: CORE bulk    formulation 
    36    LOGICAL , PUBLIC ::   ln_blk_mfs     !: MFS  bulk    formulation 
     34   LOGICAL , PUBLIC ::   ln_flx         !: flux      formulation 
     35   LOGICAL , PUBLIC ::   ln_blk         !: bulk formulation 
    3736#if defined key_oasis3 
    3837   LOGICAL , PUBLIC ::   lk_oasis = .TRUE.  !: OASIS used 
     
    7473   INTEGER , PUBLIC, PARAMETER ::   jp_usr     = 1        !: user defined                  formulation 
    7574   INTEGER , PUBLIC, PARAMETER ::   jp_flx     = 2        !: flux                          formulation 
    76    INTEGER , PUBLIC, PARAMETER ::   jp_clio    = 3        !: CLIO bulk                     formulation 
    77    INTEGER , PUBLIC, PARAMETER ::   jp_core    = 4        !: CORE bulk                     formulation 
     75   INTEGER , PUBLIC, PARAMETER ::   jp_blk     = 4        !: bulk                          formulation 
    7876   INTEGER , PUBLIC, PARAMETER ::   jp_purecpl = 5        !: Pure ocean-atmosphere Coupled formulation 
    79    INTEGER , PUBLIC, PARAMETER ::   jp_mfs     = 6        !: MFS  bulk                     formulation 
    8077   INTEGER , PUBLIC, PARAMETER ::   jp_none    = 7        !: for OPA when doing coupling via SAS module 
    8178    
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r6140 r7280  
    2424   USE sbc_oce         ! Surface boundary condition: ocean fields 
    2525   USE sbc_ice         ! Surface boundary condition: ice   fields 
    26    USE sbcblk_core     ! Surface boundary condition: CORE bulk 
     26   USE sbcblk          ! Surface boundary condition: bulk 
    2727   USE sbccpl 
    2828 
     
    191191            CALL ctl_stop( 'STOP', 'cice_sbc_init : Forcing option requires calc_strair=F and calc_Tsfc=F in ice_in' ) 
    192192         ENDIF 
    193       ELSEIF (ksbc == jp_core) THEN 
     193      ELSEIF (ksbc == jp_blk) THEN 
    194194         IF ( .NOT. (calc_strair .AND. calc_Tsfc) ) THEN 
    195195            CALL ctl_stop( 'STOP', 'cice_sbc_init : Forcing option requires calc_strair=T and calc_Tsfc=T in ice_in' ) 
     
    392392         ENDDO 
    393393 
    394       ELSE IF (ksbc == jp_core) THEN 
    395  
    396 ! Pass CORE forcing fields to CICE (which will calculate heat fluxes etc itself) 
     394      ELSE IF (ksbc == jp_blk) THEN 
     395 
     396! Pass bulk forcing fields to CICE (which will calculate heat fluxes etc itself) 
    397397! x comp and y comp of atmosphere surface wind (CICE expects on T points) 
    398398         ztmp(:,:) = wndi_ice(:,:) 
     
    585585! Better to use evap and tprecip? (but for now don't read in evap in this case) 
    586586         emp(:,:)  = emp(:,:)+fr_i(:,:)*(tprecip(:,:)-sprecip(:,:)) 
    587       ELSE IF (ksbc == jp_core) THEN 
     587      ELSE IF (ksbc == jp_blk) THEN 
    588588         emp(:,:)  = (1.0-fr_i(:,:))*emp(:,:)         
    589589      ELSE IF (ksbc == jp_purecpl) THEN 
     
    618618! Scale qsr and qns according to ice fraction (bulk formulae only) 
    619619 
    620       IF (ksbc == jp_core) THEN 
     620      IF (ksbc == jp_blk) THEN 
    621621         qsr(:,:)=qsr(:,:)*(1.0-fr_i(:,:)) 
    622622         qns(:,:)=qns(:,:)*(1.0-fr_i(:,:)) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r7278 r7280  
    1313   !!             -   ! 2012-10  (C. Rousset)  add lim_diahsb 
    1414   !!            3.6  ! 2014-07  (M. Vancoppenolle, G. Madec, O. Marti) revise coupled interface 
     15   !!            4.0  ! 2016-06  (L. Brodeau) new unified bulk routine (based on AeroBulk) 
    1516   !!---------------------------------------------------------------------- 
    1617#if defined key_lim3 
     
    2829   USE sbc_oce         ! Surface boundary condition: ocean fields 
    2930   USE sbc_ice         ! Surface boundary condition: ice   fields 
    30    USE sbcblk_core     ! Surface boundary condition: CORE bulk 
    31    USE sbcblk_clio     ! Surface boundary condition: CLIO bulk 
     31   USE sbcblk          ! Surface boundary condition: bulk 
    3232   USE sbccpl          ! Surface boundary condition: coupled interface 
    3333   USE albedo          ! ocean & ice albedo 
     
    4747   USE limupdate2      ! update of global variables 
    4848   USE limvar          ! Ice variables switch 
    49    USE limctl          !  
     49   USE limctl          ! 
    5050   USE limmsh          ! LIM mesh 
    5151   USE limistate       ! LIM initial state 
     
    5656   USE iom             ! I/O manager library 
    5757   USE prtctl          ! Print control 
    58    USE lib_fortran     !  
     58   USE lib_fortran     ! 
    5959   USE lbclnk          ! lateral boundary condition - MPP link 
    6060   USE lib_mpp         ! MPP library 
     
    6262   USE timing          ! Timing 
    6363 
    64 #if defined key_bdy  
     64#if defined key_bdy 
    6565   USE bdyice_lim       ! unstructured open boundary data  (bdy_ice_lim routine) 
    6666#endif 
     
    7171   PUBLIC sbc_ice_lim  ! routine called by sbcmod.F90 
    7272   PUBLIC sbc_lim_init ! routine called by sbcmod.F90 
    73     
     73 
    7474   !! * Substitutions 
    7575#  include "vectopt_loop_substitute.h90" 
     
    8484      !!--------------------------------------------------------------------- 
    8585      !!                  ***  ROUTINE sbc_ice_lim  *** 
    86       !!                    
    87       !! ** Purpose :   update the ocean surface boundary condition via the  
    88       !!                Louvain la Neuve Sea Ice Model time stepping  
     86      !! 
     87      !! ** Purpose :   update the ocean surface boundary condition via the 
     88      !!                Louvain la Neuve Sea Ice Model time stepping 
    8989      !! 
    9090      !! ** Method  :   ice model time stepping 
    91       !!              - call the ice dynamics routine  
    92       !!              - call the ice advection/diffusion routine  
    93       !!              - call the ice thermodynamics routine  
    94       !!              - call the routine that computes mass and  
     91      !!              - call the ice dynamics routine 
     92      !!              - call the ice advection/diffusion routine 
     93      !!              - call the ice thermodynamics routine 
     94      !!              - call the routine that computes mass and 
    9595      !!                heat fluxes at the ice/ocean interface 
    96       !!              - save the outputs  
     96      !!              - save the outputs 
    9797      !!              - save the outputs for restart when necessary 
    9898      !! 
    9999      !! ** Action  : - time evolution of the LIM sea-ice model 
    100100      !!              - update all sbc variables below sea-ice: 
    101       !!                utau, vtau, taum, wndm, qns , qsr, emp , sfx  
     101      !!                utau, vtau, taum, wndm, qns , qsr, emp , sfx 
    102102      !!--------------------------------------------------------------------- 
    103103      INTEGER, INTENT(in) ::   kt      ! ocean time step 
    104       INTEGER, INTENT(in) ::   kblk    ! type of bulk (=3 CLIO, =4 CORE, =5 COUPLED) 
     104      INTEGER, INTENT(in) ::   kblk    ! type of bulk (=4 BULK, =5 COUPLED) 
    105105      !! 
    106106      INTEGER  ::    jl                 ! dummy loop index 
    107107      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   zalb_os, zalb_cs  ! ice albedo under overcast/clear sky 
    108       REAL(wp), POINTER, DIMENSION(:,:  )   ::   zutau_ice, zvtau_ice  
     108      REAL(wp), POINTER, DIMENSION(:,:  )   ::   zutau_ice, zvtau_ice 
    109109      !!---------------------------------------------------------------------- 
    110110 
     
    119119         u_oce(:,:) = ssu_m(:,:) * umask(:,:,1) 
    120120         v_oce(:,:) = ssv_m(:,:) * vmask(:,:,1) 
    121           
     121 
    122122         ! masked sea surface freezing temperature [Kelvin] (set to rt0 over land) 
    123123         CALL eos_fzp( sss_m(:,:) , t_bo(:,:) ) 
    124124         t_bo(:,:) = ( t_bo(:,:) + rt0 ) * tmask(:,:,1) + rt0 * ( 1._wp - tmask(:,:,1) ) 
    125            
     125 
    126126         ! Mask sea ice surface temperature (set to rt0 over land) 
    127127         DO jl = 1, jpl 
    128128            t_su(:,:,jl) = t_su(:,:,jl) * tmask(:,:,1) + rt0 * ( 1._wp - tmask(:,:,1) ) 
    129          END DO      
    130          ! 
    131          !------------------------------------------------!                                            
    132          ! --- Dynamical coupling with the atmosphere --- !                                            
     129         END DO 
     130         ! 
     131         !------------------------------------------------! 
     132         ! --- Dynamical coupling with the atmosphere --- ! 
    133133         !------------------------------------------------! 
    134134         ! It provides the following fields: 
     
    136136         !----------------------------------------------------------------- 
    137137         SELECT CASE( kblk ) 
    138          CASE( jp_clio    )   ;   CALL blk_ice_clio_tau                         ! CLIO bulk formulation             
    139          CASE( jp_core    )   ;   CALL blk_ice_core_tau                         ! CORE bulk formulation 
     138         CASE( jp_blk     )   ;   CALL blk_ice_tau                              ! Bulk formulation 
    140139         CASE( jp_purecpl )   ;   CALL sbc_cpl_ice_tau( utau_ice , vtau_ice )   ! Coupled   formulation 
    141140         END SELECT 
    142           
     141 
    143142         IF( ln_mixcpl) THEN   ! Case of a mixed Bulk/Coupled formulation 
    144143            CALL wrk_alloc( jpi,jpj    , zutau_ice, zvtau_ice) 
     
    153152         !-------------------------------------------------------! 
    154153         numit = numit + nn_fsbc                  ! Ice model time step 
    155          !                                                    
     154         ! 
    156155         CALL sbc_lim_bef                         ! Store previous ice values 
    157156         CALL sbc_lim_diag0                       ! set diag of mass, heat and salt fluxes to 0 
     
    160159         IF( .NOT. lk_c1d ) THEN 
    161160            ! 
    162             CALL lim_dyn( kt )                    ! Ice dynamics    ( rheology/dynamics )    
     161            CALL lim_dyn( kt )                    ! Ice dynamics    ( rheology/dynamics ) 
    163162            ! 
    164163            CALL lim_trp( kt )                    ! Ice transport   ( Advection/diffusion ) 
     
    167166            ! 
    168167#if defined key_bdy 
    169             CALL bdy_ice_lim( kt )                ! bdy ice thermo  
     168            CALL bdy_ice_lim( kt )                ! bdy ice thermo 
    170169            IF( ln_icectl )       CALL lim_prt( kt, iiceprt, jiceprt, 1, ' - ice thermo bdy - ' ) 
    171170#endif 
     
    174173            ! 
    175174         ENDIF 
    176           
     175 
    177176         ! previous lead fraction and ice volume for flux calculations 
    178          CALL sbc_lim_bef                         
     177         CALL sbc_lim_bef 
    179178         CALL lim_var_glo2eqv                     ! ht_i and ht_s for ice albedo calculation 
    180          CALL lim_var_agg(1)                      ! at_i for coupling (via pfrld)  
     179         CALL lim_var_agg(1)                      ! at_i for coupling (via pfrld) 
    181180         pfrld(:,:)   = 1._wp - at_i(:,:) 
    182181         phicif(:,:)  = vt_i(:,:) 
    183           
    184          !------------------------------------------------------!                                            
    185          ! --- Thermodynamical coupling with the atmosphere --- !                                            
     182 
     183         !------------------------------------------------------! 
     184         ! --- Thermodynamical coupling with the atmosphere --- ! 
    186185         !------------------------------------------------------! 
    187186         ! It provides the following fields: 
     
    196195 
    197196         SELECT CASE( kblk ) 
    198          CASE( jp_clio )                                       ! CLIO bulk formulation 
    199             ! In CLIO the cloud fraction is read in the climatology and the all-sky albedo  
    200             ! (alb_ice) is computed within the bulk routine 
    201                                  CALL blk_ice_clio_flx( t_su, zalb_cs, zalb_os, alb_ice ) 
    202             IF( ln_mixcpl      ) CALL sbc_cpl_ice_flx( p_frld=pfrld, palbi=alb_ice, psst=sst_m, pist=t_su ) 
    203             IF( nn_limflx /= 2 ) CALL ice_lim_flx( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_limflx ) 
    204          CASE( jp_core )                                       ! CORE bulk formulation 
     197         CASE( jp_blk )                                       ! bulk formulation 
    205198            ! albedo depends on cloud fraction because of non-linear spectral effects 
    206199            alb_ice(:,:,:) = ( 1. - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:) 
    207                                  CALL blk_ice_core_flx( t_su, alb_ice ) 
     200                                 CALL blk_ice_flx( t_su, alb_ice ) 
    208201            IF( ln_mixcpl      ) CALL sbc_cpl_ice_flx( p_frld=pfrld, palbi=alb_ice, psst=sst_m, pist=t_su ) 
    209202            IF( nn_limflx /= 2 ) CALL ice_lim_flx( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_limflx ) 
     
    219212         ! --- ice thermodynamics --- ! 
    220213         !----------------------------! 
    221          CALL lim_thd( kt )                         ! Ice thermodynamics       
     214         CALL lim_thd( kt )                         ! Ice thermodynamics 
    222215         ! 
    223216         CALL lim_update2( kt )                     ! Corrections 
     
    225218         CALL lim_sbc_flx( kt )                     ! Update surface ocean mass, heat and salt fluxes 
    226219         ! 
    227          IF(ln_limdiaout) CALL lim_diahsb           ! Diagnostics and outputs  
    228          ! 
    229          CALL lim_wri( 1 )                          ! Ice outputs  
     220         IF(ln_limdiaout) CALL lim_diahsb           ! Diagnostics and outputs 
     221         ! 
     222         CALL lim_wri( 1 )                          ! Ice outputs 
    230223         ! 
    231224         IF( kt == nit000 .AND. ln_rstart )   & 
    232225            &             CALL iom_close( numrir )  ! close input ice restart file 
    233226         ! 
    234          IF( lrst_ice )   CALL lim_rst_write( kt )  ! Ice restart file  
     227         IF( lrst_ice )   CALL lim_rst_write( kt )  ! Ice restart file 
    235228         ! 
    236229         IF( ln_icectl )  CALL lim_ctl( kt )        ! alerts in case of model crash 
     
    248241      ! 
    249242   END SUBROUTINE sbc_ice_lim 
    250     
     243 
    251244 
    252245   SUBROUTINE sbc_lim_init 
     
    259252      !!---------------------------------------------------------------------- 
    260253      IF(lwp) WRITE(numout,*) 
    261       IF(lwp) WRITE(numout,*) 'sbc_ice_lim : update ocean surface boudary condition'  
     254      IF(lwp) WRITE(numout,*) 'sbc_ice_lim : update ocean surface boudary condition' 
    262255      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~   via Louvain la Neuve Ice Model (LIM-3) time stepping' 
    263256      ! 
    264       !                                ! Open the reference and configuration namelist files and namelist output file  
    265       CALL ctl_opn( numnam_ice_ref, 'namelist_ice_ref',    'OLD',     'FORMATTED', 'SEQUENTIAL', -1, numout, lwp )  
     257      !                                ! Open the reference and configuration namelist files and namelist output file 
     258      CALL ctl_opn( numnam_ice_ref, 'namelist_ice_ref',    'OLD',     'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 
    266259      CALL ctl_opn( numnam_ice_cfg, 'namelist_ice_cfg',    'OLD',     'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 
    267260      IF(lwm) CALL ctl_opn( numoni, 'output.namelist.ice', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, 1 ) 
    268261      ! 
    269       CALL ice_run                     ! set some ice run parameters 
     262      CALL lim_run_init                ! set some ice run parameters 
    270263      ! 
    271264      !                                ! Allocate the ice arrays 
     
    308301      CALL lim_var_glo2eqv 
    309302      ! 
    310       CALL lim_sbc_init                 ! ice surface boundary condition    
     303      CALL lim_sbc_init                 ! ice surface boundary condition 
    311304      ! 
    312305      fr_i(:,:)     = at_i(:,:)         ! initialisation of sea-ice fraction 
     
    318311            ELSE                             ;  rn_amax_2d(ji,jj) = rn_amax_s  ! SH 
    319312            ENDIF 
    320         ENDDO 
    321       ENDDO  
    322       ! 
    323       nstart = numit  + nn_fsbc       
    324       nitrun = nitend - nit000 + 1  
    325       nlast  = numit  + nitrun  
     313         END DO 
     314      END DO 
     315      ! 
     316      nstart = numit  + nn_fsbc 
     317      nitrun = nitend - nit000 + 1 
     318      nlast  = numit  + nitrun 
    326319      ! 
    327320      IF( nstock == 0 )   nstock = nlast + 1 
     
    330323 
    331324 
    332    SUBROUTINE ice_run 
     325   SUBROUTINE lim_run_init 
    333326      !!------------------------------------------------------------------- 
    334       !!                  ***  ROUTINE ice_run *** 
    335       !!                  
     327      !!                  ***  ROUTINE lim_run_init *** 
     328      !! 
    336329      !! ** Purpose :   Definition some run parameter for ice model 
    337330      !! 
    338       !! ** Method  :   Read the namicerun namelist and check the parameter  
     331      !! ** Method  :   Read the namicerun namelist and check the parameter 
    339332      !!              values called at the first timestep (nit000) 
    340333      !! 
     
    343336      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    344337      NAMELIST/namicerun/ jpl, nlay_i, nlay_s, cn_icerst_in, cn_icerst_indir, cn_icerst_out, cn_icerst_outdir,  & 
    345          &                ln_limdyn, rn_amax_n, rn_amax_s, ln_limdiahsb, ln_limdiaout, ln_icectl, iiceprt, jiceprt   
     338         &                ln_limdyn, rn_amax_n, rn_amax_s, ln_limdiahsb, ln_limdiaout, ln_icectl, iiceprt, jiceprt 
    346339      !!------------------------------------------------------------------- 
    347       !                     
     340      ! 
    348341      REWIND( numnam_ice_ref )              ! Namelist namicerun in reference namelist : Parameters for ice 
    349342      READ  ( numnam_ice_ref, namicerun, IOSTAT = ios, ERR = 901) 
     
    357350      IF(lwp) THEN                        ! control print 
    358351         WRITE(numout,*) 
    359          WRITE(numout,*) 'ice_run : ice share parameters for dynamics/advection/thermo of sea-ice' 
    360          WRITE(numout,*) ' ~~~~~~' 
    361          WRITE(numout,*) '   number of ice  categories                               = ', jpl 
    362          WRITE(numout,*) '   number of ice  layers                                   = ', nlay_i 
    363          WRITE(numout,*) '   number of snow layers                                   = ', nlay_s 
    364          WRITE(numout,*) '   switch for ice dynamics (1) or not (0)      ln_limdyn   = ', ln_limdyn 
    365          WRITE(numout,*) '   maximum ice concentration for NH                        = ', rn_amax_n  
    366          WRITE(numout,*) '   maximum ice concentration for SH                        = ', rn_amax_s 
    367          WRITE(numout,*) '   Diagnose heat/salt budget or not          ln_limdiahsb  = ', ln_limdiahsb 
    368          WRITE(numout,*) '   Output   heat/salt budget or not          ln_limdiaout  = ', ln_limdiaout 
    369          WRITE(numout,*) '   control prints in ocean.out for (i,j)=(iiceprt,jiceprt) = ', ln_icectl 
    370          WRITE(numout,*) '   i-index for control prints (ln_icectl=true)             = ', iiceprt 
    371          WRITE(numout,*) '   j-index for control prints (ln_icectl=true)             = ', jiceprt 
     352         WRITE(numout,*) 'lim_run_init : ice share parameters for dynamics/advection/thermo of sea-ice' 
     353         WRITE(numout,*) '~~~~~~~~~~~~' 
     354         WRITE(numout,*) '   Namelist namicerun' 
     355         WRITE(numout,*) '      number of ice  categories                               = ', jpl 
     356         WRITE(numout,*) '      number of ice  layers                                   = ', nlay_i 
     357         WRITE(numout,*) '      number of snow layers                                   = ', nlay_s 
     358         WRITE(numout,*) '      switch for ice dynamics (1) or not (0)      ln_limdyn   = ', ln_limdyn 
     359         WRITE(numout,*) '      maximum ice concentration for NH                        = ', rn_amax_n 
     360         WRITE(numout,*) '      maximum ice concentration for SH                        = ', rn_amax_s 
     361         WRITE(numout,*) '      Diagnose heat/salt budget or not          ln_limdiahsb  = ', ln_limdiahsb 
     362         WRITE(numout,*) '      Output   heat/salt budget or not          ln_limdiaout  = ', ln_limdiaout 
     363         WRITE(numout,*) '      control prints in ocean.out for (i,j)=(iiceprt,jiceprt) = ', ln_icectl 
     364         WRITE(numout,*) '      i-index for control prints (ln_icectl=true)             = ', iiceprt 
     365         WRITE(numout,*) '      j-index for control prints (ln_icectl=true)             = ', jiceprt 
    372366      ENDIF 
    373367      ! 
    374368      ! sea-ice timestep and inverse 
    375       rdt_ice   = nn_fsbc * rdt   
    376       r1_rdtice = 1._wp / rdt_ice  
     369      rdt_ice   = nn_fsbc * rdt 
     370      r1_rdtice = 1._wp / rdt_ice 
    377371 
    378372      ! inverse of nlay_i and nlay_s 
     
    384378#endif 
    385379      ! 
    386    END SUBROUTINE ice_run 
     380   END SUBROUTINE lim_run_init 
    387381 
    388382 
     
    414408      IF(lwp) THEN                        ! control print 
    415409         WRITE(numout,*) 
    416          WRITE(numout,*) 'ice_itd : ice cat distribution' 
    417          WRITE(numout,*) ' ~~~~~~' 
    418          WRITE(numout,*) '   shape of ice categories distribution                     nn_catbnd = ', nn_catbnd 
    419          WRITE(numout,*) '   mean ice thickness in the domain (used if nn_catbnd=2)   rn_himean = ', rn_himean 
     410         WRITE(numout,*) 'lim_itd_init : Initialization of ice cat distribution ' 
     411         WRITE(numout,*) '~~~~~~~~~~~~' 
     412         WRITE(numout,*) '   Namelist namiceitd' 
     413         WRITE(numout,*) '      shape of ice categories distribution                     nn_catbnd = ', nn_catbnd 
     414         WRITE(numout,*) '      mean ice thickness in the domain (used if nn_catbnd=2)   rn_himean = ', rn_himean 
    420415      ENDIF 
    421416      ! 
    422417      !---------------------------------- 
    423       !- Thickness categories boundaries  
     418      !- Thickness categories boundaries 
    424419      !---------------------------------- 
    425       IF(lwp) WRITE(numout,*) 
    426       IF(lwp) WRITE(numout,*) 'lim_itd_init : Initialization of ice cat distribution ' 
    427       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 
    428420      ! 
    429421      hi_max(:) = 0._wp 
     
    443435         zalpha = 0.05_wp 
    444436         zhmax  = 3._wp * rn_himean 
    445          DO jl = 1, jpl  
     437         DO jl = 1, jpl 
    446438            znum = jpl * ( zhmax+1 )**zalpha 
    447439            zden = REAL( jpl-jl , wp ) * ( zhmax + 1._wp )**zalpha + REAL( jl , wp ) 
     
    457449      hi_max(jpl) = 99._wp          ! set to a big value to ensure that all ice is thinner than hi_max(jpl) 
    458450      ! 
    459       IF(lwp) WRITE(numout,*) ' Thickness category boundaries ' 
    460       IF(lwp) WRITE(numout,*) ' hi_max ', hi_max(0:jpl) 
     451      IF(lwp) WRITE(numout,*) 
     452      IF(lwp) WRITE(numout,*) '      Thickness category boundaries ' 
     453      IF(lwp) WRITE(numout,*) '         hi_max ', hi_max(0:jpl) 
    461454      ! 
    462455   END SUBROUTINE lim_itd_init 
    463456 
    464     
     457 
    465458   SUBROUTINE ice_lim_flx( ptn_ice , palb_ice, pqns_ice ,    & 
    466459      &                    pqsr_ice, pdqn_ice, pevap_ice, pdevap_ice, k_limflx ) 
    467460      !!--------------------------------------------------------------------- 
    468461      !!                  ***  ROUTINE ice_lim_flx  *** 
    469       !!                    
     462      !! 
    470463      !! ** Purpose :   update the ice surface boundary condition by averaging and / or 
    471       !!                redistributing fluxes on ice categories                    
    472       !! 
    473       !! ** Method  :   average then redistribute  
    474       !! 
    475       !! ** Action  :    
     464      !!                redistributing fluxes on ice categories 
     465      !! 
     466      !! ** Method  :   average then redistribute 
     467      !! 
     468      !! ** Action  : 
    476469      !!--------------------------------------------------------------------- 
    477       INTEGER                   , INTENT(in   ) ::   k_limflx   ! =-1 do nothing; =0 average ;  
    478       !                                                         ! =1 average and redistribute ; =2 redistribute 
    479       REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   ptn_ice    ! ice surface temperature  
     470      INTEGER                   , INTENT(in   ) ::   k_limflx   ! =-1 do nothing; =0 average ; 
     471      !                                                         ! = 1 average and redistribute ; =2 redistribute 
     472      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   ptn_ice    ! ice surface temperature 
    480473      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   palb_ice   ! ice albedo 
    481474      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   pqns_ice   ! non solar flux 
     
    526519         CALL wrk_alloc( jpi,jpj, zalb_m, ztem_m ) 
    527520         ! 
    528          zalb_m(:,:) = fice_ice_ave ( palb_ice (:,:,:) )  
    529          ztem_m(:,:) = fice_ice_ave ( ptn_ice  (:,:,:) )  
     521         zalb_m(:,:) = fice_ice_ave ( palb_ice (:,:,:) ) 
     522         ztem_m(:,:) = fice_ice_ave ( ptn_ice  (:,:,:) ) 
    530523         DO jl = 1, jpl 
    531524            pqns_ice (:,:,jl) = pqns_ice (:,:,jl) + pdqn_ice  (:,:,jl) * ( ptn_ice(:,:,jl) - ztem_m(:,:) ) 
    532525            pevap_ice(:,:,jl) = pevap_ice(:,:,jl) + pdevap_ice(:,:,jl) * ( ptn_ice(:,:,jl) - ztem_m(:,:) ) 
    533             pqsr_ice (:,:,jl) = pqsr_ice (:,:,jl) * ( 1._wp - palb_ice(:,:,jl) ) / ( 1._wp - zalb_m(:,:) )  
     526            pqsr_ice (:,:,jl) = pqsr_ice (:,:,jl) * ( 1._wp - palb_ice(:,:,jl) ) / ( 1._wp - zalb_m(:,:) ) 
    534527         END DO 
    535528         ! 
     
    546539      !!                  ***  ROUTINE sbc_lim_bef  *** 
    547540      !! 
    548       !! ** purpose :  store ice variables at "before" time step  
     541      !! ** purpose :  store ice variables at "before" time step 
    549542      !!---------------------------------------------------------------------- 
    550543      a_i_b  (:,:,:)   = a_i  (:,:,:)     ! ice area 
    551544      e_i_b  (:,:,:,:) = e_i  (:,:,:,:)   ! ice thermal energy 
    552545      v_i_b  (:,:,:)   = v_i  (:,:,:)     ! ice volume 
    553       v_s_b  (:,:,:)   = v_s  (:,:,:)     ! snow volume  
     546      v_s_b  (:,:,:)   = v_s  (:,:,:)     ! snow volume 
    554547      e_s_b  (:,:,:,:) = e_s  (:,:,:,:)   ! snow thermal energy 
    555548      smv_i_b(:,:,:)   = smv_i(:,:,:)     ! salt content 
     
    557550      u_ice_b(:,:)     = u_ice(:,:) 
    558551      v_ice_b(:,:)     = v_ice(:,:) 
    559       !       
     552      ! 
    560553   END SUBROUTINE sbc_lim_bef 
    561554 
     
    569562      !!---------------------------------------------------------------------- 
    570563      sfx    (:,:) = 0._wp   ; 
    571       sfx_bri(:,:) = 0._wp   ;  
     564      sfx_bri(:,:) = 0._wp   ; 
    572565      sfx_sni(:,:) = 0._wp   ;   sfx_opw(:,:) = 0._wp 
    573566      sfx_bog(:,:) = 0._wp   ;   sfx_dyn(:,:) = 0._wp 
     
    580573      wfx_bom(:,:) = 0._wp   ;   wfx_sum(:,:) = 0._wp 
    581574      wfx_res(:,:) = 0._wp   ;   wfx_sub(:,:) = 0._wp 
    582       wfx_spr(:,:) = 0._wp   ;    
    583       ! 
    584       hfx_thd(:,:) = 0._wp   ;    
     575      wfx_spr(:,:) = 0._wp   ; 
     576      ! 
     577      hfx_thd(:,:) = 0._wp   ; 
    585578      hfx_snw(:,:) = 0._wp   ;   hfx_opw(:,:) = 0._wp 
    586579      hfx_bog(:,:) = 0._wp   ;   hfx_dyn(:,:) = 0._wp 
    587580      hfx_bom(:,:) = 0._wp   ;   hfx_sum(:,:) = 0._wp 
    588581      hfx_res(:,:) = 0._wp   ;   hfx_sub(:,:) = 0._wp 
    589       hfx_spr(:,:) = 0._wp   ;   hfx_dif(:,:) = 0._wp  
     582      hfx_spr(:,:) = 0._wp   ;   hfx_dif(:,:) = 0._wp 
    590583      hfx_err(:,:) = 0._wp   ;   hfx_err_rem(:,:) = 0._wp 
    591584      hfx_err_dif(:,:) = 0._wp 
     
    595588      afx_dyn(:,:) = 0._wp   ;   afx_thd(:,:) = 0._wp 
    596589      ! 
    597       diag_heat(:,:) = 0._wp ;   diag_smvi(:,:) = 0._wp ; 
    598       diag_vice(:,:) = 0._wp ;   diag_vsnw(:,:) = 0._wp ; 
     590      diag_heat(:,:) = 0._wp ;   diag_smvi(:,:) = 0._wp 
     591      diag_vice(:,:) = 0._wp ;   diag_vsnw(:,:) = 0._wp 
    599592      ! 
    600593   END SUBROUTINE sbc_lim_diag0 
    601594 
    602       
     595 
    603596   FUNCTION fice_cell_ave ( ptab ) 
    604597      !!-------------------------------------------------------------------------- 
     
    608601      REAL (wp), DIMENSION (jpi,jpj,jpl), INTENT (in) :: ptab 
    609602      INTEGER :: jl ! Dummy loop index 
    610        
    611       fice_cell_ave (:,:) = 0.0_wp 
     603 
     604      fice_cell_ave (:,:) = 0._wp 
    612605      DO jl = 1, jpl 
    613606         fice_cell_ave (:,:) = fice_cell_ave (:,:) + a_i (:,:,jl) * ptab (:,:,jl) 
    614607      END DO 
    615        
     608 
    616609   END FUNCTION fice_cell_ave 
    617     
    618     
     610 
     611 
    619612   FUNCTION fice_ice_ave ( ptab ) 
    620613      !!-------------------------------------------------------------------------- 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90

    r6140 r7280  
    2424   USE sbc_oce          ! Surface boundary condition: ocean fields 
    2525   USE sbc_ice          ! Surface boundary condition: ice   fields 
    26    USE sbcblk_core      ! Surface boundary condition: CORE bulk 
    27    USE sbcblk_clio      ! Surface boundary condition: CLIO bulk 
     26   USE sbcblk           ! Surface boundary condition: bulk 
    2827   USE sbccpl           ! Surface boundary condition: coupled interface 
    2928   USE albedo 
     
    9392      !!--------------------------------------------------------------------- 
    9493      INTEGER, INTENT(in) ::   kt      ! ocean time step 
    95       INTEGER, INTENT(in) ::   ksbc    ! type of sbc ( =3 CLIO bulk ; =4 CORE bulk ; =5 coupled ) 
     94      INTEGER, INTENT(in) ::   ksbc    ! type of sbc ( =4 bulk ; =5 coupled ) 
    9695      !! 
    9796      INTEGER  ::   ji, jj   ! dummy loop indices 
     
    161160 
    162161         SELECT CASE( ksbc ) 
    163          CASE( jp_core , jp_purecpl )   ! CORE and COUPLED bulk formulations 
     162         CASE( jp_blk , jp_purecpl )   ! BULK and COUPLED bulk formulations 
    164163 
    165164            ! albedo depends on cloud fraction because of non-linear spectral effects 
    166165            zalb_ice(:,:,:) = ( 1. - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:) 
    167             ! In CLIO the cloud fraction is read in the climatology and the all-sky albedo  
    168             ! (zalb_ice) is computed within the bulk routine 
    169166 
    170167         END SELECT 
     
    184181         ! 
    185182         SELECT CASE( ksbc ) 
    186          CASE( jp_clio )           ! CLIO bulk formulation 
    187 !           CALL blk_ice_clio( zsist, zalb_cs    , zalb_os    , zalb_ice   ,            & 
    188 !              &                      utau_ice   , vtau_ice   , qns_ice    , qsr_ice,   & 
    189 !              &                      qla_ice    , dqns_ice   , dqla_ice   ,            & 
    190 !              &                      tprecip    , sprecip    ,                         & 
    191 !              &                      fr1_i0     , fr2_i0     , cp_ice_msh , jpl  ) 
    192             CALL blk_ice_clio_tau 
    193             CALL blk_ice_clio_flx( zsist, zalb_cs, zalb_os, zalb_ice ) 
    194  
    195          CASE( jp_core )           ! CORE bulk formulation 
    196             CALL blk_ice_core_tau 
    197             CALL blk_ice_core_flx( zsist, zalb_ice ) 
    198  
     183         ! 
     184         CASE( jp_blk )           ! Bulk formulation 
     185            CALL blk_ice_tau 
     186            CALL blk_ice_flx( zsist, zalb_ice ) 
     187            ! 
    199188         CASE( jp_purecpl )            ! Coupled formulation : atmosphere-ice stress only (fluxes provided after ice dynamics) 
    200189            CALL sbc_cpl_ice_tau( utau_ice , vtau_ice ) 
     190            ! 
    201191         END SELECT 
    202192          
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r7278 r7280  
    1313   !!            3.4  ! 2011-11  (C. Harris) CICE added as an option 
    1414   !!            3.5  ! 2012-11  (A. Coward, G. Madec) Rethink of heat, mass and salt surface fluxes 
    15    !!            3.6  ! 2014-11  (P. Mathiot, C. Harris) add ice shelves melting                     
     15   !!            3.6  ! 2014-11  (P. Mathiot, C. Harris) add ice shelves melting 
     16   !!            4.0  ! 2016-06  (L. Brodeau) new general bulk formulation 
    1617   !!---------------------------------------------------------------------- 
    1718 
     
    3031   USE sbcssm         ! surface boundary condition: sea-surface mean variables 
    3132   USE sbcflx         ! surface boundary condition: flux formulation 
    32    USE sbcblk_clio    ! surface boundary condition: bulk formulation : CLIO 
    33    USE sbcblk_core    ! surface boundary condition: bulk formulation : CORE 
    34    USE sbcblk_mfs     ! surface boundary condition: bulk formulation : MFS 
     33   USE sbcblk         ! surface boundary condition: bulk formulation 
    3534   USE sbcice_if      ! surface boundary condition: ice-if sea-ice model 
    3635   USE sbcice_lim     ! surface boundary condition: LIM 3.0 sea-ice model 
    3736   USE sbcice_lim_2   ! surface boundary condition: LIM 2.0 sea-ice model 
    3837   USE sbcice_cice    ! surface boundary condition: CICE    sea-ice model 
    39    USE sbccpl         ! surface boundary condition: coupled florulation 
     38   USE sbccpl         ! surface boundary condition: coupled formulation 
    4039   USE cpl_oasis3     ! OASIS routines for coupling 
    4140   USE sbcssr         ! surface boundary condition: sea surface restoring 
     
    6362   PUBLIC   sbc        ! routine called by step.F90 
    6463   PUBLIC   sbc_init   ! routine called by opa.F90 
    65     
     64 
    6665   INTEGER ::   nsbc   ! type of surface boundary condition (deduced from namsbc informations) 
    67        
     66 
    6867   !!---------------------------------------------------------------------- 
    6968   !! NEMO/OPA 4.0 , NEMO-consortium (2016)  
     
    8584      !!              - nsbc: type of sbc 
    8685      !!---------------------------------------------------------------------- 
    87       INTEGER ::   icpt   ! local integer 
    88       !! 
    89       NAMELIST/namsbc/ nn_fsbc  , ln_usr   , ln_flx, ln_blk_clio, ln_blk_core, ln_blk_mfs,   & 
    90          &             ln_cpl   , ln_mixcpl, nn_components      , nn_limflx  ,               & 
    91          &             ln_traqsr, ln_dm2dc ,                                                 &   
    92          &             nn_ice   , nn_ice_embd,                                               & 
    93          &             ln_rnf   , ln_ssr   , ln_isf   , nn_fwb    , ln_apr_dyn,              & 
    94          &             ln_wave  ,                                                            & 
    95          &             nn_lsm    
    96       INTEGER  ::   ios 
    97       INTEGER  ::   ierr, ierr0, ierr1, ierr2, ierr3, jpm 
    98       LOGICAL  ::   ll_purecpl 
     86      INTEGER ::   ios, icpt                         ! local integer 
     87      LOGICAL ::   ll_purecpl, ll_opa, ll_not_nemo   ! local logical 
     88      !! 
     89      NAMELIST/namsbc/ nn_fsbc  ,                                                    & 
     90         &             ln_usr   , ln_flx   , ln_blk       ,                          & 
     91         &             ln_cpl   , ln_mixcpl, nn_components, nn_limflx,               & 
     92         &             nn_ice   , nn_ice_embd,                                       & 
     93         &             ln_traqsr, ln_dm2dc ,                                         & 
     94         &             ln_rnf   , nn_fwb   , ln_ssr       , ln_isf   , ln_apr_dyn,   & 
     95         &             ln_wave  ,                                                    & 
     96         &             nn_lsm 
    9997      !!---------------------------------------------------------------------- 
    10098      ! 
     
    105103      ENDIF 
    106104      ! 
    107       REWIND( numnam_ref )       ! Namelist namsbc in reference namelist : Surface boundary 
     105      !                       !**  read Surface Module namelist 
     106      REWIND( numnam_ref )          !* Namelist namsbc in reference namelist : Surface boundary 
    108107      READ  ( numnam_ref, namsbc, IOSTAT = ios, ERR = 901) 
    109108901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namsbc in reference namelist', lwp ) 
    110109      ! 
    111       REWIND( numnam_cfg )       ! Namelist namsbc in configuration namelist : Parameters of the run 
     110      REWIND( numnam_cfg )          !* Namelist namsbc in configuration namelist : Parameters of the run 
    112111      READ  ( numnam_cfg, namsbc, IOSTAT = ios, ERR = 902 ) 
    113112902   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namsbc in configuration namelist', lwp ) 
    114113      IF(lwm) WRITE( numond, namsbc ) 
    115114      ! 
    116       !                          ! overwrite namelist parameter using CPP key information 
     115      !                             !* overwrite namelist parameter using CPP key information 
    117116      IF( Agrif_Root() ) THEN                ! AGRIF zoom 
    118         IF( lk_lim2 )   nn_ice      = 2 
    119         IF( lk_lim3 )   nn_ice      = 3 
    120         IF( lk_cice )   nn_ice      = 4 
    121       ENDIF 
    122       ! 
    123       IF(lwp) THEN               ! Control print 
     117         IF( lk_lim2 )   nn_ice      = 2 
     118         IF( lk_lim3 )   nn_ice      = 3 
     119         IF( lk_cice )   nn_ice      = 4 
     120      ENDIF 
     121      ! 
     122      IF(lwp) THEN                  !* Control print 
    124123         WRITE(numout,*) '   Namelist namsbc (partly overwritten with CPP key setting)' 
    125          WRITE(numout,*) '      Frequency update of sbc (and ice)             nn_fsbc       = ', nn_fsbc 
     124         WRITE(numout,*) '      frequency update of sbc (and ice)             nn_fsbc       = ', nn_fsbc 
    126125         WRITE(numout,*) '      Type of air-sea fluxes : ' 
    127126         WRITE(numout,*) '         user defined formulation                   ln_usr        = ', ln_usr 
    128127         WRITE(numout,*) '         flux         formulation                   ln_flx        = ', ln_flx 
    129          WRITE(numout,*) '         CLIO bulk    formulation                   ln_blk_clio   = ', ln_blk_clio 
    130          WRITE(numout,*) '         CORE bulk    formulation                   ln_blk_core   = ', ln_blk_core 
    131          WRITE(numout,*) '         MFS  bulk    formulation                   ln_blk_mfs    = ', ln_blk_mfs 
     128         WRITE(numout,*) '         bulk         formulation                   ln_blk        = ', ln_blk 
    132129         WRITE(numout,*) '      Type of coupling (Ocean/Ice/Atmosphere) : ' 
    133130         WRITE(numout,*) '         ocean-atmosphere coupled formulation       ln_cpl        = ', ln_cpl 
    134          WRITE(numout,*) '         forced-coupled mixed formulation           ln_mixcpl     = ', ln_mixcpl 
     131         WRITE(numout,*) '         mixed forced-coupled     formulation       ln_mixcpl     = ', ln_mixcpl 
     132!!gm  lk_oasis is controlled by key_oasis3  ===>>>  It shoud be removed from the namelist  
    135133         WRITE(numout,*) '         OASIS coupling (with atm or sas)           lk_oasis      = ', lk_oasis 
    136134         WRITE(numout,*) '         components of your executable              nn_components = ', nn_components 
    137135         WRITE(numout,*) '         Multicategory heat flux formulation (LIM3) nn_limflx     = ', nn_limflx 
    138136         WRITE(numout,*) '      Sea-ice : ' 
    139          WRITE(numout,*) '         ice management in the sbc (=0/1/2/3)       nn_ice        = ', nn_ice  
     137         WRITE(numout,*) '         ice management in the sbc (=0/1/2/3)       nn_ice        = ', nn_ice 
    140138         WRITE(numout,*) '         ice-ocean embedded/levitating (=0/1/2)     nn_ice_embd   = ', nn_ice_embd 
    141139         WRITE(numout,*) '      Misc. options of sbc : ' 
    142140         WRITE(numout,*) '         Light penetration in temperature Eq.       ln_traqsr     = ', ln_traqsr 
    143          WRITE(numout,*) '            daily mean to diurnal cycle qsr            ln_dm2dc   = ', ln_dm2dc  
     141         WRITE(numout,*) '            daily mean to diurnal cycle qsr            ln_dm2dc   = ', ln_dm2dc 
    144142         WRITE(numout,*) '         Sea Surface Restoring on SST and/or SSS    ln_ssr        = ', ln_ssr 
    145143         WRITE(numout,*) '         FreshWater Budget control  (=0/1/2)        nn_fwb        = ', nn_fwb 
     
    149147         WRITE(numout,*) '         closed sea (=0/1) (set in namdom)          nn_closea     = ', nn_closea 
    150148         WRITE(numout,*) '         nb of iterations if land-sea-mask applied  nn_lsm        = ', nn_lsm 
    151          WRITE(numout,*) '         surface wave                               ln_wave       = ', ln_wave   
     149         WRITE(numout,*) '         surface wave                               ln_wave       = ', ln_wave 
    152150      ENDIF 
    153151      ! 
     
    157155         IF( MOD( rdt  , 2.  ) /= 0. )   CALL ctl_stop( 'the time step (in second) must be an even number'           ) 
    158156      ENDIF 
    159       ! 
    160       IF(lwp) THEN 
    161          WRITE(numout,*) 
    162          SELECT CASE ( nn_limflx )        ! LIM3 Multi-category heat flux formulation 
    163          CASE ( -1 )   ;   WRITE(numout,*) '   LIM3: use per-category fluxes (nn_limflx = -1) ' 
    164          CASE (  0 )   ;   WRITE(numout,*) '   LIM3: use average per-category fluxes (nn_limflx = 0) '  
    165          CASE (  1 )   ;   WRITE(numout,*) '   LIM3: use average then redistribute per-category fluxes (nn_limflx = 1) ' 
    166          CASE (  2 )   ;   WRITE(numout,*) '   LIM3: Redistribute a single flux over categories (nn_limflx = 2) ' 
     157      !                       !**  check option consistency 
     158      ! 
     159      IF(lwp) WRITE(numout,*)       !* Single / Multi - executable (NEMO / OPA+SAS)  
     160      SELECT CASE( nn_components ) 
     161      CASE( jp_iam_nemo ) 
     162         IF(lwp) WRITE(numout,*) '   NEMO configured as a single executable (i.e. including both OPA and Surface module' 
     163      CASE( jp_iam_opa  ) 
     164         IF(lwp) WRITE(numout,*) '   Multi executable configuration. Here, OPA component' 
     165         IF( .NOT.lk_oasis )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but key_oasis3 disabled' ) 
     166         IF( ln_cpl        )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_cpl = T in OPA'   ) 
     167         IF( ln_mixcpl     )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_mixcpl = T in OPA' ) 
     168      CASE( jp_iam_sas  ) 
     169         IF(lwp) WRITE(numout,*) '   Multi executable configuration. Here, SAS component' 
     170         IF( .NOT.lk_oasis )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but key_oasis3 disabled' ) 
     171         IF( ln_mixcpl     )   CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_mixcpl = T in OPA' ) 
     172      CASE DEFAULT 
     173         CALL ctl_stop( 'sbc_init : unsupported value for nn_components' ) 
     174      END SELECT 
     175      !                             !* coupled options 
     176      IF( ln_cpl ) THEN 
     177         IF( .NOT. lk_oasis )   CALL ctl_stop( 'sbc_init : coupled mode with an atmosphere model (ln_cpl=T)',   & 
     178            &                                  '           required to defined key_oasis3' ) 
     179      ENDIF 
     180      IF( ln_mixcpl ) THEN 
     181         IF( .NOT. lk_oasis )   CALL ctl_stop( 'sbc_init : mixed forced-coupled mode (ln_mixcpl=T) ',   & 
     182            &                                  '           required to defined key_oasis3' ) 
     183         IF( .NOT.ln_cpl    )   CALL ctl_stop( 'sbc_init : mixed forced-coupled mode (ln_mixcpl=T) requires ln_cpl = T' ) 
     184         IF( nn_components /= jp_iam_nemo )    & 
     185            &                   CALL ctl_stop( 'sbc_init : the mixed forced-coupled mode (ln_mixcpl=T) ',   & 
     186            &                                   '          not yet working with sas-opa coupling via oasis' ) 
     187      ENDIF 
     188      !                             !* sea-ice 
     189      SELECT CASE( nn_ice ) 
     190      CASE( 0 )                        !- no ice in the domain 
     191      CASE( 1 )                        !- Ice-cover climatology ("Ice-if" model)   
     192      CASE( 2 )                        !- LIM2 ice model 
     193         IF( .NOT.( ln_blk .OR. ln_cpl ) )   CALL ctl_stop( 'sbc_init : LIM2 sea-ice model requires ln_blk or ln_cpl = T' ) 
     194      CASE( 3 )                        !- LIM3 ice model 
     195         IF( .NOT.( ln_blk .OR. ln_cpl ) )   CALL ctl_stop( 'sbc_init : LIM3 sea-ice model requires ln_blk or ln_cpl = T' ) 
     196         IF( nn_ice_embd == 0            )   CALL ctl_stop( 'sbc_init : LIM3 sea-ice models require nn_ice_embd = 1 or 2' ) 
     197      CASE( 4 )                        !- CICE ice model 
     198         IF( .NOT.( ln_blk .OR. ln_cpl ) )   CALL ctl_stop( 'sbc_init : CICE sea-ice model requires ln_blk or ln_cpl = T' ) 
     199         IF( nn_ice_embd == 0            )   CALL ctl_stop( 'sbc_init : CICE sea-ice models require nn_ice_embd = 1 or 2' ) 
     200         IF( lk_agrif                    )   CALL ctl_stop( 'sbc_init : CICE sea-ice model not currently available with AGRIF' )  
     201      CASE DEFAULT                     !- not supported 
     202      END SELECT 
     203      ! 
     204      IF( nn_ice == 3 ) THEN           !- LIM3 case: multi-category flux option 
     205         IF(lwp) WRITE(numout,*) 
     206         SELECT CASE( nn_limflx )         ! LIM3 Multi-category heat flux formulation 
     207         CASE ( -1 ) 
     208            IF(lwp) WRITE(numout,*) '   LIM3: use per-category fluxes (nn_limflx = -1) ' 
     209            IF( ln_cpl )   CALL ctl_stop( 'sbc_init : the chosen nn_limflx for LIM3 in coupled mode must be 0 or 2' ) 
     210         CASE ( 0  ) 
     211            IF(lwp) WRITE(numout,*) '   LIM3: use average per-category fluxes (nn_limflx = 0) ' 
     212         CASE ( 1  ) 
     213            IF(lwp) WRITE(numout,*) '   LIM3: use average then redistribute per-category fluxes (nn_limflx = 1) ' 
     214            IF( ln_cpl )   CALL ctl_stop( 'sbc_init : the chosen nn_limflx for LIM3 in coupled mode must be 0 or 2' ) 
     215         CASE ( 2  ) 
     216            IF(lwp) WRITE(numout,*) '   LIM3: Redistribute a single flux over categories (nn_limflx = 2) ' 
     217            IF( .NOT.ln_cpl )   CALL ctl_stop( 'sbc_init : the chosen nn_limflx for LIM3 in forced mode cannot be 2' ) 
     218         CASE DEFAULT 
     219            CALL ctl_stop( 'sbcmod: LIM3 option, nn_limflx, should be between -1 and 2' ) 
    167220         END SELECT 
    168       ENDIF 
    169       ! 
    170       IF( nn_components /= jp_iam_nemo .AND. .NOT. lk_oasis )   & 
    171          &      CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but key_oasis3 disabled' ) 
    172       IF( nn_components == jp_iam_opa .AND. ln_cpl )   & 
    173          &      CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_cpl = T in OPA' ) 
    174       IF( nn_components == jp_iam_opa .AND. ln_mixcpl )   & 
    175          &      CALL ctl_stop( 'sbc_init : OPA-SAS coupled via OASIS, but ln_mixcpl = T in OPA' ) 
    176       IF( ln_cpl .AND. .NOT. lk_oasis )    & 
    177          &      CALL ctl_stop( 'sbc_init : OASIS-coupled atmosphere model, but key_oasis3 disabled' ) 
    178       IF( ln_mixcpl .AND. .NOT. lk_oasis )    & 
    179          &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl) requires the cpp key key_oasis3' ) 
    180       IF( ln_mixcpl .AND. .NOT. ln_cpl )    & 
    181          &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl) requires ln_cpl = T' ) 
    182       IF( ln_mixcpl .AND. nn_components /= jp_iam_nemo )    & 
    183          &      CALL ctl_stop( 'the forced-coupled mixed mode (ln_mixcpl) is not yet working with sas-opa coupling via oasis' ) 
    184  
    185       !                              ! allocate sbc arrays 
     221      ELSE                             ! other sea-ice model 
     222         IF( nn_limflx >= 0  )   CALL ctl_warn( 'sbc_init : multi-category flux option (nn_limflx) only available in LIM3' ) 
     223      ENDIF 
     224      ! 
     225      !                       !**  allocate and set required variables 
     226      ! 
     227      !                             !* allocate sbc arrays 
    186228      IF( sbc_oce_alloc() /= 0 )   CALL ctl_stop( 'sbc_init : unable to allocate sbc_oce arrays' ) 
    187  
    188       !                          ! Checks: 
    189       IF( .NOT. ln_isf ) THEN                      ! variable initialisation if no ice shelf  
     229      ! 
     230      IF( .NOT.ln_isf ) THEN        !* No ice-shelf in the domain : allocate and set to zero 
    190231         IF( sbc_isf_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'sbc_init : unable to allocate sbc_isf arrays' ) 
    191          fwfisf  (:,:)   = 0.0_wp ; fwfisf_b  (:,:)   = 0.0_wp 
    192          risf_tsc(:,:,:) = 0.0_wp ; risf_tsc_b(:,:,:) = 0.0_wp 
     232         fwfisf  (:,:)   = 0._wp   ;   risf_tsc  (:,:,:) = 0._wp 
     233         fwfisf_b(:,:)   = 0._wp   ;   risf_tsc_b(:,:,:) = 0._wp 
    193234      END IF 
    194       IF( nn_ice == 0 .AND. nn_components /= jp_iam_opa )   fr_i(:,:) = 0._wp    ! no ice in the domain, ice fraction is always zero 
    195  
    196       sfx(:,:) = 0._wp                             ! the salt flux due to freezing/melting will be computed (i.e. will be non-zero)  
    197                                                    ! only if sea-ice is present 
    198   
    199       fmmflx(:,:) = 0._wp                          ! freezing-melting array initialisation 
    200        
    201       taum(:,:) = 0._wp                            ! Initialise taum for use in gls in case of reduced restart 
    202  
    203       !                                            ! restartability    
    204       IF( ( nn_ice == 2 .OR. nn_ice ==3 ) .AND. .NOT.( ln_blk_clio .OR. ln_blk_core .OR. ln_cpl ) )   & 
    205          &   CALL ctl_stop( 'LIM sea-ice model requires a bulk formulation or coupled configuration' ) 
    206       IF( nn_ice == 4 .AND. .NOT.( ln_blk_core .OR. ln_cpl ) )   & 
    207          &   CALL ctl_stop( 'CICE sea-ice model requires ln_blk_core or ln_cpl' ) 
    208       IF( nn_ice == 4 .AND. lk_agrif )   & 
    209          &   CALL ctl_stop( 'CICE sea-ice model not currently available with AGRIF' ) 
    210       IF( ( nn_ice == 3 .OR. nn_ice == 4 ) .AND. nn_ice_embd == 0 )   & 
    211          &   CALL ctl_stop( 'LIM3 and CICE sea-ice models require nn_ice_embd = 1 or 2' ) 
    212       IF( ( nn_ice /= 3 ) .AND. ( nn_limflx >= 0 ) )   & 
    213          &   WRITE(numout,*) 'The nn_limflx>=0 option has no effect if sea ice model is not LIM3' 
    214       IF( ( nn_ice == 3 ) .AND. ( ln_cpl ) .AND. ( ( nn_limflx == -1 ) .OR. ( nn_limflx == 1 ) ) )   & 
    215          &   CALL ctl_stop( 'The chosen nn_limflx for LIM3 in coupled mode must be 0 or 2' ) 
    216       IF( ( nn_ice == 3 ) .AND. ( .NOT. ln_cpl ) .AND. ( nn_limflx == 2 ) )   & 
    217          &   CALL ctl_stop( 'The chosen nn_limflx for LIM3 in forced mode cannot be 2' ) 
    218  
    219       IF( ln_dm2dc )   nday_qsr = -1   ! initialisation flag 
    220  
    221       IF( ln_dm2dc .AND. .NOT.( ln_flx .OR. ln_blk_core ) .AND. nn_components /= jp_iam_opa )   & 
    222          &   CALL ctl_stop( 'diurnal cycle into qsr field from daily values requires a flux or core-bulk formulation' ) 
    223        
    224       !                          ! Choice of the Surface Boudary Condition (set nsbc) 
    225       ll_purecpl = ln_cpl .AND. .NOT. ln_mixcpl 
    226       ! 
     235      IF( nn_ice == 0 ) THEN        !* No sea-ice in the domain : ice fraction is always zero 
     236         IF( nn_components /= jp_iam_opa )   fr_i(:,:) = 0._wp    ! except for OPA in SAS-OPA coupled case 
     237      ENDIF 
     238      ! 
     239      sfx   (:,:) = 0._wp           !* salt flux due to freezing/melting 
     240      fmmflx(:,:) = 0._wp           !* freezing minus melting flux 
     241 
     242      taum(:,:) = 0._wp             !* wind stress module (needed in GLS in case of reduced restart) 
     243 
     244      IF( ln_dm2dc ) THEN           !* daily mean to diurnal cycle 
     245         nday_qsr = -1   ! allow initialization at the 1st call 
     246         IF( .NOT.( ln_flx .OR. ln_blk ) .AND. nn_components /= jp_iam_opa )   & 
     247            &   CALL ctl_stop( 'qsr diurnal cycle from daily values requires a flux or bulk formulation' ) 
     248      ENDIF 
     249 
     250      !                             !* Choice of the Surface Boudary Condition 
     251      !                             (set nsbc) 
     252      ! 
     253      ll_purecpl  = ln_cpl .AND. .NOT.ln_mixcpl 
     254      ll_opa      = nn_components == jp_iam_opa 
     255      ll_not_nemo = nn_components /= jp_iam_nemo 
    227256      icpt = 0 
     257      ! 
    228258      IF( ln_usr          ) THEN   ;   nsbc = jp_usr     ; icpt = icpt + 1   ;   ENDIF       ! user defined         formulation 
    229259      IF( ln_flx          ) THEN   ;   nsbc = jp_flx     ; icpt = icpt + 1   ;   ENDIF       ! flux                 formulation 
    230       IF( ln_blk_clio     ) THEN   ;   nsbc = jp_clio    ; icpt = icpt + 1   ;   ENDIF       ! CLIO bulk            formulation 
    231       IF( ln_blk_core     ) THEN   ;   nsbc = jp_core    ; icpt = icpt + 1   ;   ENDIF       ! CORE bulk            formulation 
    232       IF( ln_blk_mfs      ) THEN   ;   nsbc = jp_mfs     ; icpt = icpt + 1   ;   ENDIF       ! MFS  bulk            formulation 
     260      IF( ln_blk          ) THEN   ;   nsbc = jp_blk     ; icpt = icpt + 1   ;   ENDIF       ! bulk                 formulation 
    233261      IF( ll_purecpl      ) THEN   ;   nsbc = jp_purecpl ; icpt = icpt + 1   ;   ENDIF       ! Pure Coupled         formulation 
    234       IF( nn_components == jp_iam_opa )   & 
    235          &                  THEN   ;   nsbc = jp_none    ; icpt = icpt + 1   ;   ENDIF       ! opa coupling via SAS module 
    236       ! 
    237       IF( icpt /= 1 )    CALL ctl_stop( 'sbc_init: choose ONE and only ONE sbc option' ) 
    238       ! 
    239       IF(lwp) THEN 
     262      IF( ll_opa          ) THEN   ;   nsbc = jp_none    ; icpt = icpt + 1   ;   ENDIF       ! opa coupling via SAS module 
     263      ! 
     264      IF( icpt /= 1 )    CALL ctl_stop( 'sbc_init : choose ONE and only ONE sbc option' ) 
     265      ! 
     266      IF(lwp) THEN                     !- print the choice of surface flux formulation 
    240267         WRITE(numout,*) 
    241268         SELECT CASE( nsbc ) 
    242269         CASE( jp_usr     )   ;   WRITE(numout,*) '   user defined formulation' 
    243          CASE( jp_flx     )   ;   WRITE(numout,*) '   flux formulation' 
    244          CASE( jp_clio    )   ;   WRITE(numout,*) '   CLIO bulk formulation' 
    245          CASE( jp_core    )   ;   WRITE(numout,*) '   CORE bulk formulation' 
    246          CASE( jp_purecpl )   ;   WRITE(numout,*) '   pure coupled formulation' 
    247          CASE( jp_mfs     )   ;   WRITE(numout,*) '   MFS Bulk formulation' 
    248          CASE( jp_none    )   ;   WRITE(numout,*) '   OPA coupled to SAS via oasis' 
    249             IF( ln_mixcpl )       WRITE(numout,*) '       + forced-coupled mixed formulation' 
     270         CASE( jp_flx     )   ;   WRITE(numout,*) '      ===>>   flux formulation' 
     271         CASE( jp_blk     )   ;   WRITE(numout,*) '      ===>>   bulk formulation' 
     272         CASE( jp_purecpl )   ;   WRITE(numout,*) '      ===>>   pure coupled formulation' 
     273!!gm abusive use of jp_none ??   ===>>> need to be check and changed by adding a jp_sas parameter 
     274         CASE( jp_none    )   ;   WRITE(numout,*) '      ===>>   OPA coupled to SAS via oasis' 
     275            IF( ln_mixcpl )       WRITE(numout,*) '                  + forced-coupled mixed formulation' 
    250276         END SELECT 
    251          IF( nn_components/= jp_iam_nemo )  & 
    252             &                     WRITE(numout,*) '       + OASIS coupled SAS' 
    253       ENDIF 
    254       ! 
    255       IF( lk_oasis )   CALL sbc_cpl_init (nn_ice)   ! OASIS initialisation. must be done before: (1) first time step 
    256       !                                             !                                            (2) the use of nn_fsbc 
     277         IF( ll_not_nemo  )       WRITE(numout,*) '                  + OASIS coupled SAS' 
     278      ENDIF 
     279      ! 
     280      !                             !* OASIS initialization 
     281      ! 
     282      IF( lk_oasis )   CALL sbc_cpl_init( nn_ice )   ! Must be done before: (1) first time step 
     283      !                                              !                      (2) the use of nn_fsbc 
    257284      !     nn_fsbc initialization if OPA-SAS coupling via OASIS 
    258       !     sas model time step has to be declared in OASIS (mandatory) -> nn_fsbc has to be modified accordingly 
     285      !     SAS time-step has to be declared in OASIS (mandatory) -> nn_fsbc has to be modified accordingly 
    259286      IF( nn_components /= jp_iam_nemo ) THEN 
    260287         IF( nn_components == jp_iam_opa )   nn_fsbc = cpl_freq('O_SFLX') / NINT(rdt) 
     
    268295      ENDIF 
    269296      ! 
     297      !                             !* check consistency between model timeline and nn_fsbc 
    270298      IF( MOD( nitend - nit000 + 1, nn_fsbc) /= 0 .OR.   & 
    271           MOD( nstock             , nn_fsbc) /= 0 ) THEN  
    272          WRITE(ctmp1,*) 'experiment length (', nitend - nit000 + 1, ') or nstock (', nstock,   & 
     299          MOD( nstock             , nn_fsbc) /= 0 ) THEN 
     300         WRITE(ctmp1,*) 'sbc_init : experiment length (', nitend - nit000 + 1, ') or nstock (', nstock,   & 
    273301            &           ' is NOT a multiple of nn_fsbc (', nn_fsbc, ')' 
    274302         CALL ctl_stop( ctmp1, 'Impossible to properly do model restart' ) 
     
    276304      ! 
    277305      IF( MOD( rday, REAL(nn_fsbc, wp) * rdt ) /= 0 )   & 
    278          &  CALL ctl_warn( 'nn_fsbc is NOT a multiple of the number of time steps in a day' ) 
    279       ! 
    280       IF( ln_dm2dc .AND. ( ( NINT(rday) / ( nn_fsbc * NINT(rdt) ) )  < 8 ) )   & 
    281          &   CALL ctl_warn( 'diurnal cycle for qsr: the sampling of the diurnal cycle is too small...' ) 
    282       ! 
    283                           CALL sbc_ssm_init               ! Sea-surface mean fields initialisation 
    284       ! 
    285       IF( ln_ssr      )   CALL sbc_ssr_init               ! Sea-Surface Restoring initialisation 
    286       ! 
    287                           CALL sbc_rnf_init               ! Runof initialisation 
    288       ! 
    289       IF( nn_ice == 3 )   CALL sbc_lim_init               ! LIM3 initialisation 
    290       ! 
    291       IF( nn_ice == 4 )   CALL cice_sbc_init( nsbc )      ! CICE initialisation 
     306         &  CALL ctl_warn( 'sbc_init : nn_fsbc is NOT a multiple of the number of time steps in a day' ) 
     307      ! 
     308      IF( ln_dm2dc .AND. NINT(rday) / ( nn_fsbc * NINT(rdt) ) < 8  )   & 
     309         &   CALL ctl_warn( 'sbc_init : diurnal cycle for qsr: the sampling of the diurnal cycle is too small...' ) 
     310      ! 
     311    
     312      !                       !**  associated modules : initialization 
     313      ! 
     314                          CALL sbc_ssm_init            ! Sea-surface mean fields initialization 
     315      ! 
     316      IF( ln_blk      )   CALL sbc_blk_init            ! bulk formulae initialization 
     317 
     318      IF( ln_ssr      )   CALL sbc_ssr_init            ! Sea-Surface Restoring initialization 
     319      ! 
     320                          CALL sbc_rnf_init            ! Runof initialization 
     321      ! 
     322      IF( nn_ice == 3 )   CALL sbc_lim_init            ! LIM3 initialization 
     323      ! 
     324      IF( nn_ice == 4 )   CALL cice_sbc_init( nsbc )   ! CICE initialization 
    292325      ! 
    293326   END SUBROUTINE sbc_init 
     
    297330      !!--------------------------------------------------------------------- 
    298331      !!                    ***  ROUTINE sbc  *** 
    299       !!               
     332      !! 
    300333      !! ** Purpose :   provide at each time-step the ocean surface boundary 
    301334      !!                condition (momentum, heat and freshwater fluxes) 
    302335      !! 
    303       !! ** Method  :   blah blah  to be written ?????????  
     336      !! ** Method  :   blah blah  to be written ????????? 
    304337      !!                CAUTION : never mask the surface stress field (tke sbc) 
    305338      !! 
    306       !! ** Action  : - set the ocean surface boundary condition at before and now  
    307       !!                time step, i.e.   
     339      !! ** Action  : - set the ocean surface boundary condition at before and now 
     340      !!                time step, i.e. 
    308341      !!                utau_b, vtau_b, qns_b, qsr_b, emp_n, sfx_b, qrp_b, erp_b 
    309342      !!                utau  , vtau  , qns  , qsr  , emp  , sfx  , qrp  , erp 
    310343      !!              - updte the ice fraction : fr_i 
    311344      !!---------------------------------------------------------------------- 
    312       INTEGER, INTENT(in) ::   kt       ! ocean time step 
     345      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     346      ! 
     347      LOGICAL ::   ll_sas, ll_opa   ! local logical 
    313348      !!--------------------------------------------------------------------- 
    314349      ! 
     
    332367      !                                            ! ---------------------------------------- ! 
    333368      ! 
    334       IF( nn_components /= jp_iam_sas )   CALL sbc_ssm ( kt )  ! ocean sea surface variables (sst_m, sss_m, ssu_m, ssv_m) 
    335       !                                                        ! averaged over nf_sbc time-step 
    336       IF( ln_wave                     )   CALL sbc_wave( kt )  ! surface waves 
    337        
    338        
    339                                                    !==  sbc formulation  ==! 
    340                                                              
     369      ll_sas = nn_components == jp_iam_sas               ! component flags 
     370      ll_opa = nn_components == jp_iam_opa 
     371      ! 
     372      IF( .NOT.ll_sas )   CALL sbc_ssm ( kt )            ! mean ocean sea surface variables (sst_m, sss_m, ssu_m, ssv_m) 
     373      IF( ln_wave     )   CALL sbc_wave( kt )            ! surface waves 
     374 
     375      ! 
     376      !                                            !==  sbc formulation  ==! 
     377      !                                                    
    341378      SELECT CASE( nsbc )                                ! Compute ocean surface boundary condition 
    342379      !                                                  ! (i.e. utau,vtau, qns, qsr, emp, sfx) 
    343       CASE( jp_usr   )   ;   CALL usr_def_sbc ( kt )                    ! user defined formulation  
    344       CASE( jp_flx   )   ;   CALL sbc_flx     ( kt )                    ! flux formulation 
    345       CASE( jp_clio  )   ;   CALL sbc_blk_clio( kt )                    ! bulk formulation : CLIO for the ocean 
    346       CASE( jp_core  )    
    347          IF( nn_components == jp_iam_sas ) & 
    348             &                CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: SAS receiving fields from OPA  
    349                              CALL sbc_blk_core( kt )                    ! bulk formulation : CORE for the ocean 
    350                                                                         ! from oce: sea surface variables (sst_m, sss_m,  ssu_m,  ssv_m) 
    351       CASE( jp_purecpl )  ;  CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! pure coupled formulation 
    352                                                                         ! 
    353       CASE( jp_mfs   )   ;   CALL sbc_blk_mfs ( kt )                    ! bulk formulation : MFS for the ocean 
    354       CASE( jp_none  )  
    355          IF( nn_components == jp_iam_opa )   & 
    356             &                CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: OPA receiving fields from SAS 
     380      CASE( jp_usr   )     ;   CALL usr_def_sbc( kt )                    ! user defined formulation  
     381      CASE( jp_flx     )   ;   CALL sbc_flx    ( kt )                    ! flux formulation 
     382      CASE( jp_blk     ) 
     383         IF( ll_sas    )       CALL sbc_cpl_rcv( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: SAS receiving fields from OPA 
     384                               CALL sbc_blk    ( kt )                    ! bulk formulation for the ocean 
     385                               ! 
     386      CASE( jp_purecpl )   ;   CALL sbc_cpl_rcv( kt, nn_fsbc, nn_ice )   ! pure coupled formulation 
     387      CASE( jp_none    ) 
     388         IF( ll_opa    )       CALL sbc_cpl_rcv( kt, nn_fsbc, nn_ice )   ! OPA-SAS coupling: OPA receiving fields from SAS 
    357389      END SELECT 
    358390 
    359       IF( ln_mixcpl )        CALL sbc_cpl_rcv ( kt, nn_fsbc, nn_ice )   ! forced-coupled mixed formulation after forcing 
     391      IF( ln_mixcpl )          CALL sbc_cpl_rcv( kt, nn_fsbc, nn_ice )   ! forced-coupled mixed formulation after forcing 
    360392 
    361393      ! 
     
    367399      CASE(  3 )   ;         CALL sbc_ice_lim  ( kt, nsbc )          ! LIM-3 ice model 
    368400      CASE(  4 )   ;         CALL sbc_ice_cice ( kt, nsbc )          ! CICE ice model 
    369       END SELECT                                               
     401      END SELECT 
    370402 
    371403      IF( ln_icebergs    )   CALL icb_stp( kt )                   ! compute icebergs 
     
    374406 
    375407      IF( ln_rnf         )   CALL sbc_rnf( kt )                   ! add runoffs to fresh water fluxes 
    376   
     408 
    377409      IF( ln_ssr         )   CALL sbc_ssr( kt )                   ! add SST/SSS damping term 
    378410 
    379411      IF( nn_fwb    /= 0 )   CALL sbc_fwb( kt, nn_fwb, nn_fsbc )  ! control the freshwater budget 
    380412 
    381       ! treatment of closed sea in the model domain  
    382       ! (update freshwater fluxes) 
     413      ! treatment of closed sea in the model domain   (update freshwater fluxes) 
    383414      ! Should not be ran if ln_diurnal_only 
    384415      IF( .NOT.ln_diurnal_only .AND. nn_closea == 1 )   CALL sbc_clo( kt, cn_cfg, nn_cfg )    
     
    391422         !                                             ! ---------------------------------------- ! 
    392423         IF( ln_rstart .AND.    &                               !* Restart: read in restart file 
    393             & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN  
     424            & iom_varid( numror, 'utau_b', ldstop = .FALSE. ) > 0 ) THEN 
    394425            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields red in the restart file' 
    395426            CALL iom_get( numror, jpdom_autoglo, 'utau_b', utau_b )   ! before i-stress  (U-point) 
     
    407438         ELSE                                                   !* no restart: set from nit000 values 
    408439            IF(lwp) WRITE(numout,*) '          nit000-1 surface forcing fields set to nit000' 
    409             utau_b(:,:) = utau(:,:)  
     440            utau_b(:,:) = utau(:,:) 
    410441            vtau_b(:,:) = vtau(:,:) 
    411442            qns_b (:,:) = qns (:,:) 
    412             emp_b (:,:) = emp(:,:) 
    413             sfx_b (:,:) = sfx(:,:) 
     443            emp_b (:,:) = emp (:,:) 
     444            sfx_b (:,:) = sfx (:,:) 
    414445         ENDIF 
    415446      ENDIF 
     
    435466         CALL iom_put( "empmr"  , emp    - rnf )                ! upward water flux 
    436467         CALL iom_put( "empbmr" , emp_b  - rnf )                ! before upward water flux ( needed to recalculate the time evolution of ssh in offline ) 
    437          CALL iom_put( "saltflx", sfx  )                        ! downward salt flux   
    438                                                                 ! (includes virtual salt flux beneath ice  
    439                                                                 ! in linear free surface case) 
     468         CALL iom_put( "saltflx", sfx  )                        ! downward salt flux (includes virtual salt flux beneath ice in linear free surface case) 
    440469         CALL iom_put( "fmmflx", fmmflx  )                      ! Freezing-melting water flux 
    441          CALL iom_put( "qt"    , qns  + qsr )                   ! total heat flux  
     470         CALL iom_put( "qt"    , qns  + qsr )                   ! total heat flux 
    442471         CALL iom_put( "qns"   , qns        )                   ! solar heat flux 
    443472         CALL iom_put( "qsr"   ,       qsr  )                   ! solar heat flux 
    444          IF( nn_ice > 0 .OR. nn_components == jp_iam_opa )   CALL iom_put( "ice_cover", fr_i )   ! ice fraction  
    445          CALL iom_put( "taum"  , taum       )                   ! wind stress module  
     473         IF( nn_ice > 0 .OR. ll_opa )   CALL iom_put( "ice_cover", fr_i )   ! ice fraction 
     474         CALL iom_put( "taum"  , taum       )                   ! wind stress module 
    446475         CALL iom_put( "wspd"  , wndm       )                   ! wind speed  module over free ocean or leads in presence of sea-ice 
    447476      ENDIF 
    448477      ! 
    449       CALL iom_put( "utau", utau )   ! i-wind stress   (stress can be updated at  
    450       CALL iom_put( "vtau", vtau )   ! j-wind stress    each time step in sea-ice) 
     478      CALL iom_put( "utau", utau )   ! i-wind stress   (stress can be updated at each time step in sea-ice) 
     479      CALL iom_put( "vtau", vtau )   ! j-wind stress 
    451480      ! 
    452481      IF(ln_ctl) THEN         ! print mean trends (used for debugging) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90

    r7278 r7280  
    279279      IF(lwp) THEN 
    280280         WRITE(numout,*) 
    281          WRITE(numout,*) 'sbc_rnf : runoff ' 
    282          WRITE(numout,*) '~~~~~~~ ' 
     281         WRITE(numout,*) 'sbc_rnf_init : runoff ' 
     282         WRITE(numout,*) '~~~~~~~~~~~~ ' 
    283283         WRITE(numout,*) '   Namelist namsbc_rnf' 
    284284         WRITE(numout,*) '      specific river mouths treatment            ln_rnf_mouth = ', ln_rnf_mouth 
     
    296296         IF(lwp) WRITE(numout,*) '          runoffs inflow read in a file' 
    297297         IF( ierror > 0 ) THEN 
    298             CALL ctl_stop( 'sbc_rnf: unable to allocate sf_rnf structure' )   ;   RETURN 
     298            CALL ctl_stop( 'sbc_rnf_init: unable to allocate sf_rnf structure' )   ;   RETURN 
    299299         ENDIF 
    300300         ALLOCATE( sf_rnf(1)%fnow(jpi,jpj,1)   ) 
    301301         IF( sn_rnf%ln_tint ) ALLOCATE( sf_rnf(1)%fdta(jpi,jpj,1,2) ) 
    302          CALL fld_fill( sf_rnf, (/ sn_rnf /), cn_dir, 'sbc_rnf_init', 'read runoffs data', 'namsbc_rnf' ) 
     302         CALL fld_fill( sf_rnf, (/ sn_rnf /), cn_dir, 'sbc_rnf_init', 'read runoffs data', 'namsbc_rnf', no_print ) 
    303303      ENDIF 
    304304      ! 
     
    312312         ALLOCATE( sf_t_rnf(1)%fnow(jpi,jpj,1)   ) 
    313313         IF( sn_t_rnf%ln_tint ) ALLOCATE( sf_t_rnf(1)%fdta(jpi,jpj,1,2) ) 
    314          CALL fld_fill (sf_t_rnf, (/ sn_t_rnf /), cn_dir, 'sbc_rnf_init', 'read runoff temperature data', 'namsbc_rnf' ) 
     314         CALL fld_fill (sf_t_rnf, (/ sn_t_rnf /), cn_dir, 'sbc_rnf_init', 'read runoff temperature data', 'namsbc_rnf', no_print ) 
    315315      ENDIF 
    316316      ! 
     
    324324         ALLOCATE( sf_s_rnf(1)%fnow(jpi,jpj,1)   ) 
    325325         IF( sn_s_rnf%ln_tint ) ALLOCATE( sf_s_rnf(1)%fdta(jpi,jpj,1,2) ) 
    326          CALL fld_fill (sf_s_rnf, (/ sn_s_rnf /), cn_dir, 'sbc_rnf_init', 'read runoff salinity data', 'namsbc_rnf' ) 
     326         CALL fld_fill (sf_s_rnf, (/ sn_s_rnf /), cn_dir, 'sbc_rnf_init', 'read runoff salinity data', 'namsbc_rnf', no_print ) 
    327327      ENDIF 
    328328      ! 
     
    452452            DO WHILE( nkrnf /= jpkm1 .AND. gdepw_1d(nkrnf+1) < rn_hrnf )   ;   nkrnf = nkrnf + 1 
    453453            END DO 
    454             IF( ln_sco )   CALL ctl_warn( 'sbc_rnf: number of levels over which Kz is increased is computed for zco...' ) 
     454            IF( ln_sco )   CALL ctl_warn( 'sbc_rnf_init: number of levels over which Kz is increased is computed for zco...' ) 
    455455         ENDIF 
    456456         IF(lwp) WRITE(numout,*) 
     
    499499      ! 
    500500      IF(lwp) WRITE(numout,*) 
    501       IF(lwp) WRITE(numout,*) 'rnf_mouth : river mouth mask' 
    502       IF(lwp) WRITE(numout,*) '~~~~~~~~~ ' 
     501      IF(lwp) WRITE(numout,*) '   rnf_mouth : river mouth mask' 
     502      IF(lwp) WRITE(numout,*) '   ~~~~~~~~~ ' 
    503503      ! 
    504504      cl_rnfile = TRIM( cn_dir )//TRIM( sn_cnf%clname ) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90

    r7278 r7280  
    8888            !                                             ! ----------------------------------------------- ! 
    8989            IF(lwp) WRITE(numout,*) 
    90             IF(lwp) WRITE(numout,*) '~~~~~~~   mean fields initialised to instantaneous values' 
     90            IF(lwp) WRITE(numout,*) 'sbc_ssm : mean fields initialised to instantaneous values' 
     91            IF(lwp) WRITE(numout,*) '~~~~~~~   ' 
    9192            zcoef = REAL( nn_fsbc - 1, wp ) 
    9293            ssu_m(:,:) = zcoef * ub(:,:,1) 
     
    194195         ! 
    195196         IF(lwp) WRITE(numout,*) 
    196          IF(lwp) WRITE(numout,*) 'sbc_ssm : sea surface mean fields, nn_fsbc=1 : instantaneous values' 
    197          IF(lwp) WRITE(numout,*) '~~~~~~~ ' 
     197         IF(lwp) WRITE(numout,*) 'sbc_ssm_init : sea surface mean fields, nn_fsbc=1 : instantaneous values' 
     198         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ ' 
    198199         ! 
    199200      ELSE 
    200201         !                
    201202         IF(lwp) WRITE(numout,*) 
    202          IF(lwp) WRITE(numout,*) 'sbc_ssm : sea surface mean fields' 
    203          IF(lwp) WRITE(numout,*) '~~~~~~~ ' 
     203         IF(lwp) WRITE(numout,*) 'sbc_ssm_init : sea surface mean fields' 
     204         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~ ' 
    204205         ! 
    205206         IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 
     
    220221            ! 
    221222            IF( zf_sbc /= REAL( nn_fsbc, wp ) ) THEN      ! nn_fsbc has changed between 2 runs 
    222                IF(lwp) WRITE(numout,*) '~~~~~~~   restart with a change in the frequency of mean ',   & 
    223                   &                    'from ', zf_sbc, ' to ', nn_fsbc  
     223               IF(lwp) WRITE(numout,*) '   restart with a change in the frequency of mean from ', zf_sbc, ' to ', nn_fsbc  
    224224               zcoef = REAL( nn_fsbc - 1, wp ) / zf_sbc  
    225225               ssu_m(:,:) = zcoef * ssu_m(:,:)  
     
    231231               frq_m(:,:) = zcoef * frq_m(:,:) 
    232232            ELSE 
    233                IF(lwp) WRITE(numout,*) '~~~~~~~   mean fields read in the ocean restart file' 
     233               IF(lwp) WRITE(numout,*) '   mean fields read in the ocean restart file' 
    234234            ENDIF 
    235235         ENDIF 
     
    238238      IF( .NOT. l_ssm_mean ) THEN   ! default initialisation. needed by lim_istate 
    239239         ! 
    240          IF(lwp) WRITE(numout,*) '          default initialisation of ss?_m arrays' 
     240         IF(lwp) WRITE(numout,*) '   default initialisation of ss._m arrays' 
    241241         ssu_m(:,:) = ub(:,:,1) 
    242242         ssv_m(:,:) = vb(:,:,1) 
    243243         IF( l_useCT )  THEN    ;   sst_m(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 
    244          ELSE                    ;   sst_m(:,:) = tsn(:,:,1,jp_tem) 
     244         ELSE                   ;   sst_m(:,:) = tsn(:,:,1,jp_tem) 
    245245         ENDIF 
    246246         sss_m(:,:) = tsn  (:,:,1,jp_sal) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90

    r6140 r7280  
    199199         ! 
    200200         ! fill sf_sst with sn_sst and control print 
    201          CALL fld_fill( sf_sst, (/ sn_sst /), cn_dir, 'sbc_ssr', 'SST restoring term toward SST data', 'namsbc_ssr' ) 
     201         CALL fld_fill( sf_sst, (/ sn_sst /), cn_dir, 'sbc_ssr', 'SST restoring term toward SST data', 'namsbc_ssr', no_print ) 
    202202         IF( sf_sst(1)%ln_tint )   ALLOCATE( sf_sst(1)%fdta(jpi,jpj,1,2), STAT=ierror ) 
    203203         IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'sbc_ssr: unable to allocate sf_sst data array' ) 
     
    213213         ! 
    214214         ! fill sf_sss with sn_sss and control print 
    215          CALL fld_fill( sf_sss, (/ sn_sss /), cn_dir, 'sbc_ssr', 'SSS restoring term toward SSS data', 'namsbc_ssr' ) 
     215         CALL fld_fill( sf_sss, (/ sn_sss /), cn_dir, 'sbc_ssr', 'SSS restoring term toward SSS data', 'namsbc_ssr', no_print ) 
    216216         IF( sf_sss(1)%ln_tint )   ALLOCATE( sf_sss(1)%fdta(jpi,jpj,1,2), STAT=ierror ) 
    217217         IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'sbc_ssr: unable to allocate sf_sss data array' ) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90

    r6140 r7280  
    2525   PRIVATE 
    2626 
    27    PUBLIC   sbc_wave    ! routine called in sbc_blk_core or sbc_blk_mfs 
     27   PUBLIC   sbc_wave    ! routine called in sbc_blk 
    2828    
    2929   INTEGER , PARAMETER ::   jpfld  = 3   ! maximum number of files to read for srokes drift 
     
    9494         IF( .NOT.( ln_cdgw .OR. ln_sdw ) )    & 
    9595            &  CALL ctl_warn( 'ln_sbcwave=T but nor drag coefficient (ln_cdgw=F) neither stokes drift activated (ln_sdw=F)' ) 
    96          IF( ln_cdgw .AND. .NOT.(ln_blk_mfs .OR. ln_blk_core) )   &        
    97             &  CALL ctl_stop( 'drag coefficient read from wave model definable only with mfs bulk formulae and core') 
     96         IF( ln_cdgw .AND. .NOT.ln_blk )   &        
     97            &  CALL ctl_stop( 'drag coefficient read from wave model definable only with bulk formulae') 
    9898         ! 
    9999         IF( ln_cdgw ) THEN 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r6140 r7280  
    255255         WRITE(numout,*) 
    256256         SELECT CASE ( nadv ) 
    257          CASE( np_NO_adv  )   ;   WRITE(numout,*) '         NO T-S advection' 
    258          CASE( np_CEN     )   ;   WRITE(numout,*) '         CEN      scheme is used. Horizontal order: ', nn_cen_h,   & 
     257         CASE( np_NO_adv  )   ;   WRITE(numout,*) '      ===>>   NO T-S advection' 
     258         CASE( np_CEN     )   ;   WRITE(numout,*) '      ===>>   CEN      scheme is used. Horizontal order: ', nn_cen_h,   & 
    259259            &                                                                     ' Vertical   order: ', nn_cen_v 
    260          CASE( np_FCT     )   ;   WRITE(numout,*) '         FCT      scheme is used. Horizontal order: ', nn_fct_h,   & 
     260         CASE( np_FCT     )   ;   WRITE(numout,*) '      ===>>   FCT      scheme is used. Horizontal order: ', nn_fct_h,   & 
    261261            &                                                                      ' Vertical   order: ', nn_fct_v 
    262          CASE( np_FCT_zts )   ;   WRITE(numout,*) '         use 2nd order FCT with ', nn_fct_zts,'vertical sub-timestepping' 
    263          CASE( np_MUS     )   ;   WRITE(numout,*) '         MUSCL    scheme is used' 
    264          CASE( np_UBS     )   ;   WRITE(numout,*) '         UBS      scheme is used' 
    265          CASE( np_QCK     )   ;   WRITE(numout,*) '         QUICKEST scheme is used' 
     262         CASE( np_FCT_zts )   ;   WRITE(numout,*) '      ===>>   use 2nd order FCT with ', nn_fct_zts,'vertical sub-timestepping' 
     263         CASE( np_MUS     )   ;   WRITE(numout,*) '      ===>>   MUSCL    scheme is used' 
     264         CASE( np_UBS     )   ;   WRITE(numout,*) '      ===>>   UBS      scheme is used' 
     265         CASE( np_QCK     )   ;   WRITE(numout,*) '      ===>>   QUICKEST scheme is used' 
    266266         END SELECT 
    267267      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90

    r7277 r7280  
    308308         WRITE(numout,*) 
    309309         IF( ln_mle ) THEN 
    310             WRITE(numout,*) '   Mixed Layer Eddy induced transport added to tracer advection' 
    311             IF( nn_mle == 0 )   WRITE(numout,*) '   Fox-Kemper et al 2010 formulation' 
    312             IF( nn_mle == 1 )   WRITE(numout,*) '   New formulation' 
     310            WRITE(numout,*) '      ===>>   Mixed Layer Eddy induced transport added to tracer advection' 
     311            IF( nn_mle == 0 )   WRITE(numout,*) '              Fox-Kemper et al 2010 formulation' 
     312            IF( nn_mle == 1 )   WRITE(numout,*) '              New formulation' 
    313313         ELSE 
    314             WRITE(numout,*) '   Mixed Layer Eddy parametrisation NOT used' 
     314            WRITE(numout,*) '      ===>>   Mixed Layer Eddy parametrisation NOT used' 
    315315         ENDIF 
    316316      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90

    r6140 r7280  
    176176            ! fill sf_chl with sn_chl and control print 
    177177            CALL fld_fill( sf_qgh, (/ sn_qgh /), cn_dir, 'tra_bbc_init',   & 
    178                &          'bottom temperature boundary condition', 'nambbc' ) 
     178               &          'bottom temperature boundary condition', 'nambbc', no_print ) 
    179179 
    180180            CALL fld_read( nit000, 1, sf_qgh )                         ! Read qgh data 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90

    r7277 r7280  
    519519         WRITE(numout,*) 'tra_bbl_init : bottom boundary layer initialisation' 
    520520         WRITE(numout,*) '~~~~~~~~~~~~' 
    521          WRITE(numout,*) '       Namelist nambbl : set bbl parameters' 
    522          WRITE(numout,*) '          diffusive bbl (=1)   or not (=0)    nn_bbl_ldf = ', nn_bbl_ldf 
    523          WRITE(numout,*) '          advective bbl (=1/2) or not (=0)    nn_bbl_adv = ', nn_bbl_adv 
    524          WRITE(numout,*) '          diffusive bbl coefficient           rn_ahtbbl  = ', rn_ahtbbl, ' m2/s' 
    525          WRITE(numout,*) '          advective bbl coefficient           rn_gambbl  = ', rn_gambbl, ' s' 
     521         WRITE(numout,*) '   Namelist nambbl : set bbl parameters' 
     522         WRITE(numout,*) '      diffusive bbl (=1)   or not (=0)    nn_bbl_ldf = ', nn_bbl_ldf 
     523         WRITE(numout,*) '      advective bbl (=1/2) or not (=0)    nn_bbl_adv = ', nn_bbl_adv 
     524         WRITE(numout,*) '      diffusive bbl coefficient           rn_ahtbbl  = ', rn_ahtbbl, ' m2/s' 
     525         WRITE(numout,*) '      advective bbl coefficient           rn_gambbl  = ', rn_gambbl, ' s' 
    526526      ENDIF 
    527527 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90

    r6140 r7280  
    192192         WRITE(numout,*) 
    193193         WRITE(numout,*) 'tra_dmp_init : T and S newtonian relaxation' 
    194          WRITE(numout,*) '~~~~~~~~~~~' 
     194         WRITE(numout,*) '~~~~~~~~~~~~' 
    195195         WRITE(numout,*) '   Namelist namtra_dmp : set relaxation parameters' 
    196196         WRITE(numout,*) '      Apply relaxation   or not       ln_tradmp = ', ln_tradmp 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90

    r6352 r7280  
    110110         WRITE(numout,*) 
    111111         WRITE(numout,*) 'tra_ldf_init : lateral tracer diffusive operator' 
    112          WRITE(numout,*) '~~~~~~~~~~~' 
     112         WRITE(numout,*) '~~~~~~~~~~~~' 
    113113         WRITE(numout,*) '   Namelist namtra_ldf: already read in ldftra module' 
    114114         WRITE(numout,*) '      see ldf_tra_init report for lateral mixing parameters' 
    115          WRITE(numout,*) 
    116115      ENDIF 
    117116      !                                   ! use of lateral operator or not 
     
    187186         WRITE(numout,*) 
    188187         SELECT CASE( nldf ) 
    189          CASE( np_no_ldf )   ;   WRITE(numout,*) '   NO lateral diffusion' 
    190          CASE( np_lap    )   ;   WRITE(numout,*) '   laplacian iso-level operator' 
    191          CASE( np_lap_i  )   ;   WRITE(numout,*) '   Rotated laplacian operator (standard)' 
    192          CASE( np_lap_it )   ;   WRITE(numout,*) '   Rotated laplacian operator (triad)' 
    193          CASE( np_blp    )   ;   WRITE(numout,*) '   bilaplacian iso-level operator' 
    194          CASE( np_blp_i  )   ;   WRITE(numout,*) '   Rotated bilaplacian operator (standard)' 
    195          CASE( np_blp_it )   ;   WRITE(numout,*) '   Rotated bilaplacian operator (triad)' 
     188         CASE( np_no_ldf )   ;   WRITE(numout,*) '      ===>>   NO lateral diffusion' 
     189         CASE( np_lap    )   ;   WRITE(numout,*) '      ===>>   laplacian iso-level operator' 
     190         CASE( np_lap_i  )   ;   WRITE(numout,*) '      ===>>   Rotated laplacian operator (standard)' 
     191         CASE( np_lap_it )   ;   WRITE(numout,*) '      ===>>   Rotated laplacian operator (triad)' 
     192         CASE( np_blp    )   ;   WRITE(numout,*) '      ===>>   bilaplacian iso-level operator' 
     193         CASE( np_blp_i  )   ;   WRITE(numout,*) '      ===>>   Rotated bilaplacian operator (standard)' 
     194         CASE( np_blp_it )   ;   WRITE(numout,*) '      ===>>   Rotated bilaplacian operator (triad)' 
    196195         END SELECT 
    197196      ENDIF 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r6403 r7280  
    406406            !                                        ! fill sf_chl with sn_chl and control print 
    407407            CALL fld_fill( sf_chl, (/ sn_chl /), cn_dir, 'tra_qsr_init',   & 
    408                &           'Solar penetration function of read chlorophyll', 'namtra_qsr' ) 
     408               &           'Solar penetration function of read chlorophyll', 'namtra_qsr' , no_print ) 
    409409         ENDIF 
    410410         IF( nqsr == np_RGB ) THEN                 ! constant Chl 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90

    r6140 r7280  
    141141         WRITE(numout,*) 'tra_zdf_init : vertical tracer physics scheme' 
    142142         WRITE(numout,*) '~~~~~~~~~~~' 
    143          IF( nzdf ==  0 )   WRITE(numout,*) '              Explicit time-splitting scheme' 
    144          IF( nzdf ==  1 )   WRITE(numout,*) '              Implicit (euler backward) scheme' 
     143         IF( nzdf ==  0 )   WRITE(numout,*) '      ===>>   Explicit time-splitting scheme' 
     144         IF( nzdf ==  1 )   WRITE(numout,*) '      ===>>   Implicit (euler backward) scheme' 
    145145      ENDIF 
    146146      ! 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/TRD/trdini.F90

    r6140 r7280  
    5757      IF(lwp) THEN                  ! control print 
    5858         WRITE(numout,*) 
    59          WRITE(numout,*) ' trd_init : Momentum/Tracers trends' 
    60          WRITE(numout,*) ' ~~~~~~~~~~' 
     59         WRITE(numout,*) 'trd_init : Momentum/Tracers trends' 
     60         WRITE(numout,*) '~~~~~~~~' 
    6161         WRITE(numout,*) '   Namelist namtrd : set trends parameters' 
    6262         WRITE(numout,*) '      global domain averaged dyn & tra trends   ln_glo_trd  = ', ln_glo_trd 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90

    r6140 r7280  
    9999      ! 
    100100      IF( nn_timing == 1 )  CALL timing_start('zdf_bfr') 
    101       ! 
    102       IF( kt == nit000 .AND. lwp ) THEN 
    103          WRITE(numout,*) 
    104          WRITE(numout,*) 'zdf_bfr : Set bottom friction coefficient (non-linear case)' 
    105          WRITE(numout,*) '~~~~~~~~' 
    106       ENDIF 
    107101      ! 
    108102      IF( nn_bfr == 2 ) THEN                 ! quadratic bottom friction only 
     
    259253      IF(lwp) WRITE(numout,*) 
    260254      IF(lwp) WRITE(numout,*) 'zdf_bfr_init : momentum bottom friction' 
    261       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~' 
     255      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 
    262256      IF(lwp) WRITE(numout,*) '   Namelist nam_bfr : set bottom friction parameters' 
    263257      ! 
     
    266260      CASE( 0 ) 
    267261         IF(lwp) WRITE(numout,*) '      free-slip ' 
    268          bfrua(:,:) = 0.e0 
    269          bfrva(:,:) = 0.e0 
    270          tfrua(:,:) = 0.e0 
    271          tfrva(:,:) = 0.e0 
     262         bfrua(:,:) = 0._wp 
     263         bfrva(:,:) = 0._wp 
     264         tfrua(:,:) = 0._wp 
     265         tfrva(:,:) = 0._wp 
    272266         ! 
    273267      CASE( 1 ) 
     
    321315         IF(lwp) WRITE(numout,*) '      log formulation   ln_bfr2d = ', ln_loglayer 
    322316         IF(lwp) WRITE(numout,*) '      bottom roughness  rn_bfrz0 [m] = ', rn_bfrz0 
    323          IF( rn_bfrz0<=0.e0 ) THEN 
     317         IF( rn_bfrz0 <= 0._wp ) THEN 
    324318            WRITE(ctmp1,*) '      bottom roughness must be strictly positive' 
    325319            CALL ctl_stop( ctmp1 ) 
     
    336330            IF(lwp) WRITE(numout,*) '      log formulation   ln_tfr2d     = ', ln_loglayer 
    337331            IF(lwp) WRITE(numout,*) '      top roughness     rn_tfrz0 [m] = ', rn_tfrz0 
    338             IF( rn_tfrz0<=0.e0 ) THEN 
     332            IF( rn_tfrz0 <= 0._wp ) THEN 
    339333               WRITE(ctmp1,*) '      top roughness must be strictly positive' 
    340334               CALL ctl_stop( ctmp1 ) 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90

    r5836 r7280  
    6666      IF(lwp) THEN               !* Parameter print 
    6767         WRITE(numout,*) 
    68          WRITE(numout,*) 'zdf_init: vertical physics' 
     68         WRITE(numout,*) 'zdf_init : vertical physics' 
    6969         WRITE(numout,*) '~~~~~~~~' 
    7070         WRITE(numout,*) '   Namelist namzdf : set vertical mixing mixing parameters' 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r7277 r7280  
    560560      IF(lwp) THEN                  ! control print 
    561561         WRITE(numout,*) 
    562          WRITE(numout,*) 'namcfg  : configuration initialization through namelist read' 
    563          WRITE(numout,*) '~~~~~~~ ' 
     562         WRITE(numout,*) 'namcfg : configuration initialization through namelist read' 
     563         WRITE(numout,*) '~~~~~~ ' 
    564564         WRITE(numout,*) '   Namelist namcfg' 
    565565         WRITE(numout,*) '      read domain configuration file                ln_read_cfg      = ', ln_read_cfg 
  • branches/2016/dev_CNRS_2016/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90

    r6140 r7280  
    110110      IF(lwp) THEN 
    111111         WRITE(numout,*) 
    112          WRITE(numout,*) 'trc_oce_rgb : Initialisation of the optical look-up table' 
    113          WRITE(numout,*) '~~~~~~~~~~~ ' 
     112         WRITE(numout,*) '   trc_oce_rgb : Initialisation of the optical look-up table' 
     113         WRITE(numout,*) '   ~~~~~~~~~~~ ' 
    114114      ENDIF 
    115115      ! 
Note: See TracChangeset for help on using the changeset viewer.