Changeset 8514
- Timestamp:
- 2017-09-08T17:09:25+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8183_ICEMODEL/NEMOGCM
- Files:
-
- 1 added
- 1 deleted
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/SHARED/namelist_ice_lim3_ref
r8512 r8514 40 40 !------------------------------------------------------------------------------ 41 41 ! -- ice_rdgrft_strength -- ! 42 ln_str_H ib= .true. ! ice strength param.: Hibler_79 => P = pstar*<h>*exp(-c_rhg*A)42 ln_str_H79 = .true. ! ice strength param.: Hibler_79 => P = pstar*<h>*exp(-c_rhg*A) 43 43 rn_pstar = 2.0e+04 ! ice strength thickness parameter (N/m2) 44 44 rn_crhg = 20.0 ! ice strength conc. parameter (-) 45 ln_str_R ot= .false. ! ice strength param.: Rothrock_75 => P = Cf*coeff*integral(wr.h^2)45 ln_str_R75 = .false. ! ice strength param.: Rothrock_75 => P = Cf*coeff*integral(wr.h^2) 46 46 rn_perdg = 17.0 ! ridging work divided by pot. energy change in ridging 47 47 ! -- ice_rdgrft -- ! … … 94 94 ln_adv_Pra = .false. ! Advection scheme (Prather) 95 95 ln_adv_UMx = .true. ! Advection scheme (Ultimate-Macho) 96 nn_UMx = 5 ! order of the scheme for UMx (1-5 )96 nn_UMx = 5 ! order of the scheme for UMx (1-5 ; 20=centered 2nd order) 97 97 / 98 98 !------------------------------------------------------------------------------ 99 99 &namice_thd ! Ice thermodynamics 100 100 !------------------------------------------------------------------------------ 101 ln_limthd = .true. ! ice thermo (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 102 ! -- limthd_dif -- ! 103 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice (m-1) 104 nn_ice_thcon = 1 ! sea ice thermal conductivity 105 ! 0: k = k0 + beta.S/T (Untersteiner, 1964) 106 ! 1: k = k0 + beta1.S/T - beta2.T (Pringle et al., 2007) 107 ln_dqnsice = .true. ! change the surface non-solar flux with surface temperature (T) or not (F) 108 rn_cdsn = 0.31 ! thermal conductivity of the snow (0.31 W/m/K, Maykut and Untersteiner, 1971) 109 ! Obs: 0.1-0.5 (Lecomte et al, JAMES 2013) 110 ! -- limthd_dh -- ! 111 ln_limdH = .true. ! activate ice thickness change from growing/melting (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 112 rn_betas = 0.66 ! exponent in lead-ice repratition of snow precipitation 113 ! betas = 1 -> equipartition, betas < 1 -> more on leads 114 ! -- limthd_da -- ! 115 ln_limdA = .true. ! activate lateral melting param. (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 116 rn_beta = 1.0 ! (ln_latmelt=T) coef. beta for lateral melting param. Recommended range=[0.8-1.2] 117 ! => decrease = more melt and melt peaks toward higher concentration (A~0.5 for beta=1 ; A~0.8 for beta=0.2) 118 ! 0.3 = best fit for western Fram Strait and Antarctica 119 ! 1.4 = best fit for eastern Fram Strait 120 rn_dmin = 8. ! (ln_latmelt=T) minimum floe diameter for lateral melting param. Recommended range=[6-10] 121 ! => 6 vs 8m = +40% melting at the peak (A~0.5) 122 ! 10 vs 8m = -20% melting 123 ! -- limthd_lac -- ! 124 ln_limdO = .true. ! activate ice growth in open-water (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 125 rn_hnewice = 0.1 ! thickness for new ice formation in open water (m) 126 ln_frazil = .false. ! Frazil ice parameterization (ice collection as a function of wind) 127 rn_maxfrazb = 1.0 ! (ln_frazil=T) maximum fraction of frazil ice collecting at the ice base 128 rn_vfrazb = 0.417 ! (ln_frazil=T) thresold drift speed for frazil ice collecting at the ice bottom (m/s) 129 rn_Cfrazb = 5.0 ! (ln_frazil=T) squeezing coefficient for frazil ice collecting at the ice bottom 101 ln_icethd = .true. ! ice thermo (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 102 ! -- limthd_dif -- ! 103 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice (m-1) 104 ln_cndi_U64 = .false. ! sea ice thermal conductivity: k = k0 + beta.S/T (Untersteiner, 1964) 105 ln_cndi_P07 = .true. ! sea ice thermal conductivity: k = k0 + beta1.S/T - beta2.T (Pringle et al., 2007) 106 ln_dqns_i = .true. ! change the surface non-solar flux with surface temperature (T) or not (F) 107 rn_cnd_s = 0.31 ! thermal conductivity of the snow (0.31 W/m/K, Maykut and Untersteiner, 1971) 108 ! Obs: 0.1-0.5 (Lecomte et al, JAMES 2013) 109 ! -- limthd_dh -- ! 110 ln_icedH = .true. ! activate ice thickness change from growing/melting (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 111 rn_blow_s = 0.66 ! mesure of snow blowing into the leads 112 ! = 1 => no snow blowing, < 1 => some snow blowing 113 ! -- limthd_da -- ! 114 ln_icedA = .true. ! activate lateral melting param. (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 115 rn_beta = 1.0 ! coef. beta for lateral melting param. Recommended range=[0.8-1.2] 116 ! => decrease = more melt and melt peaks toward higher concentration (A~0.5 for beta=1 ; A~0.8 for beta=0.2) 117 ! 0.3 = best fit for western Fram Strait and Antarctica 118 ! 1.4 = best fit for eastern Fram Strait 119 rn_dmin = 8. ! minimum floe diameter for lateral melting param. Recommended range=[6-10] 120 ! => 6 vs 8m = +40% melting at the peak (A~0.5) 121 ! 10 vs 8m = -20% melting 122 ! -- limthd_lac -- ! 123 ln_icedO = .true. ! activate ice growth in open-water (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 124 rn_hinew = 0.1 ! thickness for new ice formation in open water (m) 125 ln_frazil = .false. ! Frazil ice parameterization (ice collection as a function of wind) 126 rn_maxfraz = 1.0 ! maximum fraction of frazil ice collecting at the ice base 127 rn_vfraz = 0.417 ! thresold drift speed for frazil ice collecting at the ice bottom (m/s) 128 rn_Cfraz = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom 130 129 ! -- limitd_th -- ! 131 rn_himin = 0.1 ! minimum ice thickness (m) used in remapping, must be smaller than rn_hnewice 132 ! -- icestp -- ! 133 nn_limflx = -1 ! LIM3 Multi-category heat flux formulation (use -1 if LIM3 is not used) 134 ! =-1 Use per-category fluxes, bypass redistributor, forced mode only, not yet implemented coupled 135 ! = 0 Average per-category fluxes (forced and coupled mode) 136 ! = 1 Average and redistribute per-category fluxes, forced mode only, not yet implemented coupled 137 ! = 2 Redistribute a single flux over categories (coupled mode only) 130 rn_himin = 0.1 ! minimum ice thickness (m) used in remapping, must be smaller than rn_hnewice 131 ! -- icestp -- ! 132 nn_iceflx = -1 ! Redistribute heat flux over ice categories 133 ! =-1 Do nothing (needs N(cat) fluxes) 134 ! ==> forced mode only 135 ! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice 136 ! ==> forced and coupled modes 137 ! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice using T-ice and albedo sensitivity 138 ! ==> forced mode only 139 ! = 2 Redistribute a single flux over categories 140 ! ==> coupled mode only 138 141 / 139 142 !------------------------------------------------------------------------------ 140 143 &namice_sal ! Ice salinity 141 144 !------------------------------------------------------------------------------ 142 ! -- limthd_sal -- !143 ln_ limdS = .true.! activate gravity drainage and flushing (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO144 nn_icesal = 2 ! ice salinity option145 ! 1: constant ice salinity (S=rn_icesal)146 ! 2: varying salinity parameterization S(z,t)147 ! 3: prescribed salinity profile S(z), Schwarzacher, 1959148 rn_icesal = 4. ! (nn_icesal=1) ice salinity (g/kg)149 rn_sal_gd = 5. ! restoring ice salinity, gravity drainage (g/kg)150 rn_time_gd = 1.73e+6 ! restoring time scale, gravity drainage (s)151 rn_sal_fl = 2. ! restoring ice salinity, flushing (g/kg)152 rn_time_fl = 8.64e+5 ! restoring time scale, flushing (s)153 rn_simax = 20. ! maximum tolerated ice salinity (g/kg)154 rn_simin = 0.1 ! minimum tolerated ice salinity (g/kg)145 ! -- limthd_sal -- ! 146 ln_icedS = .true. ! activate gravity drainage and flushing (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 147 nn_icesal = 2 ! ice salinity option 148 ! 1: constant ice salinity (S=rn_icesal) 149 ! 2: varying salinity parameterization S(z,t) 150 ! 3: prescribed salinity profile S(z), Schwarzacher, 1959 151 rn_icesal = 4. ! (nn_icesal=1) ice salinity (g/kg) 152 rn_sal_gd = 5. ! restoring ice salinity, gravity drainage (g/kg) 153 rn_time_gd = 1.73e+6 ! restoring time scale, gravity drainage (s) 154 rn_sal_fl = 2. ! restoring ice salinity, flushing (g/kg) 155 rn_time_fl = 8.64e+5 ! restoring time scale, flushing (s) 156 rn_simax = 20. ! maximum tolerated ice salinity (g/kg) 157 rn_simin = 0.1 ! minimum tolerated ice salinity (g/kg) 155 158 / 156 159 !------------------------------------------------------------------------------ 157 160 &namicemp ! Melt ponds 158 161 !------------------------------------------------------------------------------ 159 ! -- limmp -- !160 ln_pnd = .false. ! active melt ponds161 ln_pnd_rad = .false. ! active melt ponds radiative coupling162 ln_pnd_fw = .false. ! active melt ponds freshwater coupling163 nn_pnd_scheme = 0! type of melt pond scheme : =0 prescribed ( Tsu=0 ), =1 empirical, =2 topographic164 rn_apnd = 0.2! prescribed pond fraction, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0)165 rn_hpnd = 0.05! prescribed pond depth, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0)162 ! -- limmp -- ! 163 ln_pnd = .false. ! active melt ponds 164 ln_pnd_rad = .false. ! active melt ponds radiative coupling 165 ln_pnd_fw = .false. ! active melt ponds freshwater coupling 166 nn_pnd_scheme = 0 ! type of melt pond scheme : =0 prescribed ( Tsu=0 ), =1 empirical, =2 topographic 167 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 168 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 166 169 / 167 170 !------------------------------------------------------------------------------ 168 171 &namice_ini ! Ice initialization 169 172 !------------------------------------------------------------------------------ 170 ! -- limistate -- !171 ln_iceini = .true. ! activate ice initialization (T) or not (F)172 ln_iceini_file = .false. ! netcdf file provided for initialization (T) or not (F)173 rn_thres_sst = 2.0! maximum water temperature with initial ice (degC)174 rn_hts_ini_n = 0.3! initial real snow thickness (m), North175 rn_hts_ini_s = 0.3! " " South176 rn_hti_ini_n = 3.0! initial real ice thickness (m), North177 rn_hti_ini_s = 1.0! " " South178 rn_ati_ini_n = 0.9! initial ice concentration (-), North179 rn_ati_ini_s = 0.9! " " South180 rn_smi_ini_n = 6.3! initial ice salinity (g/kg), North181 rn_smi_ini_s = 6.3! " " South182 rn_tmi_ini_n = 270.! initial ice/snw temperature (K), North183 rn_tmi_ini_s = 270.! " " South173 ! -- limistate -- ! 174 ln_iceini = .true. ! activate ice initialization (T) or not (F) 175 ln_iceini_file = .false. ! netcdf file provided for initialization (T) or not (F) 176 rn_thres_sst = 2.0 ! maximum water temperature with initial ice (degC) 177 rn_hts_ini_n = 0.3 ! initial real snow thickness (m), North 178 rn_hts_ini_s = 0.3 ! " " South 179 rn_hti_ini_n = 3.0 ! initial real ice thickness (m), North 180 rn_hti_ini_s = 1.0 ! " " South 181 rn_ati_ini_n = 0.9 ! initial ice concentration (-), North 182 rn_ati_ini_s = 0.9 ! " " South 183 rn_smi_ini_n = 6.3 ! initial ice salinity (g/kg), North 184 rn_smi_ini_s = 6.3 ! " " South 185 rn_tmi_ini_n = 270. ! initial ice/snw temperature (K), North 186 rn_tmi_ini_s = 270. ! " " South 184 187 185 188 sn_hti = 'Ice_initialization' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' … … 194 197 &namice_alb ! albedo parameters 195 198 !------------------------------------------------------------------------------ 196 nn_ice_alb = 1 ! parameterization of ice/snow albedo 197 ! 0: Shine & Henderson-Sellers (JGR 1985), giving clear-sky albedo 198 ! 1: "home made" based on Brandt et al. (JClim 2005) and Grenfell & Perovich (JGR 2004), 199 ! giving cloud-sky albedo 200 rn_alb_sdry = 0.85 ! dry snow albedo : 0.80 (nn_ice_alb = 0); 0.85 (nn_ice_alb = 1); obs 0.85-0.87 (cloud-sky) 201 rn_alb_smlt = 0.75 ! melting snow albedo : 0.65 ( '' ) ; 0.75 ( '' ) ; obs 0.72-0.82 ( '' ) 202 rn_alb_idry = 0.60 ! dry ice albedo : 0.72 ( '' ) ; 0.60 ( '' ) ; obs 0.54-0.65 ( '' ) 203 rn_alb_imlt = 0.50 ! bare puddled ice albedo : 0.53 ( '' ) ; 0.50 ( '' ) ; obs 0.49-0.58 ( '' ) 204 rn_alb_dpnd = 0.27 ! ponded ice albedo : 0.25 ( '' ) ; 0.27 ( '' ) ; obs 0.10-0.30 ( '' ) 199 nn_ice_alb = 1 ! parameterization of ice/snow albedo 200 ! 0: Shine & Henderson-Sellers (JGR 1985), giving clear-sky albedo 201 ! 1: "home made" based on Brandt et al. (JClim 2005) 202 ! and Grenfell & Perovich (JGR 2004), giving cloud-sky albedo 203 ! 2: as 1 with melt ponds 204 rn_alb_sdry = 0.85 ! dry snow albedo : 0.80 (nn_ice_alb = 0); 0.85 (nn_ice_alb = 1); obs 0.85-0.87 (cloud-sky) 205 rn_alb_smlt = 0.75 ! melting snow albedo : 0.65 ( '' ) ; 0.75 ( '' ) ; obs 0.72-0.82 ( '' ) 206 rn_alb_idry = 0.60 ! dry ice albedo : 0.72 ( '' ) ; 0.60 ( '' ) ; obs 0.54-0.65 ( '' ) 207 rn_alb_imlt = 0.50 ! bare puddled ice albedo : 0.53 ( '' ) ; 0.50 ( '' ) ; obs 0.49-0.58 ( '' ) 208 rn_alb_dpnd = 0.27 ! ponded ice albedo : 0.25 ( '' ) ; 0.27 ( '' ) ; obs 0.10-0.30 ( '' ) 205 209 / 206 210 !------------------------------------------------------------------------------ 207 211 &namice_dia ! Diagnostics 208 212 !------------------------------------------------------------------------------ 209 ln_ limdiachk = .false.! check online the heat, mass & salt budgets (T) or not (F)210 ln_ limdiahsb = .false.! output the heat, mass & salt budgets (T) or not (F)211 ln_ limctl = .false.! ice points output for debug (T or F)212 iiceprt = 10! i-index for debug213 jiceprt = 10! j-index for debug214 / 213 ln_icediachk = .false. ! check online the heat, mass & salt budgets (T) or not (F) 214 ln_icediahsb = .false. ! output the heat, mass & salt budgets (T) or not (F) 215 ln_icectl = .false. ! ice points output for debug (T or F) 216 iiceprt = 10 ! i-index for debug 217 jiceprt = 10 ! j-index for debug 218 / -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r8512 r8514 165 165 166 166 ! !!** ice-diagnostics namelist (namice_dia) ** 167 LOGICAL , PUBLIC :: ln_ limdiachk !: flag for ice diag (T) or not (F)168 LOGICAL , PUBLIC :: ln_ limdiahsb !: flag for ice diag (T) or not (F)169 LOGICAL , PUBLIC :: ln_ limctl !: flag for sea-ice points output (T) or not (F)167 LOGICAL , PUBLIC :: ln_icediachk !: flag for ice diag (T) or not (F) 168 LOGICAL , PUBLIC :: ln_icediahsb !: flag for ice diag (T) or not (F) 169 LOGICAL , PUBLIC :: ln_icectl !: flag for sea-ice points output (T) or not (F) 170 170 INTEGER , PUBLIC :: iiceprt !: debug i-point 171 171 INTEGER , PUBLIC :: jiceprt !: debug j-point … … 181 181 INTEGER , PUBLIC :: nn_UMx !: order of the UMx advection scheme 182 182 ! -- icerdgrft -- ! 183 LOGICAL , PUBLIC :: ln_str_H ib!: ice strength parameterization (Hibler79)183 LOGICAL , PUBLIC :: ln_str_H79 !: ice strength parameterization (Hibler79) 184 184 REAL(wp), PUBLIC :: rn_pstar !: determines ice strength, Hibler JPO79 185 185 REAL(wp), PUBLIC :: rn_crhg !: determines changes in ice strength 186 LOGICAL , PUBLIC :: ln_str_R ot!: ice strength parameterization (Rothrock75)186 LOGICAL , PUBLIC :: ln_str_R75 !: ice strength parameterization (Rothrock75) 187 187 REAL(wp), PUBLIC :: rn_perdg !: ridging work divided by pot. energy change in ridging 188 188 ! -- icerhg -- ! … … 199 199 200 200 ! !!** ice-thermodynamics namelist (namice_thd) ** 201 LOGICAL , PUBLIC :: ln_ limthd !: flag for ice thermo (T) or not (F)201 LOGICAL , PUBLIC :: ln_icethd !: flag for ice thermo (T) or not (F) 202 202 ! -- icethd_dif -- ! 203 203 REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation Grenfell et al. (2006) [1/m] 204 INTEGER , PUBLIC :: nn_ice_thcon !: thermal conductivity: =0 Untersteiner (1964) ; =1 Pringle et al (2007) 205 LOGICAL , PUBLIC :: ln_dqnsice !: change non-solar surface flux with changing surface temperature (T) or not (F) 204 LOGICAL , PUBLIC :: ln_cndi_U64 !: thermal conductivity: Untersteiner (1964) 205 LOGICAL , PUBLIC :: ln_cndi_P07 !: thermal conductivity: Pringle et al (2007) 206 LOGICAL , PUBLIC :: ln_dqns_i !: change non-solar surface flux with changing surface temperature (T) or not (F) 206 207 INTEGER , PUBLIC :: nn_monocat !: virtual ITD mono-category parameterizations (1-4) or not (0) 207 REAL(wp), PUBLIC :: rn_c dsn!: thermal conductivity of the snow [W/m/K]208 REAL(wp), PUBLIC :: rn_cnd_s !: thermal conductivity of the snow [W/m/K] 208 209 ! -- icethd_dh -- ! 209 LOGICAL , PUBLIC :: ln_ limdH !: activate ice thickness change from growing/melting (T) or not (F)210 REAL(wp), PUBLIC :: rn_b etas!: coef. for partitioning of snowfall between leads and sea ice210 LOGICAL , PUBLIC :: ln_icedH !: activate ice thickness change from growing/melting (T) or not (F) 211 REAL(wp), PUBLIC :: rn_blow_s !: coef. for partitioning of snowfall between leads and sea ice 211 212 ! -- icethd_da -- ! 212 LOGICAL , PUBLIC :: ln_ limdA !: activate lateral melting param. (T) or not (F)213 LOGICAL , PUBLIC :: ln_icedA !: activate lateral melting param. (T) or not (F) 213 214 REAL(wp), PUBLIC :: rn_beta !: coef. beta for lateral melting param. 214 215 REAL(wp), PUBLIC :: rn_dmin !: minimum floe diameter for lateral melting param. 215 216 ! -- icethd_lac -- ! 216 LOGICAL , PUBLIC :: ln_ limdO !: activate ice growth in open-water (T) or not (F)217 REAL(wp), PUBLIC :: rn_h newice!: thickness for new ice formation (m)217 LOGICAL , PUBLIC :: ln_icedO !: activate ice growth in open-water (T) or not (F) 218 REAL(wp), PUBLIC :: rn_hinew !: thickness for new ice formation (m) 218 219 LOGICAL , PUBLIC :: ln_frazil !: use of frazil ice collection as function of wind (T) or not (F) 219 REAL(wp), PUBLIC :: rn_maxfraz b!: maximum portion of frazil ice collecting at the ice bottom220 REAL(wp), PUBLIC :: rn_vfraz b!: threshold drift speed for collection of bottom frazil ice221 REAL(wp), PUBLIC :: rn_Cfraz b!: squeezing coefficient for collection of bottom frazil ice220 REAL(wp), PUBLIC :: rn_maxfraz !: maximum portion of frazil ice collecting at the ice bottom 221 REAL(wp), PUBLIC :: rn_vfraz !: threshold drift speed for collection of bottom frazil ice 222 REAL(wp), PUBLIC :: rn_Cfraz !: squeezing coefficient for collection of bottom frazil ice 222 223 ! -- iceitd_th -- ! 223 224 REAL(wp), PUBLIC :: rn_himin !: minimum ice thickness 224 225 ! -- -- ! 225 INTEGER , PUBLIC :: nn_limflx !: LIM3 Multi-category heat flux formulation 226 ! ! =-1 Use of per-category fluxes 227 ! ! = 0 Average per-category fluxes 228 ! ! = 1 Average then redistribute per-category fluxes 226 INTEGER , PUBLIC :: nn_iceflx !: Redistribute heat flux over ice categories 227 ! ! =-1 Do nothing (needs N(cat) fluxes) 228 ! ! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice 229 ! ! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice 230 ! ! using T-ice and albedo sensitivity 229 231 ! ! = 2 Redistribute a single flux over categories 230 232 231 233 ! !!** ice-salinity namelist (namice_sal) ** 232 LOGICAL , PUBLIC :: ln_ limdS !: activate gravity drainage and flushing (T) or not (F)234 LOGICAL , PUBLIC :: ln_icedS !: activate gravity drainage and flushing (T) or not (F) 233 235 INTEGER , PUBLIC :: nn_icesal !: salinity configuration used in the model 234 236 ! ! 1 - constant salinity in both space and time … … 354 356 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sm_i !: Sea-Ice Bulk salinity (ppt) 355 357 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: smv_i !: Sea-Ice Bulk salinity times volume per area (ppt.m) 356 ! ! this is an extensive variable that has to be transported357 358 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: o_i !: Sea-Ice Age (s) 358 359 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: oa_i !: Sea-Ice Age times ice area (s) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceadv.F90
r8512 r8514 37 37 PUBLIC ice_adv_init ! called by icestp 38 38 39 INTEGER, PUBLIC :: nice_dyn ! choice of the type of advection scheme39 INTEGER, PUBLIC :: nice_dyn !: choice of the type of advection scheme 40 40 ! ! associated indices: 41 INTEGER, PUBLIC, PARAMETER :: np_dynNO = 0 ! no ice dynamics and ice advection42 INTEGER, PUBLIC, PARAMETER :: np_dynFULL = 1 ! full ice dynamics (rheology + advection + ridging/rafting + correction)43 INTEGER, PUBLIC, PARAMETER :: np_dyn = 2 ! no ridging/rafting (rheology + advection + correction)44 INTEGER, PUBLIC, PARAMETER :: np_dynPURE = 3 ! pure dynamics (rheology + advection)41 INTEGER, PUBLIC, PARAMETER :: np_dynNO = 0 !: no ice dynamics and ice advection 42 INTEGER, PUBLIC, PARAMETER :: np_dynFULL = 1 !: full ice dynamics (rheology + advection + ridging/rafting + correction) 43 INTEGER, PUBLIC, PARAMETER :: np_dyn = 2 !: no ridging/rafting (rheology + advection + correction) 44 INTEGER, PUBLIC, PARAMETER :: np_dynPURE = 3 !: pure dynamics (rheology + advection) 45 45 46 46 !! * Substitution … … 90 90 91 91 ! conservation test 92 IF( ln_ limdiachk ) CALL ice_cons_hsm(0, 'iceadv', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)92 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'iceadv', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 93 93 94 94 ! store old values for diag … … 224 224 225 225 ! conservation test 226 IF( ln_ limdiachk ) CALL ice_cons_hsm(1, 'iceadv', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)226 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'iceadv', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 227 227 228 228 ! -------------- 229 229 ! control prints 230 230 ! -------------- 231 IF( ln_ limctl ) CALL ice_prt( kt, iiceprt, jiceprt,-1, ' - ice dyn & trp - ' )231 IF( ln_icectl ) CALL ice_prt( kt, iiceprt, jiceprt,-1, ' - ice dyn & trp - ' ) 232 232 ! 233 233 IF( nn_timing == 1 ) CALL timing_stop('iceadv') … … 264 264 IF(lwp) THEN ! control print 265 265 WRITE(numout,*) 266 WRITE(numout,*) 'ice_adv_init 266 WRITE(numout,*) 'ice_adv_init: ice parameters for ice dynamics ' 267 267 WRITE(numout,*) '~~~~~~~~~~~~' 268 268 WRITE(numout,*) ' Namelist namice_adv' -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icealb.F90
r8512 r8514 328 328 IF(lwp) THEN ! Control print 329 329 WRITE(numout,*) 330 WRITE(numout,*) ' albedo: set albedo parameters'331 WRITE(numout,*) '~~~~~~~ '330 WRITE(numout,*) 'ice_alb_init: set albedo parameters' 331 WRITE(numout,*) '~~~~~~~~~~~~' 332 332 WRITE(numout,*) ' Namelist namice_alb : albedo ' 333 333 WRITE(numout,*) ' choose the albedo parameterization nn_ice_alb = ', nn_ice_alb -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icecor.F90
r8512 r8514 64 64 ENDIF 65 65 ! !--- conservation test 66 IF( ln_ limdiachk ) CALL ice_cons_hsm(0, 'icecor', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)66 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'icecor', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 67 67 ! 68 68 ! … … 86 86 87 87 ! !----------------------------------------------------- 88 IF ( nn_icesal == 2 ) THEN ! salinity stays in bounds [Simin,Simax]!88 IF ( nn_icesal == 2 ) THEN ! salinity must stay in bounds [Simin,Simax] ! 89 89 ! !----------------------------------------------------- 90 90 zzc = rhoic * r1_rdtice … … 176 176 ! 177 177 ! !--- conservation test 178 IF( ln_ limdiachk ) CALL ice_cons_hsm(1, 'icecor', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)178 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'icecor', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 179 179 ! 180 180 ! !--- control prints 181 181 IF( ln_ctl ) CALL ice_prt3D( 'icecor' ) 182 IF( ln_ limctl .AND. kn == 2 ) CALL ice_prt( kt, iiceprt, jiceprt, 2, ' - Final state - ' )182 IF( ln_icectl .AND. kn == 2 ) CALL ice_prt( kt, iiceprt, jiceprt, 2, ' - Final state - ' ) 183 183 ! 184 184 IF( nn_timing == 1 ) CALL timing_stop('icecor') -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icectl.F90
r8498 r8514 54 54 !! + test if ice concentration and volume are > 0 55 55 !! 56 !! ** Method : This is an online diagnostics which can be activated with ln_ limdiachk=true56 !! ** Method : This is an online diagnostics which can be activated with ln_icediachk=true 57 57 !! It prints in ocean.output if there is a violation of conservation at each time-step 58 58 !! The thresholds (zv_sill, zs_sill, zh_sill) which determine violations are set to … … 167 167 !! ** Purpose : Test the conservation of heat, salt and mass at the end of each ice time-step 168 168 !! 169 !! ** Method : This is an online diagnostics which can be activated with ln_ limdiachk=true169 !! ** Method : This is an online diagnostics which can be activated with ln_icediachk=true 170 170 !! It prints in ocean.output if there is a violation of conservation at each time-step 171 171 !! The thresholds (zv_sill, zs_sill, zh_sill) which determine the violation are set to -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedia.F90
r8512 r8514 164 164 INTEGER :: ios, ierror ! local integer 165 165 !! 166 NAMELIST/namice_dia/ ln_ limdiachk, ln_limdiahsb, ln_limctl, iiceprt, jiceprt166 NAMELIST/namice_dia/ ln_icediachk, ln_icediahsb, ln_icectl, iiceprt, jiceprt 167 167 !!---------------------------------------------------------------------- 168 168 ! … … 181 181 WRITE(numout,*) ' ~~~~~~~~~~~' 182 182 WRITE(numout,*) ' Namelist namice_dia : ' 183 WRITE(numout,*) ' Diagnose online heat/mass/salt budget ln_ limdiachk = ', ln_limdiachk184 WRITE(numout,*) ' Output heat/mass/salt budget ln_ limdiahsb = ', ln_limdiahsb185 WRITE(numout,*) ' control prints for a given grid point ln_ limctl = ', ln_limctl183 WRITE(numout,*) ' Diagnose online heat/mass/salt budget ln_icediachk = ', ln_icediachk 184 WRITE(numout,*) ' Output heat/mass/salt budget ln_icediahsb = ', ln_icediahsb 185 WRITE(numout,*) ' control prints for a given grid point ln_icectl = ', ln_icectl 186 186 WRITE(numout,*) ' chosen grid point position (iiceprt,jiceprt) = (', iiceprt,',', jiceprt,')' 187 187 ENDIF 188 188 ! 189 IF( ln_ limdiahsb ) THEN189 IF( ln_icediahsb ) THEN 190 190 ALLOCATE( vol_loc_ini(jpi,jpj), sal_loc_ini(jpi,jpj), tem_loc_ini(jpi,jpj), STAT=ierror ) 191 191 IF( ierror > 0 ) THEN … … 202 202 SUBROUTINE ice_dia_rst( cdrw, kt ) 203 203 !!--------------------------------------------------------------------- 204 !! *** ROUTINE limdia_rst ***204 !! *** ROUTINE icedia_rst *** 205 205 !! 206 206 !! ** Purpose : Read or write DIA file in restart file -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceforcing.F90
r8512 r8514 143 143 CALL blk_ice_flx( t_su, alb_ice ) ! 144 144 IF( ln_mixcpl ) CALL sbc_cpl_ice_flx( picefr=at_i_b, palbi=alb_ice, psst=sst_m, pist=t_su ) 145 IF( nn_ limflx /= 2 ) CALL ice_flx_dist( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_limflx )145 IF( nn_iceflx /= 2 ) CALL ice_flx_dist( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_iceflx ) 146 146 ! 147 147 CASE ( jp_purecpl ) !--- coupled formulation 148 148 CALL sbc_cpl_ice_flx( picefr=at_i_b, palbi=alb_ice, psst=sst_m, pist=t_su ) 149 IF( nn_ limflx == 2 ) CALL ice_flx_dist( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_limflx )149 IF( nn_iceflx == 2 ) CALL ice_flx_dist( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_iceflx ) 150 150 ! 151 151 END SELECT … … 168 168 169 169 170 SUBROUTINE ice_flx_dist( ptn_ice, palb_ice, pqns_ice, pqsr_ice, pdqn_ice, pevap_ice, pdevap_ice, k_ limflx )170 SUBROUTINE ice_flx_dist( ptn_ice, palb_ice, pqns_ice, pqsr_ice, pdqn_ice, pevap_ice, pdevap_ice, k_iceflx ) 171 171 !!--------------------------------------------------------------------- 172 172 !! *** ROUTINE ice_flx_dist *** … … 177 177 !! ** Method : average then redistribute 178 178 !! 179 !! ** Action : 180 !!--------------------------------------------------------------------- 181 INTEGER , INTENT(in ) :: k_limflx ! =-1 do nothing; =0 average ; 182 ! ! = 1 average and redistribute ; =2 redistribute 179 !! ** Action : depends on k_iceflx 180 !! = -1 Do nothing (needs N(cat) fluxes) 181 !! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice 182 !! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice 183 !! using T-ice and albedo sensitivity 184 !! = 2 Redistribute a single flux over categories 185 !!--------------------------------------------------------------------- 186 INTEGER , INTENT(in ) :: k_iceflx ! redistributor 183 187 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: ptn_ice ! ice surface temperature 184 188 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: palb_ice ! ice albedo … … 208 212 END WHERE 209 213 210 SELECT CASE( k_ limflx ) !== averaged on all ice categories ==!214 SELECT CASE( k_iceflx ) !== averaged on all ice categories ==! 211 215 ! 212 216 CASE( 0 , 1 ) … … 231 235 END SELECT 232 236 ! 233 SELECT CASE( k_ limflx ) !== redistribution on all ice categories ==!237 SELECT CASE( k_iceflx ) !== redistribution on all ice categories ==! 234 238 ! 235 239 CASE( 1 , 2 ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceitd.F90
r8512 r8514 81 81 IF( kt == nit000 .AND. lwp ) WRITE(numout,*) '-- ice_itd_rem: remapping ice thickness distribution' 82 82 83 IF( ln_ limdiachk ) CALL ice_cons_hsm(0, 'iceitd_rem', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)83 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'iceitd_rem', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 84 84 85 85 !----------------------------------------------------------------------------------------------- … … 291 291 CALL tab_2d_1d( nidx, idxice(1:nidx), ht_i_1d (1:nidx), ht_i(:,:,1) ) 292 292 CALL tab_2d_1d( nidx, idxice(1:nidx), a_i_1d (1:nidx), a_i(:,:,1) ) 293 CALL tab_2d_1d( nidx, idxice(1:nidx), a_ip_1d (1:nidx), a_ip(:,:,1) 293 CALL tab_2d_1d( nidx, idxice(1:nidx), a_ip_1d (1:nidx), a_ip(:,:,1) ) 294 294 295 295 DO ji = 1, nidx … … 307 307 CALL tab_1d_2d( nidx, idxice(1:nidx), ht_i_1d (1:nidx), ht_i(:,:,1) ) 308 308 CALL tab_1d_2d( nidx, idxice(1:nidx), a_i_1d (1:nidx), a_i(:,:,1) ) 309 CALL tab_1d_2d( nidx, idxice(1:nidx), a_ip_1d (1:nidx), a_ip(:,:,1) 309 CALL tab_1d_2d( nidx, idxice(1:nidx), a_ip_1d (1:nidx), a_ip(:,:,1) ) 310 310 ! 311 311 ENDIF 312 312 ! 313 IF( ln_ limdiachk ) CALL ice_cons_hsm(1, 'iceitd_rem', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)313 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'iceitd_rem', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 314 314 ! 315 315 END SUBROUTINE ice_itd_rem … … 664 664 IF(lwp) THEN ! control print 665 665 WRITE(numout,*) 666 WRITE(numout,*) 'ice_itd_init 666 WRITE(numout,*) 'ice_itd_init: Initialization of ice cat distribution ' 667 667 WRITE(numout,*) '~~~~~~~~~~~~' 668 668 WRITE(numout,*) ' Namelist namice_itd : ' -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerdgrft.F90
r8512 r8514 141 141 ENDIF 142 142 ! ! conservation test 143 IF( ln_ limdiachk ) CALL ice_cons_hsm(0, 'icerdgrft', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)143 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'icerdgrft', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 144 144 145 145 !-----------------------------------------------------------------------------! … … 288 288 !-----------------------------------------------------------------------------! 289 289 ! ! conservation test 290 IF( ln_ limdiachk ) CALL ice_cons_hsm(1, 'icerdgrft', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)290 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'icerdgrft', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 291 291 292 292 ! ! control prints … … 774 774 775 775 ! !--------------------------------------------------! 776 IF( ln_str_R ot) THEN ! Ice strength => Rothrock (1975) method !776 IF( ln_str_R75 ) THEN ! Ice strength => Rothrock (1975) method ! 777 777 ! !--------------------------------------------------! 778 778 z1_3 = 1._wp / 3._wp … … 793 793 ismooth = 1 794 794 ! !--------------------------------------------------! 795 ELSEIF( ln_str_H ib) THEN ! Ice strength => Hibler (1979) method !795 ELSEIF( ln_str_H79 ) THEN ! Ice strength => Hibler (1979) method ! 796 796 ! !--------------------------------------------------! 797 797 strength(:,:) = rn_pstar * vt_i(:,:) * EXP( - rn_crhg * ( 1._wp - at_i(:,:) ) ) * tmask(:,:,1) … … 865 865 INTEGER :: ios ! Local integer output status for namelist read 866 866 !! 867 NAMELIST/namice_rdgrft/ ln_str_H ib, rn_pstar, rn_crhg, &868 & ln_str_R ot, rn_perdg, &867 NAMELIST/namice_rdgrft/ ln_str_H79, rn_pstar, rn_crhg, & 868 & ln_str_R75, rn_perdg, & 869 869 & rn_cs , & 870 870 & ln_partf_lin, rn_gstar, & … … 885 885 IF (lwp) THEN ! control print 886 886 WRITE(numout,*) 887 WRITE(numout,*) 'ice_rdgrft_init 887 WRITE(numout,*) 'ice_rdgrft_init: ice parameters for ridging/rafting ' 888 888 WRITE(numout,*) '~~~~~~~~~~~~~~~' 889 889 WRITE(numout,*) ' Namelist namice_rdgrft' 890 WRITE(numout,*) ' ice strength parameterization Hibler (1979) ln_str_H ib = ', ln_str_Hib890 WRITE(numout,*) ' ice strength parameterization Hibler (1979) ln_str_H79 = ', ln_str_H79 891 891 WRITE(numout,*) ' 1st bulk-rheology parameter rn_pstar = ', rn_pstar 892 892 WRITE(numout,*) ' 2nd bulk-rhelogy parameter rn_crhg = ', rn_crhg 893 WRITE(numout,*) ' ice strength parameterization Rothrock (1975) ln_str_R ot = ', ln_str_Rot893 WRITE(numout,*) ' ice strength parameterization Rothrock (1975) ln_str_R75 = ', ln_str_R75 894 894 WRITE(numout,*) ' Ratio of ridging work to PotEner change in ridging rn_perdg = ', rn_perdg 895 895 WRITE(numout,*) ' Fraction of shear energy contributing to ridging rn_cs = ', rn_cs … … 910 910 ENDIF 911 911 ! 912 IF ( ( ln_str_H ib .AND. ln_str_Rot ) .OR. ( .NOT.ln_str_Hib .AND. .NOT.ln_str_Rot) ) THEN913 CALL ctl_stop( 'ice_rdgrft_init: choose one and only one formulation for ice strength (ln_str_H ib or ln_str_Rot)' )912 IF ( ( ln_str_H79 .AND. ln_str_R75 ) .OR. ( .NOT.ln_str_H79 .AND. .NOT.ln_str_R75 ) ) THEN 913 CALL ctl_stop( 'ice_rdgrft_init: choose one and only one formulation for ice strength (ln_str_H79 or ln_str_R75)' ) 914 914 ENDIF 915 915 ! -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerhg.F90
r8512 r8514 70 70 ! 71 71 ! ! -- conservation test 72 IF( ln_ limdiachk ) CALL ice_cons_hsm(0, 'icerhg', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)72 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'icerhg', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 73 73 ! 74 74 IF( ln_landfast ) THEN ! -- Landfast ice parameterization: define max bottom friction … … 96 96 ! 97 97 ! !- conservation test 98 IF( ln_ limdiachk ) CALL ice_cons_hsm(1, 'icerhg', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)98 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'icerhg', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 99 99 IF( ln_ctl ) CALL ice_prt3D ('icerhg') !- Control prints 100 100 IF( nn_timing == 1 ) CALL timing_stop('icerhg') !- timing … … 132 132 IF(lwp) THEN ! control print 133 133 WRITE(numout,*) 134 WRITE(numout,*) 'ice_rhg_init 134 WRITE(numout,*) 'ice_rhg_init: ice parameters for ice dynamics ' 135 135 WRITE(numout,*) '~~~~~~~~~~~~' 136 136 WRITE(numout,*) ' Namelist namice_rhg' -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerst.F90
r8512 r8514 90 90 ENDIF 91 91 ! 92 IF( ln_ limctl ) CALL ice_prt( kt, iiceprt, jiceprt, 1, ' - Beginning the time step - ' ) ! control print92 IF( ln_icectl ) CALL ice_prt( kt, iiceprt, jiceprt, 1, ' - Beginning the time step - ' ) ! control print 93 93 END SUBROUTINE ice_rst_opn 94 94 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90
r8512 r8514 49 49 USE limmp ! sea-ice: melt ponds 50 50 ! END MV MP 2016 51 USE iceist 51 USE iceistate ! sea-ice: initial state 52 52 USE icethd_sal ! sea-ice: thermodynamics and salinity 53 53 USE iceitd ! sea-ice: remapping thickness distribution … … 163 163 IF( .NOT. Agrif_Root() ) CALL agrif_interp_lim3('T') ! -- AGRIF 164 164 #endif 165 IF( ln_ limthd .AND. ln_bdy ) CALL bdy_ice( kt ) ! -- bdy ice thermo165 IF( ln_icethd .AND. ln_bdy ) CALL bdy_ice( kt ) ! -- bdy ice thermo 166 166 ! 167 167 ! … … 191 191 ! --- ice thermodynamics --- ! 192 192 !----------------------------! 193 IF( ln_ limthd ) CALL ice_thd( kt ) ! -- Ice thermodynamics193 IF( ln_icethd ) CALL ice_thd( kt ) ! -- Ice thermodynamics 194 194 195 195 ! MV MP 2016 … … 197 197 ! END MV MP 2016 198 198 199 IF( ln_ limthd ) CALL ice_cor( kt , 2 ) ! -- Corrections199 IF( ln_icethd ) CALL ice_cor( kt , 2 ) ! -- Corrections 200 200 ! --- 201 201 # if defined key_agrif … … 214 214 !! IF( .NOT. Agrif_Root() ) CALL Agrif_ParentGrid_To_ChildGrid() 215 215 !!# endif 216 IF( ln_ limdiahsb ) CALL ice_dia( kt ) ! -- Diagnostics and outputs216 IF( ln_icediahsb ) CALL ice_dia( kt ) ! -- Diagnostics and outputs 217 217 ! 218 218 CALL ice_wri( 1 ) ! -- Ice outputs … … 223 223 IF( lrst_ice ) CALL ice_rst_write( kt ) ! -- Ice restart file 224 224 ! 225 IF( ln_ limctl ) CALL ice_ctl( kt ) ! alerts in case of model crash225 IF( ln_icectl ) CALL ice_ctl( kt ) ! alerts in case of model crash 226 226 ! 227 227 ENDIF ! End sea-ice time step only … … 249 249 !!---------------------------------------------------------------------- 250 250 IF(lwp) WRITE(numout,*) 251 IF(lwp) WRITE(numout,*) 'ice_init : update ocean surface boudary condition'252 IF(lwp) WRITE(numout,*) '~~~~~~~~ via Louvain la Neuve Ice Model (LIM-3) time stepping'251 IF(lwp) WRITE(numout,*) 'ice_init: Arrays allocation & Initialization off all routines & init state' 252 IF(lwp) WRITE(numout,*) '~~~~~~~~' 253 253 ! 254 254 ! ! Open the reference and configuration namelist files and namelist output file … … 285 285 ! ! Initial sea-ice state 286 286 IF( .NOT. ln_rstart ) THEN ! start from rest: sea-ice deduced from sst 287 CALL ice_ist 287 CALL ice_istate 288 288 ELSE ! start from a restart file 289 289 CALL ice_rst_read … … 360 360 ENDIF 361 361 ! 362 IF( ln_bdy .AND. ln_ limdiachk ) CALL ctl_warn('ice_run_init: online conservation check does not work with BDY')362 IF( ln_bdy .AND. ln_icediachk ) CALL ctl_warn('ice_run_init: online conservation check does not work with BDY') 363 363 ! 364 364 rdt_ice = REAL(nn_fsbc) * rdt !--- sea-ice timestep and inverse -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90
r8512 r8514 97 97 98 98 ! conservation test 99 IF( ln_ limdiachk ) CALL ice_cons_hsm( 0, 'icethd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b )99 IF( ln_icediachk ) CALL ice_cons_hsm( 0, 'icethd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b ) 100 100 101 101 CALL ice_var_glo2eqv … … 179 179 180 180 ! In case we bypass open-water ice formation 181 IF( .NOT. ln_ limdO ) qlead(:,:) = 0._wp181 IF( .NOT. ln_icedO ) qlead(:,:) = 0._wp 182 182 ! In case we bypass growing/melting from top and bottom: we suppose ice is impermeable => ocean is isolated from atmosphere 183 IF( .NOT. ln_ limdH ) THEN183 IF( .NOT. ln_icedH ) THEN 184 184 hfx_in(:,:) = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:) 185 185 fhtur (:,:) = 0._wp … … 225 225 dh_snowice(1:nidx) = 0._wp ; dh_i_sub (1:nidx) = 0._wp 226 226 ! 227 IF( ln_ limdH ) THEN ! --- growing/melting --- !227 IF( ln_icedH ) THEN ! --- growing/melting --- ! 228 228 CALL ice_thd_dif ! Ice/Snow Temperature profile 229 229 CALL ice_thd_dh ! Ice/Snow thickness … … 236 236 ! 237 237 !!gm please create a new logical (l_thd_lam or a better explicit name) set one for all in icestp.F90 module 238 !!gm l_thd_lam = ln_ limdH .AND. ( ( nn_monocat == 1 .OR. nn_monocat == 4 ) .AND. jpl == 1 )238 !!gm l_thd_lam = ln_icedH .AND. ( ( nn_monocat == 1 .OR. nn_monocat == 4 ) .AND. jpl == 1 ) 239 239 !!gm by the way, the different options associated with nn_monocat =1 to 4 are quite impossible to identify 240 240 !!gm more comment to add when ready the namelist, with an explicit print in the ocean.output 241 IF( ln_ limdH ) THEN241 IF( ln_icedH ) THEN 242 242 IF ( ( nn_monocat == 1 .OR. nn_monocat == 4 ) .AND. jpl == 1 ) THEN 243 243 CALL ice_thd_lam ! --- extra lateral melting if monocat --- ! … … 245 245 END IF 246 246 ! 247 IF( ln_ limdA ) CALL ice_thd_da ! --- lateral melting --- !247 IF( ln_icedA ) CALL ice_thd_da ! --- lateral melting --- ! 248 248 ! 249 249 CALL ice_thd_1d2d( jl, 2 ) ! --- Change units of e_i, e_s from J/m3 to J/m2 --- ! … … 257 257 oa_i(:,:,:) = o_i(:,:,:) * a_i(:,:,:) 258 258 259 IF( ln_ limdiachk ) CALL ice_cons_hsm( 1, 'icethd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b )259 IF( ln_icediachk ) CALL ice_cons_hsm( 1, 'icethd', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b ) 260 260 ! 261 261 CALL ice_var_zapsmall ! --- remove very small ice concentration (<1e-10) --- ! … … 264 264 IF( jpl > 1 ) CALL ice_itd_rem( kt ) ! --- Transport ice between thickness categories --- ! 265 265 ! 266 IF( ln_ limdO ) CALL ice_thd_lac ! --- frazil ice growing in leads --- !267 ! 268 IF( ln_ limctl ) CALL ice_prt( kt, iiceprt, jiceprt, 1, ' - ice thermodyn. - ' ) ! control print266 IF( ln_icedO ) CALL ice_thd_lac ! --- frazil ice growing in leads --- ! 267 ! 268 IF( ln_icectl ) CALL ice_prt( kt, iiceprt, jiceprt, 1, ' - ice thermodyn. - ' ) ! control print 269 269 IF( ln_ctl ) CALL ice_prt3D( 'icethd' ) ! Control print 270 270 ! … … 539 539 INTEGER :: ios ! Local integer output status for namelist read 540 540 !! 541 NAMELIST/namice_thd/ ln_ limthd, rn_kappa_i, nn_ice_thcon, ln_dqnsice, rn_cdsn,&542 & ln_ limdH, rn_betas, &543 & ln_ limdA, rn_beta, rn_dmin, &544 & ln_ limdO, rn_hnewice, ln_frazil, rn_maxfrazb, rn_vfrazb, rn_Cfrazb, rn_himin, &545 & nn_ limflx541 NAMELIST/namice_thd/ ln_icethd, rn_kappa_i, ln_cndi_U64, ln_cndi_P07, ln_dqns_i, rn_cnd_s, & 542 & ln_icedH, rn_blow_s, & 543 & ln_icedA, rn_beta, rn_dmin, & 544 & ln_icedO, rn_hinew, ln_frazil, rn_maxfraz, rn_vfraz, rn_Cfraz, rn_himin, & 545 & nn_iceflx 546 546 !!------------------------------------------------------------------- 547 547 ! … … 560 560 WRITE(numout,*) '~~~~~~~~~~~~~' 561 561 WRITE(numout,*) ' Namelist namice_thd' 562 WRITE(numout,*) ' Ice thermodynamics (T) or not (F) ln_ limthd = ', ln_limthd562 WRITE(numout,*) ' Ice thermodynamics (T) or not (F) ln_icethd = ', ln_icethd 563 563 WRITE(numout,*) ' -- icethd_dif --' 564 564 WRITE(numout,*) ' extinction radiation parameter in sea ice rn_kappa_i = ', rn_kappa_i 565 WRITE(numout,*) ' switch for comp. of thermal conductivity in the ice nn_ice_thcon = ', nn_ice_thcon 566 WRITE(numout,*) ' change the surface non-solar flux with Tsu or not ln_dqnsice = ', ln_dqnsice 567 WRITE(numout,*) ' thermal conductivity of the snow rn_cdsn = ', rn_cdsn 565 WRITE(numout,*) ' thermal conductivity in the ice (Untersteiner 1964) ln_cndi_U64 = ', ln_cndi_U64 566 WRITE(numout,*) ' thermal conductivity in the ice (Pringle et al 2007) ln_cndi_P07 = ', ln_cndi_P07 567 WRITE(numout,*) ' change the surface non-solar flux with Tsu or not ln_dqns_i = ', ln_dqns_i 568 WRITE(numout,*) ' thermal conductivity of the snow rn_cnd_s = ', rn_cnd_s 568 569 WRITE(numout,*) ' -- icethd_dh --' 569 WRITE(numout,*) ' activate ice thick change from top/bot (T) or not (F) ln_ limdH = ', ln_limdH570 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_b etas = ', rn_betas570 WRITE(numout,*) ' activate ice thick change from top/bot (T) or not (F) ln_icedH = ', ln_icedH 571 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_blow_s = ', rn_blow_s 571 572 WRITE(numout,*) ' -- icethd_da --' 572 WRITE(numout,*) ' activate lateral melting (T) or not (F) ln_ limdA = ', ln_limdA573 WRITE(numout,*) ' activate lateral melting (T) or not (F) ln_icedA = ', ln_icedA 573 574 WRITE(numout,*) ' Coef. beta for lateral melting param. rn_beta = ', rn_beta 574 575 WRITE(numout,*) ' Minimum floe diameter for lateral melting param. rn_dmin = ', rn_dmin 575 576 WRITE(numout,*) ' -- icethd_lac --' 576 WRITE(numout,*) ' activate ice growth in open-water (T) or not (F) ln_ limdO = ', ln_limdO577 WRITE(numout,*) ' ice thickness for lateral accretion rn_h newice = ', rn_hnewice577 WRITE(numout,*) ' activate ice growth in open-water (T) or not (F) ln_icedO = ', ln_icedO 578 WRITE(numout,*) ' ice thickness for lateral accretion rn_hinew = ', rn_hinew 578 579 WRITE(numout,*) ' Frazil ice thickness as a function of wind or not ln_frazil = ', ln_frazil 579 WRITE(numout,*) ' Maximum proportion of frazil ice collecting at bottom rn_maxfraz b = ', rn_maxfrazb580 WRITE(numout,*) ' Threshold relative drift speed for collection of frazil rn_vfraz b = ', rn_vfrazb581 WRITE(numout,*) ' Squeezing coefficient for collection of frazil rn_Cfraz b = ', rn_Cfrazb580 WRITE(numout,*) ' Maximum proportion of frazil ice collecting at bottom rn_maxfraz = ', rn_maxfraz 581 WRITE(numout,*) ' Threshold relative drift speed for collection of frazil rn_vfraz = ', rn_vfraz 582 WRITE(numout,*) ' Squeezing coefficient for collection of frazil rn_Cfraz = ', rn_Cfraz 582 583 WRITE(numout,*) ' -- iceitd --' 583 584 WRITE(numout,*) ' minimum ice thickness rn_himin = ', rn_himin 584 585 WRITE(numout,*) ' -- icestp --' 585 WRITE(numout,*) ' Multicategory heat flux formulation nn_ limflx = ', nn_limflx586 WRITE(numout,*) ' Multicategory heat flux formulation nn_iceflx = ', nn_iceflx 586 587 ENDIF 587 588 ! 588 IF ( rn_hnewice < rn_himin ) CALL ctl_stop( 'STOP', 'ice_thd_init : rn_hnewice should be >= rn_himin' ) 589 IF ( ( ln_cndi_U64 .AND. ln_cndi_P07 ) .OR. ( .NOT.ln_cndi_U64 .AND. .NOT.ln_cndi_P07 ) ) THEN 590 CALL ctl_stop( 'ice_thd_init: choose one and only one formulation for thermal conductivity (ln_cndi_U64 or ln_cndi_P07)' ) 591 ENDIF 592 ! 593 IF ( rn_hinew < rn_himin ) CALL ctl_stop( 'STOP', 'ice_thd_init : rn_hinew should be >= rn_himin' ) 589 594 ! 590 595 IF(lwp) WRITE(numout,*) 591 SELECT CASE( nn_ limflx ) ! LIM3 Multi-category heat flux formulation596 SELECT CASE( nn_iceflx ) ! LIM3 Multi-category heat flux formulation 592 597 CASE( -1 ) 593 IF(lwp) WRITE(numout,*) ' LIM3: use per-category fluxes (nn_ limflx = -1) '594 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_ limflx for LIM3 in coupled mode must be 0 or 2' )598 IF(lwp) WRITE(numout,*) ' LIM3: use per-category fluxes (nn_iceflx = -1) ' 599 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in coupled mode must be 0 or 2' ) 595 600 CASE( 0 ) 596 IF(lwp) WRITE(numout,*) ' LIM3: use average per-category fluxes (nn_ limflx = 0) '601 IF(lwp) WRITE(numout,*) ' LIM3: use average per-category fluxes (nn_iceflx = 0) ' 597 602 CASE( 1 ) 598 IF(lwp) WRITE(numout,*) ' LIM3: use average then redistribute per-category fluxes (nn_ limflx = 1) '599 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_ limflx for LIM3 in coupled mode must be 0 or 2' )603 IF(lwp) WRITE(numout,*) ' LIM3: use average then redistribute per-category fluxes (nn_iceflx = 1) ' 604 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in coupled mode must be 0 or 2' ) 600 605 CASE( 2 ) 601 IF(lwp) WRITE(numout,*) ' LIM3: Redistribute a single flux over categories (nn_ limflx = 2) '602 IF( .NOT. ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_ limflx for LIM3 in forced mode cannot be 2' )606 IF(lwp) WRITE(numout,*) ' LIM3: Redistribute a single flux over categories (nn_iceflx = 2) ' 607 IF( .NOT. ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in forced mode cannot be 2' ) 603 608 CASE DEFAULT 604 CALL ctl_stop( 'ice_thd_init: LIM3 option, nn_ limflx, should be between -1 and 2' )609 CALL ctl_stop( 'ice_thd_init: LIM3 option, nn_iceflx, should be between -1 and 2' ) 605 610 END SELECT 606 611 ! -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_dh.F90
r8498 r8514 20 20 USE ice ! LIM variables 21 21 USE ice1D ! LIM thermodynamics 22 USE icethd_sal ! sea-ice: salinity profiles 22 23 ! 23 24 USE in_out_manager ! I/O manager … … 107 108 !!------------------------------------------------------------------ 108 109 109 ! Discriminate between varying salinity (nn_icesal=2) and prescribed cases (other values)110 ! Discriminate between time varying salinity and constant 110 111 SELECT CASE( nn_icesal ) ! varying salinity or not 111 CASE( 1 , 3 ) ; zswitch_sal = 0._wp ! prescribed salinity profile112 CASE( 2 ) ; zswitch_sal = 1._wp ! varying salinity profile112 CASE( 1 , 3 ) ; zswitch_sal = 0._wp ! prescribed salinity profile 113 CASE( 2 ) ; zswitch_sal = 1._wp ! varying salinity profile 113 114 END SELECT 114 115 … … 406 407 407 408 num_iter_max = 1 408 IF( nn_icesal == 2 ) num_iter_max = 5409 409 IF( nn_icesal == 2 ) num_iter_max = 5 ! salinity varying in time 410 410 411 ! Iterative procedure 411 412 DO ji = 1, nidx … … 586 587 hfx_out_1d(ji) = hfx_out_1d(ji) + ( zq_rema(ji) * a_i_1d(ji) ) * r1_rdtice 587 588 588 IF( ln_ limctl .AND. zq_rema(ji) < 0. .AND. lwp ) WRITE(numout,*) 'ALERTE zq_rema <0 = ', zq_rema(ji)589 IF( ln_icectl .AND. zq_rema(ji) < 0. .AND. lwp ) WRITE(numout,*) 'ALERTE zq_rema <0 = ', zq_rema(ji) 589 590 END DO 590 591 … … 613 614 sfx_sni_1d(ji) = sfx_sni_1d(ji) + sss_1d(ji) * a_i_1d(ji) * zfmdt * r1_rdtice 614 615 615 ! virtual salt flux to keep salinity constant616 ! Case constant salinity in time: virtual salt flux to keep salinity constant 616 617 IF( nn_icesal == 1 .OR. nn_icesal == 3 ) THEN 617 618 sfx_bri_1d(ji) = sfx_bri_1d(ji) - sss_1d (ji) * a_i_1d(ji) * zfmdt * r1_rdtice & ! put back sss_m into the ocean … … 665 666 REAL(wp), DIMENSION(:,:), INTENT(in ) :: pin ! previous fraction lead ( 1. - a_i_b ) 666 667 REAL(wp), DIMENSION(:,:), INTENT(inout) :: pout 667 pout = ( 1._wp - ( pin )**rn_b etas )668 pout = ( 1._wp - ( pin )**rn_blow_s ) 668 669 END SUBROUTINE ice_thd_snwblow_2d 669 670 … … 671 672 REAL(wp), DIMENSION(:), INTENT(in ) :: pin 672 673 REAL(wp), DIMENSION(:), INTENT(inout) :: pout 673 pout = ( 1._wp - ( pin )**rn_b etas )674 pout = ( 1._wp - ( pin )**rn_blow_s ) 674 675 END SUBROUTINE ice_thd_snwblow_1d 675 676 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_dif.F90
r8500 r8514 287 287 !------------------------------------------------------------------------------| 288 288 ! 289 IF( nn_ice_thcon == 0 ) THEN ! Untersteiner (1964) formula289 IF( ln_cndi_U64 ) THEN !-- Untersteiner (1964) formula: k = k0 + beta.S/T 290 290 DO ji = 1 , nidx 291 291 ztcond_i(ji,0) = rcdic + zbeta * s_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rt0 ) … … 299 299 END DO 300 300 END DO 301 ENDIF 302 303 IF( nn_ice_thcon == 1 ) THEN ! Pringle et al formula included: 2.11 + 0.09 S/T - 0.011.T 301 302 ELSEIF( ln_cndi_P07 ) THEN !-- Pringle et al formula: k = k0 + beta1.S/T - beta2.T 304 303 DO ji = 1 , nidx 305 304 ztcond_i(ji,0) = rcdic + 0.090_wp * s_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1) - rt0 ) & … … 347 346 348 347 ! Effective thickness he (zhe) 349 zfac = 1._wp / ( rn_c dsn+ zkimean )350 zratio_s = rn_c dsn* zfac348 zfac = 1._wp / ( rn_cnd_s + zkimean ) 349 zratio_s = rn_cnd_s * zfac 351 350 zratio_i = zkimean * zfac 352 351 zhe = zratio_s * ht_i_1d(ji) + zratio_i * ht_s_1d(ji) … … 371 370 DO ji = 1, nidx 372 371 zfac = 1. / MAX( epsi10 , zh_s(ji) ) 373 zkappa_s(ji,0) = zghe(ji) * rn_c dsn* zfac374 zkappa_s(ji,nlay_s) = zghe(ji) * rn_c dsn* zfac372 zkappa_s(ji,0) = zghe(ji) * rn_cnd_s * zfac 373 zkappa_s(ji,nlay_s) = zghe(ji) * rn_cnd_s * zfac 375 374 END DO 376 375 377 376 DO jk = 1, nlay_s-1 378 377 DO ji = 1 , nidx 379 zkappa_s(ji,jk) = zghe(ji) * 2.0 * rn_c dsn/ MAX( epsi10, 2.0 * zh_s(ji) )378 zkappa_s(ji,jk) = zghe(ji) * 2.0 * rn_cnd_s / MAX( epsi10, 2.0 * zh_s(ji) ) 380 379 END DO 381 380 END DO … … 393 392 zkappa_i(ji,0) = zghe(ji) * ztcond_i(ji,0) * zfac 394 393 zkappa_i(ji,nlay_i) = zghe(ji) * ztcond_i(ji,nlay_i) * zfac 395 zkappa_s(ji,nlay_s) = zghe(ji) * zghe(ji) * 2.0 * rn_c dsn* ztcond_i(ji,0) / &396 & MAX( epsi10, ( zghe(ji) * ztcond_i(ji,0) * zh_s(ji) + zghe(ji) * rn_c dsn* zh_i(ji) ) )394 zkappa_s(ji,nlay_s) = zghe(ji) * zghe(ji) * 2.0 * rn_cnd_s * ztcond_i(ji,0) / & 395 & MAX( epsi10, ( zghe(ji) * ztcond_i(ji,0) * zh_s(ji) + zghe(ji) * rn_cnd_s * zh_i(ji) ) ) 397 396 zkappa_i(ji,0) = zkappa_s(ji,nlay_s) * isnow(ji) + zkappa_i(ji,0) * ( 1._wp - isnow(ji) ) 398 397 END DO … … 423 422 !------------------------------------------------------------------------------| 424 423 ! 425 IF ( ln_dqns ice) THEN424 IF ( ln_dqns_i ) THEN 426 425 DO ji = 1 , nidx 427 426 ! update of the non solar flux according to the update in T_su … … 708 707 !--- Snow-ice interfacial temperature (diagnostic SIMIP) 709 708 DO ji = 1, nidx 710 zfac = 1. / MAX( epsi10 , rn_c dsn* zh_i(ji) + ztcond_i(ji,1) * zh_s(ji) )709 zfac = 1. / MAX( epsi10 , rn_cnd_s * zh_i(ji) + ztcond_i(ji,1) * zh_s(ji) ) 711 710 IF( zh_s(ji) >= 1.e-3 ) THEN 712 t_si_1d(ji) = ( rn_c dsn* zh_i(ji) * t_s_1d(ji,1) + &711 t_si_1d(ji) = ( rn_cnd_s * zh_i(ji) * t_s_1d(ji,1) + & 713 712 & ztcond_i(ji,1) * zh_s(ji) * t_i_1d(ji,1) ) * zfac 714 713 ELSE … … 718 717 ! END MV SIMIP 2016 719 718 720 IF( ln_ limctl .AND. lwp ) THEN719 IF( ln_icectl .AND. lwp ) THEN 721 720 WRITE(numout,*) ' zdti_max : ', zdti_max 722 721 WRITE(numout,*) ' iconv : ', iconv … … 748 747 749 748 ! --- diagnose the change in non-solar flux due to surface temperature change --- ! 750 IF ( ln_dqns ice) THEN749 IF ( ln_dqns_i ) THEN 751 750 DO ji = 1, nidx 752 751 hfx_err_dif_1d(ji) = hfx_err_dif_1d(ji) - ( qns_ice_1d(ji) - zqns_ice_b(ji) ) * a_i_1d(ji) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_lac.F90
r8486 r8514 26 26 USE icethd_ent ! sea-ice: thermodynamics, enthalpy 27 27 USE icevar ! sea-ice: operations 28 USE icethd_sal ! sea-ice: salinity profiles 28 29 ! 29 30 USE in_out_manager ! I/O manager … … 112 113 !!-----------------------------------------------------------------------! 113 114 114 IF( ln_ limdiachk ) CALL ice_cons_hsm(0, 'icethd_lac', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)115 IF( ln_icediachk ) CALL ice_cons_hsm(0, 'icethd_lac', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 115 116 116 117 CALL ice_var_agg(1) … … 133 134 134 135 ! Default new ice thickness 135 WHERE( qlead(:,:) < 0._wp ) ; hicol(:,:) = rn_h newice136 WHERE( qlead(:,:) < 0._wp ) ; hicol(:,:) = rn_hinew 136 137 ELSEWHERE ; hicol(:,:) = 0._wp 137 138 END WHERE … … 348 349 DO ji = 1, nidx 349 350 rswitch = 1._wp - MAX( 0._wp, SIGN( 1._wp , - zat_i_1d(ji) ) ) 350 zfrazb = rswitch * ( TANH( rn_Cfraz b * ( zvrel_1d(ji) - rn_vfrazb ) ) + 1.0 ) * 0.5 * rn_maxfrazb351 zfrazb = rswitch * ( TANH( rn_Cfraz * ( zvrel_1d(ji) - rn_vfraz ) ) + 1.0 ) * 0.5 * rn_maxfraz 351 352 zv_frazb(ji) = zfrazb * zv_newice(ji) 352 353 zv_newice(ji) = ( 1.0 - zfrazb ) * zv_newice(ji) … … 478 479 ENDIF ! nidx > 0 479 480 ! 480 IF( ln_ limdiachk ) CALL ice_cons_hsm(1, 'icethd_lac', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)481 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'icethd_lac', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 481 482 ! 482 483 END SUBROUTINE ice_thd_lac -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_sal.F90
r8512 r8514 55 55 SELECT CASE ( nn_icesal ) 56 56 ! 57 ! !---------------------------------------------!58 CASE( 2 ) ! time varying salinity with linear profile !59 ! !---------------------------------------------!57 ! !---------------------------------------------! 58 CASE( 2 ) ! time varying salinity with linear profile ! 59 ! !---------------------------------------------! 60 60 DO ji = 1, nidx 61 61 … … 71 71 sm_i_1d(ji) = sm_i_1d(ji) + zsm_i_bg + zsm_i_si 72 72 73 IF( ln_ limdS ) THEN73 IF( ln_icedS ) THEN 74 74 !--------------------------------------------------------- 75 75 ! Update ice salinity from brine drainage and flushing … … 91 91 CALL ice_var_salprof1d 92 92 ! 93 ! 94 CASE( 3 ) ! constant salinity with a fix profile! (Schwarzacher (1959) multiyear salinity profile(mean = 2.30)95 ! 93 ! !---------------------------------------------! 94 CASE( 3 ) ! constant salinity with a fixed profile ! (Schwarzacher (1959) multiyear salinity profile(mean = 2.30) 95 ! !---------------------------------------------! 96 96 CALL ice_var_salprof1d 97 97 ! … … 114 114 INTEGER :: ios ! Local integer output status for namelist read 115 115 !! 116 NAMELIST/namice_sal/ ln_ limdS , nn_icesal , rn_icesal, rn_sal_gd, rn_time_gd, &116 NAMELIST/namice_sal/ ln_icedS , nn_icesal , rn_icesal, rn_sal_gd, rn_time_gd, & 117 117 & rn_sal_fl, rn_time_fl, rn_simax , rn_simin 118 118 !!------------------------------------------------------------------- … … 132 132 WRITE(numout,*) '~~~~~~~~~~~~~~~~' 133 133 WRITE(numout,*) ' Namelist namice_sal' 134 WRITE(numout,*) ' activate gravity drainage and flushing (T) or not (F) ln_ limdS = ', ln_limdS134 WRITE(numout,*) ' activate gravity drainage and flushing (T) or not (F) ln_icedS = ', ln_icedS 135 135 WRITE(numout,*) ' switch for salinity nn_icesal = ', nn_icesal 136 136 WRITE(numout,*) ' bulk salinity value if nn_icesal = 1 rn_icesal = ', rn_icesal -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceupdate.F90
r8512 r8514 121 121 122 122 ! --- case we bypass ice thermodynamics --- ! 123 IF( .NOT. ln_ limthd ) THEN ! we suppose ice is impermeable => ocean is isolated from atmosphere123 IF( .NOT. ln_icethd ) THEN ! we suppose ice is impermeable => ocean is isolated from atmosphere 124 124 hfx_in (:,:) = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:) 125 125 hfx_out (:,:) = ( 1._wp - at_i_b(:,:) ) * qns_oce(:,:) + qemp_oce(:,:) … … 208 208 209 209 ! ! conservation test 210 IF( ln_ limdiachk .AND. .NOT. ln_bdy) CALL ice_cons_final( 'iceupdate' )210 IF( ln_icediachk .AND. .NOT. ln_bdy) CALL ice_cons_final( 'iceupdate' ) 211 211 ! ! control prints 212 IF( ln_ limctl ) CALL ice_prt( kt, iiceprt, jiceprt, 3, ' - Final state ice_update - ' )212 IF( ln_icectl ) CALL ice_prt( kt, iiceprt, jiceprt, 3, ' - Final state ice_update - ' ) 213 213 IF( ln_ctl ) CALL ice_prt3D( 'iceupdate' ) 214 214 ! -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icevar.F90
r8500 r8514 191 191 o_i(:,:,:) = oa_i(:,:,:) * z1_a_i(:,:,:) !--- ice age 192 192 193 IF( nn_icesal == 2 ) THEN!--- salinity (with a minimum value imposed everywhere)193 IF( nn_icesal == 2 ) THEN !--- salinity (with a minimum value imposed everywhere) 194 194 WHERE( v_i(:,:,:) > epsi20 ) ; sm_i(:,:,:) = MAX( rn_simin , smv_i(:,:,:) / v_i(:,:,:) ) 195 195 ELSEWHERE ; sm_i(:,:,:) = rn_simin … … 289 289 !!------------------------------------------------------------------ 290 290 291 !!gm much much more secure to defined when reading nn_icesal in the namelist integers =1, 2, 3 with explicit names292 !! for example np_Scst_noProfile = 1 ; np_Svar_linProfile = 2 ; np_Scst_fixProfile293 294 291 !!gm Question: Remove the option 3 ? How many years since it last use ? 295 292 296 293 SELECT CASE ( nn_icesal ) 297 294 ! 298 ! !---------------------------------------!299 CASE( 1 ) ! constant salinity in time and space !300 ! !---------------------------------------!295 ! !---------------------------------------! 296 CASE( 1 ) ! constant salinity in time and space ! 297 ! !---------------------------------------! 301 298 s_i (:,:,:,:) = rn_icesal 302 299 sm_i(:,:,:) = rn_icesal 303 300 ! 304 ! !---------------------------------------------!305 CASE( 2 ) ! time varying salinity with linear profile !306 ! !---------------------------------------------!301 ! !---------------------------------------------! 302 CASE( 2 ) ! time varying salinity with linear profile ! 303 ! !---------------------------------------------! 307 304 ! 308 305 ALLOCATE( z_slope_s(jpi,jpj,jpl) , zalpha(jpi,jpj,jpl) ) … … 343 340 DEALLOCATE( z_slope_s , zalpha ) 344 341 ! 345 ! !-------------------------------------------!346 CASE( 3 ) ! constant salinity with a fix profile ! (Schwarzacher (1959) multiyear salinity profile347 ! !-------------------------------------------! (mean = 2.30)342 ! !-------------------------------------------! 343 CASE( 3 ) ! constant salinity with a fix profile ! (Schwarzacher (1959) multiyear salinity profile 344 ! !-------------------------------------------! (mean = 2.30) 348 345 ! 349 346 sm_i(:,:,:) = 2.30_wp … … 415 412 SELECT CASE ( nn_icesal ) 416 413 ! 417 ! !---------------------------------------!418 CASE( 1 ) ! constant salinity in time and space !419 ! !---------------------------------------!414 ! !---------------------------------------! 415 CASE( 1 ) ! constant salinity in time and space ! 416 ! !---------------------------------------! 420 417 s_i_1d(:,:) = rn_icesal 421 418 ! 422 ! !---------------------------------------------!423 CASE( 2 ) ! time varying salinity with linear profile !424 ! !---------------------------------------------!419 ! !---------------------------------------------! 420 CASE( 2 ) ! time varying salinity with linear profile ! 421 ! !---------------------------------------------! 425 422 ! 426 423 ALLOCATE( z_slope_s(jpij) ) … … 445 442 DEALLOCATE( z_slope_s ) 446 443 447 ! !-------------------------------------------!448 CASE( 3 ) ! constant salinity with a fix profile ! (Schwarzacher (1959) multiyear salinity profile449 ! !-------------------------------------------! (mean = 2.30)444 ! !-------------------------------------------! 445 CASE( 3 ) ! constant salinity with a fix profile ! (Schwarzacher (1959) multiyear salinity profile 446 ! !-------------------------------------------! (mean = 2.30) 450 447 ! 451 448 sm_i_1d(:) = 2.30_wp … … 572 569 !! ice thickness distribution follows a gaussian law 573 570 !! around the concentration of the most likely ice thickness 574 !! (similar as iceist .F90)571 !! (similar as iceistate.F90) 575 572 !! 576 573 !! ** Method: Iterative procedure -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice.F90
r8424 r8514 73 73 CALL ice_var_zapsmall 74 74 CALL ice_var_agg(1) 75 IF( ln_ limctl ) CALL ice_prt( kt, iiceprt, jiceprt, 1, ' - ice thermo bdy - ' )75 IF( ln_icectl ) CALL ice_prt( kt, iiceprt, jiceprt, 1, ' - ice thermo bdy - ' ) 76 76 ! 77 77 END SUBROUTINE bdy_ice -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/SETTE/sette.sh
r8292 r8514 143 143 # 15 & 16 144 144 145 for config in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 145 for config in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 146 146 147 147 do … … 312 312 set_namelist namelist_cfg jpnj 8 313 313 set_namelist namelist_cfg jpnij 32 314 set_namelist namelist_ice_cfg ln_limdiachk .true. 314 set_namelist namelist_ice_cfg ln_icediachk .true. 315 ## set_namelist namelist_ice_cfg ln_icediahsb .true. 315 316 set_namelist namelist_top_cfg ln_trcdta .false. 316 317 # put ln_ironsed, ln_river, ln_ndepo, ln_dust to false … … 351 352 set_namelist namelist_cfg jpnj 8 352 353 set_namelist namelist_cfg jpnij 32 353 set_namelist namelist_ice_cfg ln_limdiachk .true. 354 set_namelist namelist_ice_cfg ln_icediachk .true. 355 ## set_namelist namelist_ice_cfg ln_icediahsb .true. 354 356 set_namelist namelist_top_cfg ln_rsttr .true. 355 357 set_namelist namelist_top_cfg nn_rsttr 2 … … 413 415 set_namelist namelist_cfg jpnj 8 414 416 set_namelist namelist_cfg jpnij 32 415 set_namelist namelist_ice_cfg ln_limdiachk .true. 417 set_namelist namelist_ice_cfg ln_icediachk .true. 418 set_namelist namelist_ice_cfg ln_icediahsb .true. 416 419 set_namelist namelist_top_cfg ln_trcdta .false. 417 420 # put ln_ironsed, ln_river, ln_ndepo, ln_dust to false … … 455 458 set_namelist namelist_cfg jpnj 4 456 459 set_namelist namelist_cfg jpnij 32 457 set_namelist namelist_ice_cfg ln_limdiachk .true. 460 set_namelist namelist_ice_cfg ln_icediachk .true. 461 set_namelist namelist_ice_cfg ln_icediahsb .true. 458 462 set_namelist namelist_top_cfg ln_trcdta .false. 459 463 # put ln_ironsed, ln_river, ln_ndepo, ln_dust to false … … 814 818 set_namelist namelist_cfg jpnj 8 815 819 set_namelist namelist_cfg jpnij 32 816 set_namelist namelist_ice_cfg ln_ limdiachk .true.820 set_namelist namelist_ice_cfg ln_icediachk .true. 817 821 if [ ${USING_MPMD} == "yes" ] ; then 818 822 set_xio_using_server iodef.xml true … … 840 844 set_namelist namelist_cfg ln_rstart .true. 841 845 set_namelist namelist_cfg nn_rstctl 2 842 set_namelist namelist_ice_cfg ln_ limdiachk .true.846 set_namelist namelist_ice_cfg ln_icediachk .true. 843 847 set_namelist namelist_ice_cfg cn_icerst_in \"SAS_00000050_restart_ice\" 844 848 if [ ${USING_MPMD} == "yes" ] ; then
Note: See TracChangeset
for help on using the changeset viewer.