Version 2 (modified by smasson, 6 months ago) (diff)

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 and also includes some new features and improvements:

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 updating to this release :

  • 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 -->