= 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 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 - 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, 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 @@ - + }}}