MODULE ice !!====================================================================== !! *** MODULE ice *** !! sea-ice: ice variables defined in memory !!====================================================================== !! History : 3.0 ! 2008-03 (M. Vancoppenolle) Original code !! 4.0 ! 2018 (many people) SI3 [aka Sea Ice cube] !!---------------------------------------------------------------------- #if defined key_si3 !!---------------------------------------------------------------------- !! 'key_si3' SI3 sea-ice model !!---------------------------------------------------------------------- USE in_out_manager ! I/O manager USE lib_mpp ! MPP library IMPLICIT NONE PRIVATE PUBLIC ice_alloc ! called by icestp.F90 !!====================================================================== !! | !! I C E S T A T E V A R I A B L E S | !! | !! Introduction : | !! -------------- | !! Every ice-covered grid cell is characterized by a series of state | !! variables. To account for unresolved spatial variability in ice | !! thickness, the ice cover in divided in ice thickness categories. | !! | !! Sea ice state variables depend on the ice thickness category | !! | !! Those variables are divided into two groups | !! * Extensive (or global) variables. | !! These are the variables that are transported by all means | !! * Intensive (or equivalent) variables. | !! These are the variables that are either physically more | !! meaningful and/or used in ice thermodynamics | !! | !! List of ice state variables : | !! ----------------------------- | !! | !!-------------|-------------|---------------------------------|-------| !! name in | name in | meaning | units | !! 2D routines | 1D routines | | | !!-------------|-------------|---------------------------------|-------| !! | !! ******************************************************************* | !! *** Dynamical variables (prognostic) *** | !! ******************************************************************* | !! | !! u_ice | - | Comp. U of the ice velocity | m/s | !! v_ice | - | Comp. V of the ice velocity | m/s | !! | !! ******************************************************************* | !! *** Category dependent state variables (prognostic) *** | !! ******************************************************************* | !! | !! ** Global variables | !!-------------|-------------|---------------------------------|-------| !! a_i | a_i_1d | Ice concentration | | !! v_i | - | Ice volume per unit area | m | !! v_s | - | Snow volume per unit area | m | !! sv_i | - | Sea ice salt content | ppt.m | !! oa_i ! - ! Sea ice areal age content | s | !! e_i ! - ! Ice enthalpy | J/m2 | !! - ! e_i_1d ! Ice enthalpy per unit vol. | J/m3 | !! e_s ! - ! Snow enthalpy | J/m2 | !! - ! e_s_1d ! Snow enthalpy per unit vol. | J/m3 | !! | !!-------------|-------------|---------------------------------|-------| !! | !! ** Equivalent variables | !!-------------|-------------|---------------------------------|-------| !! | !! h_i | h_i_1d | Ice thickness | m | !! h_s ! h_s_1d | Snow depth | m | !! s_i ! s_i_1d | Sea ice bulk salinity ! ppt | !! sz_i ! sz_i_1d | Sea ice salinity profile ! ppt | !! o_i ! - | Sea ice Age ! s | !! t_i ! t_i_1d | Sea ice temperature ! K | !! t_s ! t_s_1d | Snow temperature ! K | !! t_su ! t_su_1d | Sea ice surface temperature ! K | !! | !! notes: the ice model only sees a bulk (i.e., vertically averaged) | !! salinity, except in thermodynamic computations, for which | !! the salinity profile is computed as a function of bulk | !! salinity | !! | !! the sea ice surface temperature is not associated to any | !! heat content. Therefore, it is not a state variable and | !! does not have to be advected. Nevertheless, it has to be | !! computed to determine whether the ice is melting or not | !! | !! ******************************************************************* | !! *** Category-summed state variables (diagnostic) *** | !! ******************************************************************* | !! at_i | at_i_1d | Total ice concentration | | !! vt_i | - | Total ice vol. per unit area | m | !! vt_s | - | Total snow vol. per unit ar. | m | !! sm_i | - | Mean sea ice salinity | ppt | !! tm_i | - | Mean sea ice temperature | K | !! tm_s | - | Mean snow temperature | K | !! et_i ! - ! Total ice enthalpy | J/m2 | !! et_s ! - ! Total snow enthalpy | J/m2 | !! bv_i ! - ! relative brine volume | ??? | !!===================================================================== !!---------------------------------------------------------------------- !! * Share Module variables !!---------------------------------------------------------------------- ! !!** ice-generic parameters namelist (nampar) ** INTEGER , PUBLIC :: jpl !: number of ice categories INTEGER , PUBLIC :: nlay_i !: number of ice layers INTEGER , PUBLIC :: nlay_s !: number of snow layers INTEGER , PUBLIC :: nn_virtual_itd !: virtual ITD mono-category parameterizations (1-3) or not (0) LOGICAL , PUBLIC :: ln_icedyn !: flag for ice dynamics (T) or not (F) LOGICAL , PUBLIC :: ln_icethd !: flag for ice thermo (T) or not (F) REAL(wp) , PUBLIC :: rn_amax_n !: maximum ice concentration Northern hemisphere REAL(wp) , PUBLIC :: rn_amax_s !: maximum ice concentration Southern hemisphere CHARACTER(len=256), PUBLIC :: cn_icerst_in !: suffix of ice restart name (input) CHARACTER(len=256), PUBLIC :: cn_icerst_out !: suffix of ice restart name (output) CHARACTER(len=256), PUBLIC :: cn_icerst_indir !: ice restart input directory CHARACTER(len=256), PUBLIC :: cn_icerst_outdir !: ice restart output directory ! !!** ice-itd namelist (namitd) ** REAL(wp), PUBLIC :: rn_himin !: minimum ice thickness ! !!** ice-dynamics namelist (namdyn) ** REAL(wp), PUBLIC :: rn_ishlat !: lateral boundary condition for sea-ice LOGICAL , PUBLIC :: ln_landfast_L16 !: landfast ice parameterizationfrom lemieux2016 LOGICAL , PUBLIC :: ln_landfast_home !: landfast ice parameterizationfrom home made REAL(wp), PUBLIC :: rn_depfra !: fraction of ocean depth that ice must reach to initiate landfast ice REAL(wp), PUBLIC :: rn_icebfr !: maximum bottom stress per unit area of contact (lemieux2016) or per unit volume (home) REAL(wp), PUBLIC :: rn_lfrelax !: relaxation time scale (s-1) to reach static friction REAL(wp), PUBLIC :: rn_tensile !: isotropic tensile strength ! ! !!** ice-ridging/rafting namelist (namdyn_rdgrft) ** REAL(wp), PUBLIC :: rn_crhg !: determines changes in ice strength (also used for landfast param) ! ! !!** ice-rheology namelist (namdyn_rhg) ** LOGICAL , PUBLIC :: ln_aEVP !: using adaptive EVP (T or F) REAL(wp), PUBLIC :: rn_creepl !: creep limit : has to be under 1.0e-9 REAL(wp), PUBLIC :: rn_ecc !: eccentricity of the elliptical yield curve INTEGER , PUBLIC :: nn_nevp !: number of iterations for subcycling REAL(wp), PUBLIC :: rn_relast !: ratio => telast/rdt_ice (1/3 or 1/9 depending on nb of subcycling nevp) ! ! !!** ice-advection namelist (namdyn_adv) ** LOGICAL , PUBLIC :: ln_adv_Pra !: Prather advection scheme LOGICAL , PUBLIC :: ln_adv_UMx !: Ultimate-Macho advection scheme ! ! !!** ice-surface forcing namelist (namforcing) ** ! -- icethd_dh -- ! REAL(wp), PUBLIC :: rn_blow_s !: coef. for partitioning of snowfall between leads and sea ice ! -- icethd -- ! REAL(wp), PUBLIC :: rn_cio !: drag coefficient for oceanic stress INTEGER , PUBLIC :: nn_flxdist !: Redistribute heat flux over ice categories ! ! =-1 Do nothing (needs N(cat) fluxes) ! ! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice ! ! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice using T-ice and albedo sensitivity ! ! = 2 Redistribute a single flux over categories INTEGER , PUBLIC :: nice_jules !: Choice of jules coupling INTEGER , PUBLIC, PARAMETER :: np_jules_OFF = 0 !: no Jules coupling (ice thermodynamics forced via qsr and qns) INTEGER , PUBLIC, PARAMETER :: np_jules_EMULE = 1 !: emulated Jules coupling via icethd_zdf.F90 (BL99) (1st round compute qcn and qsr_tr, 2nd round use it) INTEGER , PUBLIC, PARAMETER :: np_jules_ACTIVE = 2 !: active Jules coupling (SM0L) (compute qcn and qsr_tr via sbcblk.F90 or sbccpl.F90) ! !!** ice-vertical diffusion namelist (namthd_zdf) ** LOGICAL , PUBLIC :: ln_cndi_U64 !: thermal conductivity: Untersteiner (1964) LOGICAL , PUBLIC :: ln_cndi_P07 !: thermal conductivity: Pringle et al (2007) REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation Grenfell et al. (2006) [1/m] REAL(wp), PUBLIC :: rn_cnd_s !: thermal conductivity of the snow [W/m/K] ! !!** ice-salinity namelist (namthd_sal) ** INTEGER , PUBLIC :: nn_icesal !: salinity configuration used in the model ! ! 1 - constant salinity in both space and time ! ! 2 - prognostic salinity (s(z,t)) ! ! 3 - salinity profile, constant in time REAL(wp), PUBLIC :: rn_icesal !: bulk salinity (ppt) in case of constant salinity REAL(wp), PUBLIC :: rn_simax !: maximum ice salinity [PSU] REAL(wp), PUBLIC :: rn_simin !: minimum ice salinity [PSU] ! !!** ice-ponds namelist (namthd_pnd) LOGICAL , PUBLIC :: ln_pnd_H12 !: Melt ponds scheme from Holland et al 2012 LOGICAL , PUBLIC :: ln_pnd_fwb !: melt ponds store freshwater LOGICAL , PUBLIC :: ln_pnd_CST !: Melt ponds scheme with constant fraction and depth REAL(wp), PUBLIC :: rn_apnd !: prescribed pond fraction (0