Announcement of NEMO release 4.0.4

We are pleased to announce the "minor" 4.0.4 release, now available here: ​​​
https://forge.ipsl.jussieu.fr/nemo/browser/NEMO/releases/r4.0/r4.0.4

This 4.0.4 release is based on 4.0.2 and includes several new features, improvements and debugs. We strongly encourage all the teams to upgrade to this version. The main changes (vs 4.0.2) are described hereafter:

SI3:

New physics controlled by a namelist parameter:

  • Parameterization of frozen lids on top of melt ponds ⇒ ln_pnd_lids
  • Fraction of ice covered by snow can be dependent on snow thickness. It impacts albedo and solar flux transmitted thru the ice. There are 3 options: nn_snwfra=0 (basic 0-1, as before), nn_snwfra=1 (MetO-Jules formulation), nn_snwfra=2 (CICE formulation).
  • Solar flux transmission thru the surface scattering layer. There are 2 options: nn_qtrice=0 (transmission depends on cloudiness and is 0 where there is snow, as before), nn_qtrice=1 (from M. Lebrun thesis 2019: transmission is 0.3 everywhere but with different snow conductivities during melting and freezing)

Enhancements controlled by a namelist parameter:

  • Initialise sea ice from multi category restart file ⇒ nn_iceini_file=2
  • read the cloud cover to improve ice albedo calculation (forced simulations only for now)
  • control of convergences for rheology (EVP and aEVP) and heat diffusion (Bitz and Lipscomb 99) schemes ⇒ nn_rhg_chkcvg and ln_zdf_chkcvg
  • maximum ice thickness allowed (99m by default) ⇒ rn_himax
  • heat in the leads can be used to warm the ocean before melting sea-ice but probably not a good idea (cf Ed) ⇒ ln_leadhfx

Hard coded developments and debugs:

  • major debug of aEVP (critical)
  • penetration of solar radiation thru the ice and snow does not include the surface scattering layer anymore (3cm for snow and 10cm for ice). So, it writes as exp(-kappa*max(0,z-ssl)), with ssl=surface scattering layer.
  • debug sbccpl.F90 for IPSL and Met-Office
  • limitation of ice/snow temperatures and salinity to avoid overshooting and then to overcome a recurrent issue with the 2 advection schemes (UMx and Prather)
  • namelist param changes for best simulations. OPA: nn_mxl=3 (instead of 2), nn_mxlice=2 (instead of 0). SI3: nn_snwfra=2, nn_qtrice=1, ln_pnd=true
  • rewrite heat budget of the ice, so it includes the solar flux transmitted thru the ice and is conservative by construction. Also, activating ln_icediachk now gives an ascii file (icedrift_diagnostics.ascii) containing mass, salt and heat global conservation issues (if any). In addition, 2D drift files can be outputed.
  • debug outputs for shear and normal stresses in rheology

Others:

  • reduce number of mpi communications in rheology and in the two advection schemes

OCE:

New physics controlled by a namelist parameter:

  • ice-ocean drags can now be calculated implicitly ⇒ ln_drgice_imp. For instance, it may allow ORCA2 to run with a time step of 5760s instead of 5400s…
  • turbulent mixing is modified due to the presence of sea ice (zdfgls and zdftke routines).
    • With tke, one can choose to 1) take into account sea-ice for the depth of the mixed layer (⇒ nn_mxlice) and 2) attenuate surface wave breaking and langmuir cells under sea ice (⇒ nn_eice).
    • With gls, sea ice intervenes as 1) a friction surface with a specific roughness parameter (nn_hsri) and 2) a damping for surface wave breaking (nn_z0_ice).

