MODULE thd_ice !!====================================================================== !! *** MODULE thd_ice *** !! LIM sea-ice : Ice thermodynamics in 1D !!===================================================================== !! History : !! 2.0 ! 02-11 (C. Ethe) F90: Free form and module !!---------------------------------------------------------------------- !! LIM 3.0, UCL-LOCEAN-IPSL (2008) !! $Id$ !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) !!---------------------------------------------------------------------- !! * Modules used USE par_ice IMPLICIT NONE PRIVATE !!--------------------------- !! * Share Module variables !!--------------------------- REAL(wp) , PUBLIC :: & !!! ** ice-thermo namelist (namicethd) ** hmelt = -0.15 , & !: maximum melting at the bottom; active only for !: one category hicmin = 0.2 , & !: (REMOVE) hiclim = 0.05 , & !: minimum ice thickness amax = 0.999 , & !: maximum lead fraction sbeta = 1.0 , & !: numerical scheme for diffusion in ice (REMOVE) parlat = 0.0 , & !: (REMOVE) hakspl = 0.5 , & !: (REMOVE) hibspl = 0.5 , & !: (REMOVE) exld = 2.0 , & !: (REMOVE) hakdif = 1.0 , & !: (REMOVE) thth = 0.2 , & !: (REMOVE) hnzst = 0.1 , & !: thick. of the surf. layer in temp. comp. parsub = 1.0 , & !: switch for snow sublimation or not alphs = 1.0 , & !: coef. for snow density when snow-ice formation fraz_swi= 1.0 , & !: use of frazil ice collection in function of wind (1.0) or not (0.0) maxfrazb= 0.7 , & !: maximum portion of frazil ice collecting at the ice bottom vfrazb = 0.41667, & !: threshold drift speed for collection of bottom frazil ice Cfrazb = 5.0 !: squeezing coefficient for collection of bottom frazil ice REAL(wp), PUBLIC, DIMENSION(2) :: & !: hiccrit = (/0.3,0.3/) !: ice th. for lateral accretion in the NH (SH) (m) !!----------------------------- !! * Share 1D Module variables !!----------------------------- !: In ice thermodynamics, to spare memory, the vectors are folded !: from 1D to 2D vectors. The following variables, with ending _1d (or _b) !: are the variables corresponding to 2d vectors INTEGER , PUBLIC, DIMENSION(jpij) :: & !: npb , & !: number of points where computations has to be done npac !: correspondance between the points (lateral accretion) REAL(wp), PUBLIC, DIMENSION(jpij) :: & !: qldif_1d , & !: corresponding to the 2D var qldif qcmif_1d , & !: corresponding to the 2D var qcmif fstbif_1d , & !: " " fstric fltbif_1d , & !: " " ffltbif fscbq_1d , & !: " " fscmcbq qsr_ice_1d , & !: " " qsr_ice fr1_i0_1d , & !: " " fr1_i0 fr2_i0_1d , & !: " " fr2_i0 qnsr_ice_1d , & !: " " qns_ice qfvbq_1d , & !: " " qfvbq t_bo_b !: " " t_bo REAL(wp), PUBLIC, DIMENSION(jpij) :: & !: sprecip_1d , & !: " " sprecip frld_1d , & !: " " frld at_i_b , & !: " " frld fbif_1d , & !: " " fbif rdmicif_1d , & !: " " rdmicif rdmsnif_1d , & !: " " rdmsnif qlbbq_1d , & !: " " qlbsbq dmgwi_1d , & !: " " dmgwi dvsbq_1d , & !: " " rdvosif dvbbq_1d , & !: " " rdvobif dvlbq_1d , & !: " " rdvolif dvnbq_1d , & !: " " rdvolif dqns_ice_1d , & !: " " dqns_ice qla_ice_1d , & !: " " qla_ice dqla_ice_1d , & !: " " dqla_ice ! to reintegrate longwave flux inside the ice thermodynamics !!sm: not used qtur_ice_1d , & !: " " qtur_ice !!sm: not used dqtu_ice_1d , & !: " " dqtu_ice !!sm: not used catm_ice_1d , & !: " " catm_ice tatm_ice_1d , & !: " " tatm_ice !!sm: not used evsq_ice_1d , & !: " " evsq_ice !!sm: not used sbud_ice_1d , & !: " " sbud_ice fsup , & !: Energy flux sent from bottom to lateral ablation if |dhb|> 0.15 m focea , & !: Remaining energy in case of total ablation i0 , & !: fraction of radiation transmitted to the ice interior old_ht_i_b , & !: Ice thickness at the beginnning of the time step [m] old_ht_s_b , & !: Snow thickness at the beginning of the time step [m] fsbri_1d , & !: Salt flux due to brine drainage fhbri_1d , & !: Heat flux due to brine drainage fseqv_1d , & !: Equivalent Salt flux due to ice growth/decay dsm_i_fl_1d , & !: Ice salinity variations due to flushing dsm_i_gd_1d , & !: Ice salinity variations due to gravity drainage dsm_i_se_1d , & !: Ice salinity variations due to basal salt entrapment !!sm: not used dsm_i_la_1d , & !: Ice salinity variations due to lateral accretion dsm_i_si_1d , & !: Ice salinity variations due to lateral accretion hicol_b !: Ice collection thickness accumulated in fleads REAL(wp), PUBLIC, DIMENSION(jpij) :: & !: t_su_b , & !: " " t_su a_i_b , & !: a_i ht_i_b , & !: " " ht_s ht_s_b , & !: " " ht_i fc_su , & !: Surface Conduction flux fc_bo_i , & !: Bottom Conduction flux dh_s_tot , & !: Snow accretion/ablation [m] dh_i_surf , & !: Ice surface accretion/ablation [m] dh_i_bott , & !: Ice bottom accretion/ablation [m] dh_snowice , & !: Snow ice formation [m of ice] sm_i_b , & !: Ice bulk salinity [ppt] s_i_new , & !: Salinity of new ice at the bottom s_snowice , & !: Salinity of new snow ice on top of the ice o_i_b !: Ice age [days] REAL(wp), PUBLIC, DIMENSION(jpij,nlay_s) :: & !: t_s_b !: corresponding to the 2D var t_s REAL(wp), PUBLIC, DIMENSION(jpij,jkmax) :: & !: t_i_b, & !: corresponding to the 2D var t_i s_i_b, & !: profiled ice salinity q_i_b, & !: Ice enthalpy per unit volume q_s_b !: Snow enthalpy per unit volume ! Clean the following ... ! These variables are coded for conservation checks REAL(wp), PUBLIC, DIMENSION(jpij,jpl) :: & ! qt_i_in , & !: ice energy summed over categories (initial) qt_i_fin , & !: ice energy summed over categories (final) qt_s_in, qt_s_fin , & !: snow energy summed over categories dq_i, sum_fluxq , & !: increment of energy, sum of fluxes fatm, foce, & !: atmospheric, oceanic, heat flux cons_error, surf_error !: conservation, surface error REAL(wp), PUBLIC, DIMENSION(jpij,jkmax):: & !: goes to trash q_i_layer_in, & q_i_layer_fin, & dq_i_layer, radab REAL(wp), PUBLIC, DIMENSION(jpij) :: & !: ftotal_in , & !: initial total heat flux ftotal_fin !: final total heat flux REAL(wp), PUBLIC, DIMENSION(jpij,0:nlay_s) :: & !: fc_s REAL(wp), PUBLIC, DIMENSION(jpij,0:jkmax) :: & !: fc_i REAL(wp), PUBLIC, DIMENSION(jpij,nlay_s) :: & !: de_s_lay REAL(wp), PUBLIC, DIMENSION(jpij,jkmax) :: & !: de_i_lay INTEGER , PUBLIC :: & jiindex_1d ! 1D index of debugging point !!====================================================================== END MODULE thd_ice