= Announcement of NEMO release 4.0.4 = We are pleased to announce the "minor" 4.0.4 release, now available here: ​​​ [[BR]] https://forge.ipsl.jussieu.fr/nemo/browser/NEMO/releases/r4.0/r4.0.4 [[BR]] 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 - 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 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: {{{#!diff Index: namelist_ice_ref =================================================================== --- namelist_ice_ref (revision 12578) +++ namelist_ice_ref (revision 13511) @@ -45 +45,2 @@ - rn_himin = 0.1 ! minimum ice thickness (m) used in remapping + rn_himin = 0.1 ! minimum ice thickness (m) allowed + rn_himax = 99.0 ! maximum ice thickness (m) allowed @@ -58 +59 @@ - rn_depfra = 0.125 ! fraction of ocean depth that ice must reach to initiate landfast + rn_lf_depfra = 0.125 ! fraction of ocean depth that ice must reach to initiate landfast @@ -60,3 +61,3 @@ - rn_icebfr = 15. ! maximum bottom stress per unit volume [N/m3] - rn_lfrelax = 1.e-5 ! relaxation time scale to reach static friction [s-1] - rn_tensile = 0.05 ! isotropic tensile strength [0-0.5??] + rn_lf_bfr = 15. ! maximum bottom stress per unit volume [N/m3] + rn_lf_relax = 1.e-5 ! relaxation time scale to reach static friction [s-1] + rn_lf_tensile = 0.05 ! isotropic tensile strength [0-0.5??] @@ -96 +97 @@ - nn_nevp = 120 ! number of EVP subcycles + nn_nevp = 100 ! number of EVP subcycles @@ -98 +99,6 @@ - ! advised value: 1/3 (rn_nevp=120) or 1/9 (rn_nevp=300) + ! advised value: 1/3 (nn_nevp=100) or 1/9 (nn_nevp=300) + nn_rhg_chkcvg = 0 ! check convergence of rheology + ! = 0 no check + ! = 1 check at the main time step (output xml: uice_cvg) + ! = 2 check at both main and rheology time steps (additional output: ice_cvg.nc) + ! this option 2 asks a lot of communications between cpu @@ -111 +117,5 @@ - rn_blow_s = 0.66 ! mesure of snow blowing into the leads + nn_snwfra = 2 ! calculate the fraction of ice covered by snow (for zdf and albedo) + ! = 0 fraction = 1 (if snow) or 0 (if no snow) + ! = 1 fraction = 1-exp(-0.2*rhos*hsnw) [MetO formulation] + ! = 2 fraction = hsnw / (hsnw+0.02) [CICE formulation] + rn_snwblow = 0.66 ! mesure of snow blowing into the leads @@ -119,0 +130,3 @@ + nn_qtrice = 1 ! Solar flux transmitted thru the surface scattering layer: + ! = 0 Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow) + ! = 1 Lebrun 2019 (equals 0.3 anytime with different melting/dry snw conductivities) @@ -127,0 +141,2 @@ + ! + ln_leadhfx = .true. ! heat in the leads is used to melt sea-ice before warming the ocean @@ -137,0 +153,4 @@ + rn_kappa_s = 10.0 ! nn_qtrice = 0: radiation attenuation coefficient in snow [1/m] + rn_kappa_smlt = 7.0 ! nn_qtrice = 1: radiation attenuation coefficient in melting snow [1/m] + rn_kappa_sdry = 10.0 ! radiation attenuation coefficient in dry snow [1/m] + ln_zdf_chkcvg = .false. ! check convergence of heat diffusion scheme (outputs: tice_cvgerr, tice_cvgstp) @@ -177,3 +196,5 @@ - ln_pnd = .false. ! activate melt ponds or not - ln_pnd_H12 = .false. ! activate evolutive melt ponds (from Holland et al 2012) - ln_pnd_CST = .false. ! activate constant melt ponds + ln_pnd = .true. ! activate melt ponds or not + ln_pnd_LEV = .true. ! level ice melt ponds (from Flocco et al 2007,2010 & Holland et al 2012) + rn_apnd_min = 0.15 ! minimum ice fraction that contributes to melt pond. range: 0.0 -- 0.15 ?? + rn_apnd_max = 0.85 ! maximum ice fraction that contributes to melt pond. range: 0.7 -- 0.85 ?? + ln_pnd_CST = .false. ! constant melt ponds @@ -182 +203,2 @@ - ln_pnd_alb = .false. ! melt ponds affect albedo or not + ln_pnd_lids = .true. ! frozen lids on top of the ponds (only for ln_pnd_LEV) + ln_pnd_alb = .true. ! effect of melt ponds on ice albedo @@ -188 +210,3 @@ - ln_iceini_file = .false. ! netcdf file provided for initialization (T) or not (F) + nn_iceini_file = 0 ! 0 = Initialise sea ice based on SSTs + ! 1 = Initialise sea ice from single category netcdf file + ! 2 = Initialise sea ice from multi category restart file @@ -208 +232,3 @@ - ! -- for ln_iceini_file = T + rn_hld_ini_n = 0.0 ! initial pond lid depth (m), North + rn_hld_ini_s = 0.0 ! " " South + ! -- for nn_iceini_file = 1 @@ -218,0 +245 @@ + sn_hld = 'NOT USED' , -12 ,'hld' , .false. , .true., 'yearly' , '' , '', '' Index: namelist_ref =================================================================== --- namelist_ref (revision 12578) +++ namelist_ref (revision 13511) @@ -283 +283,2 @@ - sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' + sn_cc = 'NOT USED' , 24. , 'CC' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' + sn_tdif = 'taudif_core' , 24. , 'taudif' , .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' @@ -290,0 +292 @@ + ln_scale_ice_flux = .false. ! use ice fluxes that are already "ice weighted" ( i.e. multiplied ice concentration) @@ -418,0 +421 @@ + ln_rnf_icb = .false. ! read in iceberg flux from a file (fill sn_i_rnf if .true.) @@ -428,0 +432 @@ + sn_i_rnf = 'NOT_USED' , -1. , 'sorunoff', .true. , .true. , 'yearly' , '' , '' , '' @@ -644,0 +649 @@ + bn_hil = 'NOT USED' , 24. , 'sihlid' , .true. , .false., 'daily' , '' , '' , '' @@ -650,0 +656 @@ + rn_ice_hlid = 0.0 ! -- pond lid depth -- @@ -664,2 +670,2 @@ -!! namdrg_top top friction (ln_OFF=F & ln_isfcav=T) -!! namdrg_bot bottom friction (ln_OFF=F) +!! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) +!! namdrg_bot bottom friction (ln_drg_OFF=F) @@ -673 +679 @@ - ln_OFF = .false. ! free-slip : Cd = 0 (F => fill namdrg_bot + ln_drg_OFF = .false. ! free-slip : Cd = 0 (F => fill namdrg_bot @@ -678,0 +685 @@ + ln_drgice_imp = .false. ! implicit ice-ocean drag @@ -681 +688 @@ -&namdrg_top ! TOP friction (ln_OFF =F & ln_isfcav=T) +&namdrg_top ! TOP friction (ln_drg_OFF =F & ln_isfcav=T) @@ -692 +699 @@ -&namdrg_bot ! BOTTOM friction (ln_OFF =F) +&namdrg_bot ! BOTTOM friction (ln_drg_OFF =F) @@ -1049 +1056 @@ - nn_mxl = 2 ! mixing length: = 0 bounded by the distance to surface and bottom + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom @@ -1053,0 +1061,6 @@ + nn_mxlice = 2 ! type of scaling under sea-ice + ! = 0 no scaling under sea-ice + ! = 1 scaling with constant sea-ice thickness + ! = 2 scaling with mean sea-ice thickness ( only with SI3 sea-ice model ) + ! = 3 scaling with maximum sea-ice thickness + rn_mxlice = 10. ! max constant ice thickness value when scaling under sea-ice ( nn_mxlice=1) @@ -1055 +1067,0 @@ - ln_drg = .false. ! top/bottom friction added as boundary condition of TKE @@ -1066 +1078,5 @@ - rn_eice = 4 ! below sea ice: =0 ON ; =4 OFF when ice fraction > 1/4 + nn_eice = 1 ! attenutaion of langmuir & surface wave breaking under ice + ! ! = 0 no impact of ice cover on langmuir & surface wave breaking + ! ! = 1 weigthed by 1-TANH(10*fr_i) + ! ! = 2 weighted by 1-fr_i + ! ! = 3 weighted by 1-MIN(1,4*fr_i) @@ -1078,0 +1095 @@ + rn_hsri = 0.03 ! Ice-ocean roughness @@ -1081,0 +1099,5 @@ + nn_z0_ice = 1 ! attenutaion of surface wave breaking under ice + ! ! = 0 no impact of ice cover + ! ! = 1 roughness uses rn_hsri and is weigthed by 1-TANH(10*fr_i) + ! ! = 2 roughness uses rn_hsri and is weighted by 1-fr_i + ! ! = 3 roughness uses rn_hsri and is weighted by 1-MIN(1,4*fr_i) Index: namelist_top_ref =================================================================== --- namelist_top_ref (revision 12578) +++ namelist_top_ref (revision 13511) @@ -124,2 +124,4 @@ - ln_trdmld_trc_restart = .false. ! restart for ML diagnostics - ln_trdmld_trc_instant = .true. ! flag to diagnose trends of instantantaneous or mean ML T/S + ln_trdmxl_trc_restart = .false. ! restart for ML diagnostics + ln_trdmxl_trc_instant = .true. ! flag to diagnose trends of instantantaneous or mean ML T/S + cn_trdrst_trc_in = 'restart_trd' ! suffix of pass. tracer trends restart name (input) + cn_trdrst_trc_out = 'restart_trd' ! suffix of pass. tracer trends restart name (output) Index: field_def_nemo-ice.xml =================================================================== --- field_def_nemo-ice.xml (revision 12578) +++ field_def_nemo-ice.xml (revision 13511) @@ -50,0 +51,2 @@ + + @@ -82,0 +85 @@ + @@ -172,0 +176,3 @@ + + + @@ -210,0 +217 @@ + @@ -288,0 +296 @@ + @@ -289,0 +298 @@ + @@ -300,0 +310,4 @@ + + + + @@ -559,0 +573 @@ + Index: namelist_pisces_ref =================================================================== --- namelist_pisces_ref (revision 12578) +++ namelist_pisces_ref (revision 13511) @@ -199 +199 @@ - mprat2 = 0.01 ! Diatoms mortality rate + mpratd = 0.01 ! Diatoms mortality rate @@ -232,2 +232,2 @@ - xpref2d = 1. ! zoo preference for phyto - xpref2p = 1. ! zoo preference for POC + xpref2d = 1. ! zoo preference for Diatoms + xpref2n = 1. ! zoo preference for nanophyto @@ -235,2 +235,2 @@ - xpref2m = 0.2 ! meso preference for zoo - xpref2c = 0.3 ! zoo preference for poc + xpref2m = 0.2 ! zoo preference for mesozoo + xpref2c = 0.3 ! zoo preference for POC Index: field_def_nemo-oce.xml =================================================================== --- field_def_nemo-oce.xml (revision 12578) +++ field_def_nemo-oce.xml (revision 13511) @@ -37,0 +38,8 @@ + + + + + + + + @@ -85 +92,0 @@ - @@ -536,0 +544,3 @@ + + + @@ -592 +602 @@ - + }}}