Hard coded developments and debugs:

  • update coupling interface for sea-ice
  • fix coastal boundary conditions in dyn_ldf_blp, see #2449
  • debug in zdfgls when there is no top/bottom friction (ticket #2435)
  • debug in zdftke for the ice shelves (ticket #2406, critical)
  • rewrite fmask so that on-point straits slip condition is determined by the namelist parameter rn_shlat as for all the other points, and is not solely free slip (ticket #2237)
  • debug hybrid s-z coordinates (ln_hpg_prj=true, ticket #2474, major)
  • fix minor bug in dynvor, see #2446
  • debug waves (tickets #2445 and #2447, both critical)
  • debug icebergs (ticket #2407, critical)
  • debug freshwater budget (ticket #2376)
  • out-of-bounds in bdydta, see #2410
  • better detection and managment of errors messages

The detail list all fixes can bee seen :

Because of the reorganization of the 4.0* svn branches between the 4.0.2 and the 4.0.4, the complete list of code modification is split in 2 parts

From now on, to download the NEMO reference, we recommend to use this new intermediate release, especially for the projects using coupled ocean-atmosphere configurations: svn co https://forge.ipsl.jussieu.fr/nemo/svn/NEMO/releases/r4.0/r4.0.4

Practical issue when upgrading to this release (namelists and xml) :

  • Critical changes in namelist_ref:
    • deleted variable: ln_drg
    • renamed variables: ln_OFF → ln_drg_OFF, rn_eice → nn_eice
  • Critical changes in namelist_ice_ref:
    • renamed variables: rn_depfra → rn_lf_depfra, rn_icebfr → rn_lf_bfr, rn_lfrelax → rn_lf_relax, rn_tensile → rn_lf_tensile
  • Critical changes in namelist_pisces_ref:
    • renamed variables: mprat2 → mpratd, xpref2p → xpref2n
  • Critical changes in field_def_nemo-oce.xml:
    • added variables: socegrad, socegrad2, eken_int, relvor, absvor, potvor, salt2c
  • Critical changes in field_def_nemo-ice.xml:
    • added variables: icehlid, icevlid, beta_evp, uice_cvg, dmilam, icehlid_cat, iceaepnd_cat, tice_cvgerr, tice_cvgstp
  • all changes in cfgs/SHARED/namelist_* and cfgs/SHARED/*xml files:
  • namelist_ice_ref

     
    45    rn_himin         =   0.1           !  minimum ice thickness (m) used in remapping 
     45   rn_himin         =   0.1           !  minimum ice thickness (m) allowed 
     46   rn_himax         =  99.0           !  maximum ice thickness (m) allowed 
     
    58       rn_depfra     =   0.125         !        fraction of ocean depth that ice must reach to initiate landfast 
     59      rn_lf_depfra  =   0.125         !        fraction of ocean depth that ice must reach to initiate landfast 
     
    60       rn_icebfr     =  15.            !        maximum bottom stress per unit volume [N/m3] 
    61       rn_lfrelax    =   1.e-5         !        relaxation time scale to reach static friction [s-1] 
    62       rn_tensile    =   0.05          !        isotropic tensile strength [0-0.5??] 
     61      rn_lf_bfr     =  15.            !        maximum bottom stress per unit volume [N/m3] 
     62      rn_lf_relax   =   1.e-5         !        relaxation time scale to reach static friction [s-1] 
     63      rn_lf_tensile =   0.05          !        isotropic tensile strength [0-0.5??] 
     
    96       nn_nevp       = 120             !     number of EVP subcycles 
     97      nn_nevp       = 100             !     number of EVP subcycles 
     
    98                                       !        advised value: 1/3 (rn_nevp=120) or 1/9 (rn_nevp=300) 
     99                                      !        advised value: 1/3 (nn_nevp=100) or 1/9 (nn_nevp=300) 
     100   nn_rhg_chkcvg    =   0             !  check convergence of rheology 
     101                                      !     = 0  no check 
     102                                      !     = 1  check at the main time step (output xml: uice_cvg) 
     103                                      !     = 2  check at both main and rheology time steps (additional output: ice_cvg.nc) 
     104                                      !          this option 2 asks a lot of communications between cpu 
     
    111    rn_blow_s        =   0.66          !  mesure of snow blowing into the leads 
     117   nn_snwfra        =   2             !  calculate the fraction of ice covered by snow (for zdf and albedo) 
     118                                      !     = 0  fraction = 1 (if snow) or 0 (if no snow) 
     119                                      !     = 1  fraction = 1-exp(-0.2*rhos*hsnw) [MetO formulation] 
     120                                      !     = 2  fraction = hsnw / (hsnw+0.02)    [CICE formulation] 
     121   rn_snwblow       =   0.66          !  mesure of snow blowing into the leads 
     
     130   nn_qtrice        =   1             !  Solar flux transmitted thru the surface scattering layer: 
     131                                      !     = 0  Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow) 
     132                                      !     = 1  Lebrun 2019 (equals 0.3 anytime with different melting/dry snw conductivities) 
     
     141   ! 
     142   ln_leadhfx       = .true.          !  heat in the leads is used to melt sea-ice before warming the ocean 
     
     153   rn_kappa_s       =  10.0           !  nn_qtrice = 0: radiation attenuation coefficient in snow         [1/m] 
     154   rn_kappa_smlt    =   7.0           !  nn_qtrice = 1: radiation attenuation coefficient in melting snow [1/m] 
     155   rn_kappa_sdry    =  10.0           !                 radiation attenuation coefficient in dry snow     [1/m] 
     156   ln_zdf_chkcvg    = .false.         !  check convergence of heat diffusion scheme (outputs: tice_cvgerr, tice_cvgstp) 
     
    177    ln_pnd           = .false.         !  activate melt ponds or not 
    178      ln_pnd_H12     = .false.         !  activate evolutive melt ponds (from Holland et al 2012) 
    179      ln_pnd_CST     = .false.         !  activate constant  melt ponds 
     196   ln_pnd            = .true.         !  activate melt ponds or not 
     197      ln_pnd_LEV     = .true.         !  level ice melt ponds (from Flocco et al 2007,2010 & Holland et al 2012) 
     198         rn_apnd_min =   0.15         !     minimum ice fraction that contributes to melt pond. range: 0.0 -- 0.15 ?? 
     199         rn_apnd_max =   0.85         !     maximum ice fraction that contributes to melt pond. range: 0.7 -- 0.85 ?? 
     200      ln_pnd_CST     = .false.        !  constant  melt ponds 
     
    182      ln_pnd_alb     = .false.         !  melt ponds affect albedo or not 
     203      ln_pnd_lids    = .true.         !  frozen lids on top of the ponds (only for ln_pnd_LEV) 
     204      ln_pnd_alb     = .true.         !  effect of melt ponds on ice albedo 
     
    188    ln_iceini_file   = .false.         !  netcdf file provided for initialization (T) or not (F) 
     210   nn_iceini_file   =   0             !     0 = Initialise sea ice based on SSTs 
     211                                      !     1 = Initialise sea ice from single category netcdf file 
     212                                      !     2 = Initialise sea ice from multi category restart file 
     
    208    ! -- for ln_iceini_file = T 
     232   rn_hld_ini_n     =   0.0           !  initial pond lid depth      (m), North 
     233   rn_hld_ini_s     =   0.0           !        "            "             South 
     234   ! -- for nn_iceini_file = 1 
     
     245   sn_hld = 'NOT USED'              , -12 ,'hld'   ,  .false.  , .true., 'yearly'  , '' , '', '' 
  • namelist_ref

     
    283    sn_tdif     = 'taudif_core'                ,   24         , 'taudif'  ,   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     283   sn_cc       = 'NOT USED'                   ,   24.        , 'CC'      ,   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     284   sn_tdif     = 'taudif_core'                ,   24.        , 'taudif'  ,   .false.   , .true. , 'yearly'  , 'weights_core_orca2_bilinear_noc.nc' , ''       , '' 
     
     292   ln_scale_ice_flux = .false. !  use ice fluxes that are already "ice weighted" ( i.e. multiplied ice concentration) 
     
     421   ln_rnf_icb  = .false.   !  read in iceberg flux from a file (fill sn_i_rnf if .true.) 
     
     432   sn_i_rnf    = 'NOT_USED'              ,        -1.        , 'sorunoff',   .true.    , .true. , 'yearly'  , ''               , ''       , '' 
     
     649   bn_hil      = 'NOT USED'              ,         24.       , 'sihlid'  ,    .true.   , .false.,  'daily'  ,    ''            ,   ''     ,     '' 
     
     656   rn_ice_hlid = 0.0          !       --   pond lid depth                      -- 
     
    664 !!   namdrg_top    top    friction                                      (ln_OFF=F & ln_isfcav=T) 
    665 !!   namdrg_bot    bottom friction                                      (ln_OFF=F) 
     670!!   namdrg_top    top    friction                                      (ln_drg_OFF=F & ln_isfcav=T) 
     671!!   namdrg_bot    bottom friction                                      (ln_drg_OFF=F) 
     
    673    ln_OFF      = .false.   !  free-slip       : Cd = 0                  (F => fill namdrg_bot 
     679   ln_drg_OFF  = .false.   !  free-slip       : Cd = 0                  (F => fill namdrg_bot 
     
     685      ln_drgice_imp = .false. ! implicit ice-ocean drag 
     
    681 &namdrg_top    !   TOP friction                                         (ln_OFF =F & ln_isfcav=T) 
     688&namdrg_top    !   TOP friction                                         (ln_drg_OFF =F & ln_isfcav=T) 
     
    692 &namdrg_bot    !   BOTTOM friction                                      (ln_OFF =F) 
     699&namdrg_bot    !   BOTTOM friction                                      (ln_drg_OFF =F) 
     
    1049    nn_mxl      =   2       !  mixing length: = 0 bounded by the distance to surface and bottom 
     1056   nn_mxl      =   3       !  mixing length: = 0 bounded by the distance to surface and bottom 
     
     1061      nn_mxlice    = 2        ! type of scaling under sea-ice 
     1062                              !    = 0 no scaling under sea-ice 
     1063                              !    = 1 scaling with constant sea-ice thickness 
     1064                              !    = 2 scaling with mean sea-ice thickness ( only with SI3 sea-ice model ) 
     1065                              !    = 3 scaling with maximum sea-ice thickness 
     1066      rn_mxlice   = 10.       ! max constant ice thickness value when scaling under sea-ice ( nn_mxlice=1) 
     
    1055    ln_drg      = .false.   !  top/bottom friction added as boundary condition of TKE 
     
    1066       rn_eice     =   4       !  below sea ice: =0 ON ; =4 OFF when ice fraction > 1/4 
     1078   nn_eice     =   1       !  attenutaion of langmuir & surface wave breaking under ice 
     1079   !                       !           = 0 no impact of ice cover on langmuir & surface wave breaking 
     1080   !                       !           = 1 weigthed by 1-TANH(10*fr_i) 
     1081   !                       !           = 2 weighted by 1-fr_i 
     1082   !                       !           = 3 weighted by 1-MIN(1,4*fr_i) 
     
     1095   rn_hsri       =  0.03   !  Ice-ocean roughness 
     
     1099   nn_z0_ice     =   1     !  attenutaion of surface wave breaking under ice 
     1100   !                       !           = 0 no impact of ice cover 
     1101   !                       !           = 1 roughness uses rn_hsri and is weigthed by 1-TANH(10*fr_i) 
     1102   !                       !           = 2 roughness uses rn_hsri and is weighted by 1-fr_i 
     1103   !                       !           = 3 roughness uses rn_hsri and is weighted by 1-MIN(1,4*fr_i) 
  • namelist_top_ref

     
    124    ln_trdmld_trc_restart = .false. !  restart for ML diagnostics 
    125    ln_trdmld_trc_instant = .true.  !  flag to diagnose trends of instantantaneous or mean ML T/S 
     124   ln_trdmxl_trc_restart = .false.   !  restart for ML diagnostics 
     125   ln_trdmxl_trc_instant = .true.    !  flag to diagnose trends of instantantaneous or mean ML T/S 
     126   cn_trdrst_trc_in  = 'restart_trd' !  suffix of pass. tracer trends restart name (input) 
     127   cn_trdrst_trc_out = 'restart_trd' !  suffix of pass. tracer trends restart name (output) 
  • field_def_nemo-ice.xml

     
     51          <field id="icehlid"      long_name="melt pond lid depth"                                     standard_name="sea_ice_meltpondlid_depth"                 unit="m" /> 
     52          <field id="icevlid"      long_name="melt pond lid volume"                                    standard_name="sea_ice_meltpondlid_volume"                unit="m" /> 
     
     85          <field id="beta_evp"     long_name="Relaxation parameter of ice rheology (beta)"             standard_name="relaxation_parameter_of_ice_rheology"      unit=""  /> 
     
     176          <!-- rheology convergence tests --> 
     177          <field id="uice_cvg"   long_name="sea ice velocity convergence"      standard_name="sea_ice_velocity_convergence"      unit="m/s" /> 
     178 
     
     217          <field id="dmilam"       long_name="sea-ice mass change through lateral melting"             standard_name="tendency_of_sea_ice_amount_due_to_lateral_melting"                       unit="kg/m2/s" /> 
     
     296          <field id="icehlid_cat"  long_name="Ice melt pond lid thickness per category"          unit="m"       detect_missing_value="true" /> 
     
     298          <field id="iceaepnd_cat" long_name="Ice melt pond effective fraction per category"     unit=""        /> 
     
     310          <!-- heat diffusion convergence tests --> 
     311          <field id="tice_cvgerr" long_name="sea ice temperature convergence error"      standard_name="sea_ice_temperature_convergence_err" unit="K" /> 
     312          <field id="tice_cvgstp" long_name="sea ice temperature convergence iterations" standard_name="sea_ice_temperature_convergence_stp" unit=""  /> 
     313 
     
     573          <field field_ref="dmilam"           name="sidmassmeltlat"   /> 
  • namelist_pisces_ref

     
    199    mprat2     =  0.01     ! Diatoms mortality rate 
     199   mpratd     =  0.01     ! Diatoms mortality rate 
     
    232    xpref2d    =  1.       ! zoo preference for phyto 
    233    xpref2p    =  1.       ! zoo preference for POC 
     232   xpref2d    =  1.       ! zoo preference for Diatoms 
     233   xpref2n    =  1.       ! zoo preference for nanophyto 
     
    235    xpref2m    =  0.2      ! meso preference for zoo 
    236    xpref2c    =  0.3      ! zoo preference for poc 
     235   xpref2m    =  0.2      ! zoo preference for mesozoo 
     236   xpref2c    =  0.3      ! zoo preference for POC 
  • field_def_nemo-oce.xml

     
     38       <!--- additions to diawri.F90 ---> 
     39        <field id="socegrad"    long_name="module of salinity gradient"              unit="psu/m"   grid_ref="grid_T_3D"/> 
     40        <field id="socegrad2"   long_name="square of module of salinity gradient"    unit="psu2/m2" grid_ref="grid_T_3D"/> 
     41        <field id="eken_int"    long_name="vertical integration of kinetic energy"   unit="m3/s2"   /> 
     42        <field id="relvor"      long_name="relative vorticity"                       unit="s-1"    grid_ref="grid_T_3D"/> 
     43        <field id="absvor"      long_name="absolute vorticity"                       unit="s-1"    grid_ref="grid_T_3D"/> 
     44        <field id="potvor"      long_name="potential vorticity"                      unit="s-1"    grid_ref="grid_T_3D"/> 
     45        <field id="salt2c"      long_name="Salt content vertically integrated"       unit="1e-3*kg/m2" /> 
     
    85         <field id="bn2"          long_name="squared Brunt-Vaisala frequency"                                           unit="s-1"    grid_ref="grid_T_3D" /> 
     
     544        <!-- EOS --> 
     545        <field id="bn2"          long_name="squared Brunt-Vaisala frequency"                unit="s-2" /> 
     546 
     
    592       <!-- variables available with key_float --> 
     602      <!-- variables available with ln_floats --> 
Last modified 6 weeks ago Last modified on 2020-10-22T09:39:06+02:00