MODULE ice !!====================================================================== !! *** MODULE ice *** !! LIM-3 Sea Ice physics: diagnostics variables of ice defined in memory !!===================================================================== !! History : 3.0 ! 2008-03 (M. Vancoppenolle) original code LIM-3 !! 4.0 ! 2011-02 (G. Madec) dynamical allocation !!---------------------------------------------------------------------- #if defined key_lim3 !!---------------------------------------------------------------------- !! 'key_lim3' LIM-3 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 !!====================================================================== !! LIM3 by the use of sweat, agile fingers and sometimes brain juice, !! was developed in Louvain-la-Neuve by : !! * Martin Vancoppenolle (UCL-ASTR, Belgium) !! * Sylvain Bouillon (UCL-ASTR, Belgium) !! * Miguel Angel Morales Maqueda (NOC-L, UK) !! !! Based on extremely valuable earlier work by !! * Thierry Fichefet !! * Hugues Goosse !! !! The following persons also contributed to the code in various ways !! * Gurvan Madec, Claude Talandier, Christian Ethe (LOCEAN, France) !! * Xavier Fettweis (UCL-ASTR), Ralph Timmermann (AWI, Germany) !! * Bill Lipscomb (LANL), Cecilia Bitz (UWa) !! and Elisabeth Hunke (LANL), USA. !! !! For more info, the interested user is kindly invited to consult the following references !! For model description and validation : !! * Vancoppenolle et al., Ocean Modelling, 2008a. !! * Vancoppenolle et al., Ocean Modelling, 2008b. !! For a specific description of EVP : !! * Bouillon et al., Ocean Modelling 2009. !! !! Or the reference manual, that should be available by 2011 !!====================================================================== !! | !! 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 | !! | !! Routines in icevar.F90 perform conversions | !! - ice_var_glo2eqv : from global to equivalent variables | !! - ice_var_eqv2glo : from equivalent to global variables | !! | !! For various purposes, the sea ice state variables have sometimes | !! to be aggregated over all ice thickness categories. This operation | !! is done in : | !! - ice_var_agg | !! | !! in icestp.F90, the routines that compute the changes in the ice | !! state variables are called | !! - ice_rhg : ice dynamics | !! - ice_adv : ice advection | !! - ice_rdgrft : ice ridging and rafting | !! - ice_thd : ice halo-thermodynamics and creation of new ice | !! - ice_itd : thermodynamic changes in ice thickness distribution | !! | !! See the associated routines for more information | !! | !! 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 | !! smv_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 | !!-------------|-------------|---------------------------------|-------| !! | !! ht_i | ht_i_1d | Ice thickness | m | !! ht_s ! ht_s_1d | Snow depth | m | !! sm_i ! sm_i_1d | Sea ice bulk salinity ! ppt | !! s_i ! s_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 | !! smt_i | - | Mean sea ice salinity | ppt | !! tm_i | - | Mean sea ice 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 (namice_run) ** INTEGER , PUBLIC :: jpl !: number of ice categories INTEGER , PUBLIC :: nlay_i !: number of ice layers INTEGER , PUBLIC :: nlay_s !: number of snow layers 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=32) , PUBLIC :: cn_icerst_in !: suffix of ice restart name (input) CHARACTER(len=32) , 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 (namice_itd) ** REAL(wp), PUBLIC :: rn_himin !: minimum ice thickness ! !!** ice-dynamics namelist (namice_dyn) ** LOGICAL, PUBLIC :: ln_dynFULL !: dyn.: full ice dynamics (rheology + advection + ridging/rafting + correction) LOGICAL, PUBLIC :: ln_dynRHGADV !: dyn.: no ridge/raft & no corrections (rheology + advection) LOGICAL, PUBLIC :: ln_dynADV !: dyn.: only advection w prescribed vel.(rn_uvice + advection) REAL(wp), PUBLIC :: rn_ishlat !: lateral boundary condition for sea-ice REAL(wp), PUBLIC :: rn_cio !: drag coefficient for oceanic stress LOGICAL , PUBLIC :: ln_landfast !: landfast ice parameterization (T or F) REAL(wp), PUBLIC :: rn_gamma !: 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 (landfast ice) REAL(wp), PUBLIC :: rn_lfrelax !: relaxation time scale (s-1) to reach static friction (landfast ice) ! ! !!** ice-rdige/raft namelist (namice_rdgrft) ** LOGICAL , PUBLIC :: ln_str_H79 !: ice strength parameterization (Hibler79) REAL(wp), PUBLIC :: rn_pstar !: determines ice strength, Hibler JPO79 REAL(wp), PUBLIC :: rn_crhg !: determines changes in ice strength LOGICAL , PUBLIC :: ln_str_R75 !: ice strength parameterization (Rothrock75) REAL(wp), PUBLIC :: rn_perdg !: ridging work divided by pot. energy change in ridging ! ! !!** ice-rheology namelist (namice_rhg) ** LOGICAL , PUBLIC :: ln_rhg_EVP !: EVP rheology 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 (namice_adv) ** LOGICAL , PUBLIC :: ln_adv_Pra !: Prather advection scheme LOGICAL , PUBLIC :: ln_adv_UMx !: Ultimate-Macho advection scheme INTEGER , PUBLIC :: nn_UMx !: order of the UMx advection scheme ! ! !!** ice-thermodynamics namelist (namice_thd) ** ! -- icethd_dif -- ! REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation Grenfell et al. (2006) [1/m] LOGICAL , PUBLIC :: ln_cndi_U64 !: thermal conductivity: Untersteiner (1964) LOGICAL , PUBLIC :: ln_cndi_P07 !: thermal conductivity: Pringle et al (2007) LOGICAL , PUBLIC :: ln_dqns_i !: change non-solar surface flux with changing surface temperature (T) or not (F) INTEGER , PUBLIC :: nn_monocat !: virtual ITD mono-category parameterizations (1-4) or not (0) REAL(wp), PUBLIC :: rn_cnd_s !: thermal conductivity of the snow [W/m/K] ! -- icethd_dh -- ! LOGICAL , PUBLIC :: ln_icedH !: activate ice thickness change from growing/melting (T) or not (F) REAL(wp), PUBLIC :: rn_blow_s !: coef. for partitioning of snowfall between leads and sea ice ! -- icethd_da -- ! LOGICAL , PUBLIC :: ln_icedA !: activate lateral melting param. (T) or not (F) REAL(wp), PUBLIC :: rn_beta !: coef. beta for lateral melting param. REAL(wp), PUBLIC :: rn_dmin !: minimum floe diameter for lateral melting param. ! -- icethd_lac -- ! LOGICAL , PUBLIC :: ln_icedO !: activate ice growth in open-water (T) or not (F) REAL(wp), PUBLIC :: rn_hinew !: thickness for new ice formation (m) LOGICAL , PUBLIC :: ln_frazil !: use of frazil ice collection as function of wind (T) or not (F) REAL(wp), PUBLIC :: rn_maxfraz !: maximum portion of frazil ice collecting at the ice bottom REAL(wp), PUBLIC :: rn_vfraz !: threshold drift speed for collection of bottom frazil ice REAL(wp), PUBLIC :: rn_Cfraz !: squeezing coefficient for collection of bottom frazil ice ! -- icethd -- ! INTEGER , PUBLIC :: nn_iceflx !: 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 ! !!** ice-salinity namelist (namice_sal) ** LOGICAL , PUBLIC :: ln_icedS !: activate gravity drainage and flushing (T) or not (F) 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_sal_gd !: restoring salinity for gravity drainage [PSU] REAL(wp), PUBLIC :: rn_time_gd !: restoring time constant for gravity drainage (= 20 days) [s] REAL(wp), PUBLIC :: rn_sal_fl !: restoring salinity for flushing [PSU] REAL(wp), PUBLIC :: rn_time_fl !: restoring time constant for gravity drainage (= 10 days) [s] REAL(wp), PUBLIC :: rn_simax !: maximum ice salinity [PSU] REAL(wp), PUBLIC :: rn_simin !: minimum ice salinity [PSU] ! MV MP 2016 ! !!** melt pond namelist (namicemp) LOGICAL , PUBLIC :: ln_pnd !: activate ponds or not LOGICAL , PUBLIC :: ln_pnd_rad !: ponds radiatively active or not LOGICAL , PUBLIC :: ln_pnd_fw !: ponds active wrt meltwater or not INTEGER , PUBLIC :: nn_pnd_scheme !: type of melt pond scheme: =0 prescribed, =1 empirical, =2 topographic REAL(wp), PUBLIC :: rn_apnd !: prescribed pond fraction (0