Version 1 (modified by smasson, 4 years 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 (need for a description readable for users here…):
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 allows 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
- https://forge.ipsl.jussieu.fr/nemo/changeset?sfp_email=&sfph_mail=&reponame=&new=12564%40NEMO%2Freleases%2Frelease-4.0-HEAD&old=12375%40NEMO%2Freleases%2Frelease-4.0-HEAD&sfp_email=&sfph_mail=
- https://forge.ipsl.jussieu.fr/nemo/changeset?sfp_email=&sfph_mail=&reponame=&new=13648%40NEMO%2Freleases%2Fr4.0%2Fr4.0-HEAD&old=12578%40NEMO%2Freleases%2Fr4.0%2Fr4.0-HEAD&sfp_email=&sfph_mail=
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, sig1_pnorm, sig2_pnorm, beta_evp, uice_cvg, dmilam, icehlid_cat, iceaepnd_cat, tice_cvgerr, tice_cvgstp, dmilam
- 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 landfast59 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_lf relax= 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 = 1 20 ! number of EVP subcycles97 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_bot679 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 bottom1056 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 mprat 2= 0.01 ! Diatoms mortality rate199 mpratd = 0.01 ! Diatoms mortality rate … … 232 xpref2d = 1. ! zoo preference for phyto233 xpref2 p = 1. ! zoo preference for POC232 xpref2d = 1. ! zoo preference for Diatoms 233 xpref2n = 1. ! zoo preference for nanophyto … … 235 xpref2m = 0.2 ! meso preference forzoo236 xpref2c = 0.3 ! zoo preference for poc235 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 -->