Changeset 8531
- Timestamp:
- 2017-09-15T20:07:33+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8183_ICEMODEL/NEMOGCM
- Files:
-
- 2 added
- 2 deleted
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/namelist_ice_cfg
r8516 r8531 1 1 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 2 !! ESIM configuration namelist: Overwrites SHARED/namelist_ice_lim3_ref 3 !! 1 - Generic parameters (namice_run) 4 !! 2 - Ice thickness discretization (namice_itd) 5 !! 3 - Ice dynamics (namice_dyn) 6 !! 4 - Ice ridging/rafting (namice_rdgrft) 7 !! 5 - Ice rheology (namice_rhg) 8 !! 6 - Ice advection (namice_adv) 9 !! 7 - Ice thermodynamics (namice_thd) 10 !! 8 - Ice salinity (namice_sal) 11 !! 9 - Ice melt ponds (namice_mp) 12 !! 10 - Ice initialization (namice_ini) 13 !! 11 - Ice/snow albedos (namice_alb) 14 !! 12 - Ice diagnostics (namice_dia) 3 !! 1 - Generic parameters (nampar) 4 !! 2 - Ice thickness discretization (namitd) 5 !! 3 - Ice dynamics (namdyn) 6 !! 4 - Ice ridging/rafting (namdyn_rdgrft) 7 !! 5 - Ice rheology (namdyn_rhg) 8 !! 6 - Ice advection (namdyn_adv) 9 !! 7 - Ice surface forcing (namforcing) 10 !! 8 - Ice thermodynamics (namthd) 11 !! 9 - Ice heat diffusion (namthd_zdf) 12 !! 10 - Ice lateral melting (namthd_da) 13 !! 11 - Ice growth in open water (namthd_do) 14 !! 12 - Ice salinity (namthd_sal) 15 !! 13 - Ice melt ponds (nammp) 16 !! 14 - Ice initialization (namini) 17 !! 15 - Ice/snow albedos (namalb) 18 !! 16 - Ice diagnostics (namdia) 15 19 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 16 20 ! 17 21 !------------------------------------------------------------------------------ 18 &nam ice_run! Generic parameters22 &nampar ! Generic parameters 19 23 !------------------------------------------------------------------------------ 20 24 / 21 25 !------------------------------------------------------------------------------ 22 &nami ce_itd ! Ice discretization26 &namitd ! Ice discretization 23 27 !------------------------------------------------------------------------------ 24 28 / 25 29 !------------------------------------------------------------------------------ 26 &nam ice_dyn ! Ice dynamics30 &namdyn ! Ice dynamics 27 31 !------------------------------------------------------------------------------ 28 32 / 29 33 !------------------------------------------------------------------------------ 30 &nam ice_rdgrft ! Ice ridging/rafting34 &namdyn_rdgrft ! Ice ridging/rafting 31 35 !------------------------------------------------------------------------------ 32 36 / 33 37 !------------------------------------------------------------------------------ 34 &nam ice_rhg ! Ice rheology38 &namdyn_rhg ! Ice rheology 35 39 !------------------------------------------------------------------------------ 36 40 / 37 41 !------------------------------------------------------------------------------ 38 &nam ice_adv ! Ice advection42 &namdyn_adv ! Ice advection 39 43 !------------------------------------------------------------------------------ 40 44 / 41 45 !------------------------------------------------------------------------------ 42 &nam ice_thd ! Ice thermodynamics46 &namforcing ! Ice surface forcing 43 47 !------------------------------------------------------------------------------ 44 48 / 45 49 !------------------------------------------------------------------------------ 46 &nam ice_sal ! Ice salinity50 &namthd ! Ice thermodynamics 47 51 !------------------------------------------------------------------------------ 48 52 / 49 53 !------------------------------------------------------------------------------ 50 &nam icemp ! Melt ponds54 &namthd_zdf ! Ice heat diffusion 51 55 !------------------------------------------------------------------------------ 52 56 / 53 57 !------------------------------------------------------------------------------ 54 &nam ice_ini ! Ice initialization58 &namthd_da ! Ice lateral melting 55 59 !------------------------------------------------------------------------------ 56 60 / 57 61 !------------------------------------------------------------------------------ 58 &nam ice_alb ! albedo parameters62 &namthd_do ! Ice growth in open water 59 63 !------------------------------------------------------------------------------ 60 64 / 61 65 !------------------------------------------------------------------------------ 62 &nam ice_dia ! Diagnostics66 &namthd_sal ! Ice salinity 63 67 !------------------------------------------------------------------------------ 64 68 / 69 !------------------------------------------------------------------------------ 70 &nammp ! Melt ponds 71 !------------------------------------------------------------------------------ 72 / 73 !------------------------------------------------------------------------------ 74 &namini ! Ice initialization 75 !------------------------------------------------------------------------------ 76 / 77 !------------------------------------------------------------------------------ 78 &namalb ! albedo parameters 79 !------------------------------------------------------------------------------ 80 / 81 !------------------------------------------------------------------------------ 82 &namdia ! Diagnostics 83 !------------------------------------------------------------------------------ 84 / -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/SHARED/namelist_ice_lim3_ref
r8517 r8531 1 1 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 2 !! ESIM namelist: 3 !! 1 - Generic parameters (namice_run) 4 !! 2 - Ice thickness discretization (namice_itd) 5 !! 3 - Ice dynamics (namice_dyn) 6 !! 4 - Ice ridging/rafting (namice_rdgrft) 7 !! 5 - Ice rheology (namice_rhg) 8 !! 6 - Ice advection (namice_adv) 9 !! 7 - Ice thermodynamics (namice_thd) 10 !! 8 - Ice salinity (namice_sal) 11 !! 9 - Ice melt ponds (namice_mp) 12 !! 10 - Ice initialization (namice_ini) 13 !! 11 - Ice/snow albedos (namice_alb) 14 !! 12 - Ice diagnostics (namice_dia) 3 !! 1 - Generic parameters (nampar) 4 !! 2 - Ice thickness discretization (namitd) 5 !! 3 - Ice dynamics (namdyn) 6 !! 4 - Ice ridging/rafting (namdyn_rdgrft) 7 !! 5 - Ice rheology (namdyn_rhg) 8 !! 6 - Ice advection (namdyn_adv) 9 !! 7 - Ice surface forcing (namforcing) 10 !! 8 - Ice thermodynamics (namthd) 11 !! 9 - Ice heat diffusion (namthd_zdf) 12 !! 10 - Ice lateral melting (namthd_da) 13 !! 11 - Ice growth in open water (namthd_do) 14 !! 12 - Ice salinity (namthd_sal) 15 !! 13 - Ice melt ponds (nammp) 16 !! 14 - Ice initialization (namini) 17 !! 15 - Ice/snow albedos (namalb) 18 !! 16 - Ice diagnostics (namdia) 15 19 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 16 20 ! 17 21 !------------------------------------------------------------------------------ 18 &nam ice_run! Generic parameters22 &nampar ! Generic parameters 19 23 !------------------------------------------------------------------------------ 20 24 jpl = 5 ! number of ice categories … … 35 39 / 36 40 !------------------------------------------------------------------------------ 37 &nami ce_itd ! Ice discretization41 &namitd ! Ice discretization 38 42 !------------------------------------------------------------------------------ 39 43 rn_himean = 2.0 ! expected domain-average ice thickness (m) … … 41 45 / 42 46 !------------------------------------------------------------------------------ 43 &nam ice_dyn ! Ice dynamics47 &namdyn ! Ice dynamics 44 48 !------------------------------------------------------------------------------ 45 49 ln_dynFULL = .true. ! dyn.: full ice dynamics (rheology + advection + ridging/rafting + correction) … … 49 53 rn_vice = 0. ! prescribed ice v-velocity 50 54 rn_ishlat = 2. ! free slip (0) ; partial slip (0-2) ; no slip (2) ; strong slip (>2) 51 rn_cio = 5.0e-03 ! ice-ocean drag coefficient (-)52 55 ln_landfast = .false. ! landfast ice parameterization (T or F) 53 56 rn_gamma = 0.15 ! fraction of ocean depth that ice must reach to initiate landfast … … 59 62 / 60 63 !------------------------------------------------------------------------------ 61 &nam ice_rdgrft ! Ice ridging/rafting64 &namdyn_rdgrft ! Ice ridging/rafting 62 65 !------------------------------------------------------------------------------ 63 66 ! -- ice_rdgrft_strength -- ! … … 86 89 / 87 90 !------------------------------------------------------------------------------ 88 &nam ice_rhg ! Ice rheology91 &namdyn_rhg ! Ice rheology 89 92 !------------------------------------------------------------------------------ 90 93 ln_rhg_EVP = .true. ! EVP rheology … … 96 99 / 97 100 !------------------------------------------------------------------------------ 98 &nam ice_adv ! Ice advection101 &namdyn_adv ! Ice advection 99 102 !------------------------------------------------------------------------------ 100 103 ln_adv_Pra = .false. ! Advection scheme (Prather) … … 103 106 / 104 107 !------------------------------------------------------------------------------ 105 &namice_thd ! Ice thermodynamics 106 !------------------------------------------------------------------------------ 107 ! -- icethd_dif -- ! 108 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice [1/m] 109 ln_cndi_U64 = .false. ! sea ice thermal conductivity: k = k0 + beta.S/T (Untersteiner, 1964) 110 ln_cndi_P07 = .true. ! sea ice thermal conductivity: k = k0 + beta1.S/T - beta2.T (Pringle et al., 2007) 111 ln_dqns_i = .true. ! change the surface non-solar flux with surface temperature (T) or not (F) 112 rn_cnd_s = 0.31 ! thermal conductivity of the snow (0.31 W/m/K, Maykut and Untersteiner, 1971) 113 ! Obs: 0.1-0.5 (Lecomte et al, JAMES 2013) 114 ! -- icethd_dh -- ! 115 ln_icedH = .true. ! activate ice thickness change from growing/melting (T) or not (F) 116 rn_blow_s = 0.66 ! mesure of snow blowing into the leads 117 ! = 1 => no snow blowing, < 1 => some snow blowing 118 ! -- icethd_da -- ! 119 ln_icedA = .true. ! activate lateral melting param. (T) or not (F) 120 rn_beta = 1.0 ! coef. beta for lateral melting param. Recommended range=[0.8-1.2] 121 ! => decrease = more melt and melt peaks toward higher concentration (A~0.5 for beta=1 ; A~0.8 for beta=0.2) 122 ! 0.3 = best fit for western Fram Strait and Antarctica 123 ! 1.4 = best fit for eastern Fram Strait 124 rn_dmin = 8. ! minimum floe diameter for lateral melting param. Recommended range=[6-10] 125 ! => 6 vs 8m = +40% melting at the peak (A~0.5) 126 ! 10 vs 8m = -20% melting 127 ! -- icethd_lac -- ! 128 ln_icedO = .true. ! activate ice growth in open-water (T) or not (F) 129 rn_hinew = 0.1 ! thickness for new ice formation in open water (m), must be larger than rn_hnewice 130 ln_frazil = .false. ! Frazil ice parameterization (ice collection as a function of wind) 131 rn_maxfraz = 1.0 ! maximum fraction of frazil ice collecting at the ice base 132 rn_vfraz = 0.417 ! thresold drift speed for frazil ice collecting at the ice bottom (m/s) 133 rn_Cfraz = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom 134 ! -- icestp -- ! 135 nn_iceflx = -1 ! Redistribute heat flux over ice categories 136 ! =-1 Do nothing (needs N(cat) fluxes) 137 ! ==> forced mode only 138 ! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice 139 ! ==> forced and coupled modes 140 ! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice using T-ice and albedo sensitivity 141 ! ==> forced mode only 142 ! = 2 Redistribute a single flux over categories 143 ! ==> coupled mode only 144 / 145 !------------------------------------------------------------------------------ 146 &namice_sal ! Ice salinity 147 !------------------------------------------------------------------------------ 148 ! -- icethd_sal -- ! 149 ln_icedS = .true. ! activate gravity drainage and flushing (T) or not (F) 150 nn_icesal = 2 ! ice salinity option 151 ! 1: constant ice salinity (S=rn_icesal) 152 ! 2: varying salinity parameterization S(z,t) 153 ! 3: prescribed salinity profile S(z), Schwarzacher, 1959 154 rn_icesal = 4. ! (nn_icesal=1) ice salinity (g/kg) 155 rn_sal_gd = 5. ! restoring ice salinity, gravity drainage (g/kg) 156 rn_time_gd = 1.73e+6 ! restoring time scale, gravity drainage (s) 157 rn_sal_fl = 2. ! restoring ice salinity, flushing (g/kg) 158 rn_time_fl = 8.64e+5 ! restoring time scale, flushing (s) 159 rn_simax = 20. ! maximum tolerated ice salinity (g/kg) 160 rn_simin = 0.1 ! minimum tolerated ice salinity (g/kg) 161 / 162 !------------------------------------------------------------------------------ 163 &namicemp ! Melt ponds 164 !------------------------------------------------------------------------------ 165 ! -- limmp -- ! 166 ln_pnd = .false. ! active melt ponds 167 ln_pnd_rad = .false. ! active melt ponds radiative coupling 168 ln_pnd_fw = .false. ! active melt ponds freshwater coupling 169 nn_pnd_scheme = 0 ! type of melt pond scheme : =0 prescribed ( Tsu=0 ), =1 empirical, =2 topographic 170 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 171 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 172 / 173 !------------------------------------------------------------------------------ 174 &namice_ini ! Ice initialization 175 !------------------------------------------------------------------------------ 176 ! -- iceistate -- ! 177 ln_iceini = .true. ! activate ice initialization (T) or not (F) 178 ln_iceini_file = .false. ! netcdf file provided for initialization (T) or not (F) 179 rn_thres_sst = 2.0 ! max delta temp. above Tfreeze with initial ice = (sst - tfreeze) 180 rn_hts_ini_n = 0.3 ! initial real snow thickness (m), North 181 rn_hts_ini_s = 0.3 ! " " South 182 rn_hti_ini_n = 3.0 ! initial real ice thickness (m), North 183 rn_hti_ini_s = 1.0 ! " " South 184 rn_ati_ini_n = 0.9 ! initial ice concentration (-), North 185 rn_ati_ini_s = 0.9 ! " " South 186 rn_smi_ini_n = 6.3 ! initial ice salinity (g/kg), North 187 rn_smi_ini_s = 6.3 ! " " South 188 rn_tmi_ini_n = 270. ! initial ice/snw temperature (K), North 189 rn_tmi_ini_s = 270. ! " " South 108 &namforcing ! Ice surface forcing 109 !------------------------------------------------------------------------------ 110 rn_cio = 5.0e-03 ! ice-ocean drag coefficient (-) 111 rn_blow_s = 0.66 ! mesure of snow blowing into the leads 112 ! = 1 => no snow blowing, < 1 => some snow blowing 113 nn_iceflx = -1 ! Redistribute heat flux over ice categories 114 ! =-1 Do nothing (needs N(cat) fluxes) 115 ! ==> forced mode only 116 ! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice 117 ! ==> forced and coupled modes 118 ! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice using T-ice and albedo sensitivity 119 ! ==> forced mode only 120 ! = 2 Redistribute a single flux over categories 121 ! ==> coupled mode only 122 / 123 !------------------------------------------------------------------------------ 124 &namthd ! Ice thermodynamics 125 !------------------------------------------------------------------------------ 126 ln_icedH = .true. ! activate ice thickness change from growing/melting (T) or not (F) 127 ln_icedA = .true. ! activate lateral melting param. (T) or not (F) 128 ln_icedO = .true. ! activate ice growth in open-water (T) or not (F) 129 ln_icedS = .true. ! activate gravity drainage and flushing (T) or not (F) 130 / 131 !------------------------------------------------------------------------------ 132 &namthd_zdf ! Ice heat diffusion 133 !------------------------------------------------------------------------------ 134 ln_zdf_Beer = .true. ! Heat diffusion follows a Beer law 135 ln_cndi_U64 = .false. ! sea ice thermal conductivity: k = k0 + beta.S/T (Untersteiner, 1964) 136 ln_cndi_P07 = .true. ! sea ice thermal conductivity: k = k0 + beta1.S/T - beta2.T (Pringle et al., 2007) 137 rn_cnd_s = 0.31 ! thermal conductivity of the snow (0.31 W/m/K, Maykut and Untersteiner, 1971) 138 ! Obs: 0.1-0.5 (Lecomte et al, JAMES 2013) 139 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice [1/m] 140 ln_dqns_i = .true. ! change the surface non-solar flux with surface temperature (T) or not (F) 141 / 142 !------------------------------------------------------------------------------ 143 &namthd_da ! Ice lateral melting 144 !------------------------------------------------------------------------------ 145 rn_beta = 1.0 ! coef. beta for lateral melting param. Recommended range=[0.8-1.2] 146 ! => decrease = more melt and melt peaks toward higher concentration (A~0.5 for beta=1 ; A~0.8 for beta=0.2) 147 ! 0.3 = best fit for western Fram Strait and Antarctica 148 ! 1.4 = best fit for eastern Fram Strait 149 rn_dmin = 8. ! minimum floe diameter for lateral melting param. Recommended range=[6-10] 150 ! => 6 vs 8m = +40% melting at the peak (A~0.5) 151 ! 10 vs 8m = -20% melting 152 / 153 !------------------------------------------------------------------------------ 154 &namthd_do ! Ice growth in open water 155 !------------------------------------------------------------------------------ 156 rn_hinew = 0.1 ! thickness for new ice formation in open water (m), must be larger than rn_hnewice 157 ln_frazil = .false. ! Frazil ice parameterization (ice collection as a function of wind) 158 rn_maxfraz = 1.0 ! maximum fraction of frazil ice collecting at the ice base 159 rn_vfraz = 0.417 ! thresold drift speed for frazil ice collecting at the ice bottom (m/s) 160 rn_Cfraz = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom 161 / 162 !------------------------------------------------------------------------------ 163 &namthd_sal ! Ice salinity 164 !------------------------------------------------------------------------------ 165 nn_icesal = 2 ! ice salinity option 166 ! 1: constant ice salinity (S=rn_icesal) 167 ! 2: varying salinity parameterization S(z,t) 168 ! 3: prescribed salinity profile S(z), Schwarzacher, 1959 169 rn_icesal = 4. ! (nn_icesal=1) ice salinity (g/kg) 170 rn_sal_gd = 5. ! restoring ice salinity, gravity drainage (g/kg) 171 rn_time_gd = 1.73e+6 ! restoring time scale, gravity drainage (s) 172 rn_sal_fl = 2. ! restoring ice salinity, flushing (g/kg) 173 rn_time_fl = 8.64e+5 ! restoring time scale, flushing (s) 174 rn_simax = 20. ! maximum tolerated ice salinity (g/kg) 175 rn_simin = 0.1 ! minimum tolerated ice salinity (g/kg) 176 / 177 !------------------------------------------------------------------------------ 178 &nammp ! Melt ponds 179 !------------------------------------------------------------------------------ 180 ln_pnd = .false. ! active melt ponds 181 ln_pnd_rad = .false. ! active melt ponds radiative coupling 182 ln_pnd_fw = .false. ! active melt ponds freshwater coupling 183 nn_pnd_scheme = 0 ! type of melt pond scheme : =0 prescribed ( Tsu=0 ), =1 empirical, =2 topographic 184 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 185 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 186 / 187 !------------------------------------------------------------------------------ 188 &namini ! Ice initialization 189 !------------------------------------------------------------------------------ 190 ln_iceini = .true. ! activate ice initialization (T) or not (F) 191 ln_iceini_file = .false. ! netcdf file provided for initialization (T) or not (F) 192 rn_thres_sst = 2.0 ! max delta temp. above Tfreeze with initial ice = (sst - tfreeze) 193 rn_hts_ini_n = 0.3 ! initial real snow thickness (m), North 194 rn_hts_ini_s = 0.3 ! " " South 195 rn_hti_ini_n = 3.0 ! initial real ice thickness (m), North 196 rn_hti_ini_s = 1.0 ! " " South 197 rn_ati_ini_n = 0.9 ! initial ice concentration (-), North 198 rn_ati_ini_s = 0.9 ! " " South 199 rn_smi_ini_n = 6.3 ! initial ice salinity (g/kg), North 200 rn_smi_ini_s = 6.3 ! " " South 201 rn_tmi_ini_n = 270. ! initial ice/snw temperature (K), North 202 rn_tmi_ini_s = 270. ! " " South 190 203 191 204 sn_hti = 'Ice_initialization' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' … … 198 211 / 199 212 !------------------------------------------------------------------------------ 200 &nam ice_alb ! albedo parameters201 !------------------------------------------------------------------------------ 202 nn_ice_alb = 1! parameterization of ice/snow albedo203 204 205 206 207 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)208 rn_alb_smlt = 0.75! melting snow albedo : 0.65 ( '' ) ; 0.75 ( '' ) ; obs 0.72-0.82 ( '' )209 rn_alb_idry = 0.60! dry ice albedo : 0.72 ( '' ) ; 0.60 ( '' ) ; obs 0.54-0.65 ( '' )210 rn_alb_imlt = 0.50! bare puddled ice albedo : 0.53 ( '' ) ; 0.50 ( '' ) ; obs 0.49-0.58 ( '' )211 rn_alb_dpnd = 0.27! ponded ice albedo : 0.25 ( '' ) ; 0.27 ( '' ) ; obs 0.10-0.30 ( '' )212 / 213 !------------------------------------------------------------------------------ 214 &nam ice_dia ! Diagnostics215 !------------------------------------------------------------------------------ 216 ln_icediachk = .false.! check online the heat, mass & salt budgets (T) or not (F)217 ln_icediahsb = .false.! output the heat, mass & salt budgets (T) or not (F)218 ln_icectl = .false.! ice points output for debug (T or F)219 iiceprt = 10! i-index for debug220 jiceprt = 10! j-index for debug221 / 213 &namalb ! albedo parameters 214 !------------------------------------------------------------------------------ 215 nn_ice_alb = 1 ! parameterization of ice/snow albedo 216 ! 0: Shine & Henderson-Sellers (JGR 1985), giving clear-sky albedo 217 ! 1: "home made" based on Brandt et al. (JClim 2005) 218 ! and Grenfell & Perovich (JGR 2004), giving cloud-sky albedo 219 ! 2: as 1 with melt ponds 220 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) 221 rn_alb_smlt = 0.75 ! melting snow albedo : 0.65 ( '' ) ; 0.75 ( '' ) ; obs 0.72-0.82 ( '' ) 222 rn_alb_idry = 0.60 ! dry ice albedo : 0.72 ( '' ) ; 0.60 ( '' ) ; obs 0.54-0.65 ( '' ) 223 rn_alb_imlt = 0.50 ! bare puddled ice albedo : 0.53 ( '' ) ; 0.50 ( '' ) ; obs 0.49-0.58 ( '' ) 224 rn_alb_dpnd = 0.27 ! ponded ice albedo : 0.25 ( '' ) ; 0.27 ( '' ) ; obs 0.10-0.30 ( '' ) 225 / 226 !------------------------------------------------------------------------------ 227 &namdia ! Diagnostics 228 !------------------------------------------------------------------------------ 229 ln_icediachk = .false. ! check online the heat, mass & salt budgets (T) or not (F) 230 ln_icediahsb = .false. ! output the heat, mass & salt budgets (T) or not (F) 231 ln_icectl = .false. ! ice points output for debug (T or F) 232 iiceprt = 10 ! i-index for debug 233 jiceprt = 10 ! j-index for debug 234 / -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r8518 r8531 153 153 !! * Share Module variables 154 154 !!-------------------------------------------------------------------------- 155 ! !!** ice-generic parameters namelist (nam ice_run) **155 ! !!** ice-generic parameters namelist (nampar) ** 156 156 INTEGER , PUBLIC :: jpl !: number of ice categories 157 157 INTEGER , PUBLIC :: nlay_i !: number of ice layers 158 158 INTEGER , PUBLIC :: nlay_s !: number of snow layers 159 INTEGER , PUBLIC :: nn_monocat !: virtual ITD mono-category parameterizations (1-4) or not (0) 159 160 LOGICAL , PUBLIC :: ln_icedyn !: flag for ice dynamics (T) or not (F) 160 161 LOGICAL , PUBLIC :: ln_icethd !: flag for ice thermo (T) or not (F) … … 166 167 CHARACTER(len=256), PUBLIC :: cn_icerst_outdir!: ice restart output directory 167 168 168 ! !!** ice-itd namelist (nami ce_itd) **169 ! !!** ice-itd namelist (namitd) ** 169 170 REAL(wp), PUBLIC :: rn_himin !: minimum ice thickness 170 171 171 ! !!** ice-dynamics namelist (nam ice_dyn) **172 ! !!** ice-dynamics namelist (namdyn) ** 172 173 REAL(wp), PUBLIC :: rn_ishlat !: lateral boundary condition for sea-ice 173 174 REAL(wp), PUBLIC :: rn_cio !: drag coefficient for oceanic stress … … 177 178 REAL(wp), PUBLIC :: rn_lfrelax !: relaxation time scale (s-1) to reach static friction (landfast ice) 178 179 ! 179 ! !!** ice-rheology namelist (nam ice_rhg) **180 ! !!** ice-rheology namelist (namrhg) ** 180 181 REAL(wp), PUBLIC :: rn_creepl !: creep limit : has to be under 1.0e-9 181 182 REAL(wp), PUBLIC :: rn_ecc !: eccentricity of the elliptical yield curve … … 183 184 REAL(wp), PUBLIC :: rn_relast !: ratio => telast/rdt_ice (1/3 or 1/9 depending on nb of subcycling nevp) 184 185 ! 185 ! !!** ice-thermodynamics namelist (namice_thd) ** 186 ! -- icethd_dif -- ! 187 REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation Grenfell et al. (2006) [1/m] 188 LOGICAL , PUBLIC :: ln_cndi_U64 !: thermal conductivity: Untersteiner (1964) 189 LOGICAL , PUBLIC :: ln_cndi_P07 !: thermal conductivity: Pringle et al (2007) 190 LOGICAL , PUBLIC :: ln_dqns_i !: change non-solar surface flux with changing surface temperature (T) or not (F) 191 INTEGER , PUBLIC :: nn_monocat !: virtual ITD mono-category parameterizations (1-4) or not (0) 192 REAL(wp), PUBLIC :: rn_cnd_s !: thermal conductivity of the snow [W/m/K] 186 ! !!** ice-thermodynamics namelist (namthd) ** 193 187 ! -- icethd_dh -- ! 194 LOGICAL , PUBLIC :: ln_icedH !: activate ice thickness change from growing/melting (T) or not (F)195 188 REAL(wp), PUBLIC :: rn_blow_s !: coef. for partitioning of snowfall between leads and sea ice 196 ! -- icethd_da -- !197 LOGICAL , PUBLIC :: ln_icedA !: activate lateral melting param. (T) or not (F)198 REAL(wp), PUBLIC :: rn_beta !: coef. beta for lateral melting param.199 REAL(wp), PUBLIC :: rn_dmin !: minimum floe diameter for lateral melting param.200 ! -- icethd_lac -- !201 LOGICAL , PUBLIC :: ln_icedO !: activate ice growth in open-water (T) or not (F)202 REAL(wp), PUBLIC :: rn_hinew !: thickness for new ice formation (m)203 LOGICAL , PUBLIC :: ln_frazil !: use of frazil ice collection as function of wind (T) or not (F)204 REAL(wp), PUBLIC :: rn_maxfraz !: maximum portion of frazil ice collecting at the ice bottom205 REAL(wp), PUBLIC :: rn_vfraz !: threshold drift speed for collection of bottom frazil ice206 REAL(wp), PUBLIC :: rn_Cfraz !: squeezing coefficient for collection of bottom frazil ice207 189 ! -- icethd -- ! 208 190 INTEGER , PUBLIC :: nn_iceflx !: Redistribute heat flux over ice categories … … 213 195 ! ! = 2 Redistribute a single flux over categories 214 196 215 ! !!** ice-salinity namelist (nam ice_sal) **197 ! !!** ice-salinity namelist (namthd_sal) ** 216 198 INTEGER , PUBLIC :: nn_icesal !: salinity configuration used in the model 217 199 ! ! 1 - constant salinity in both space and time … … 223 205 224 206 ! MV MP 2016 225 ! !!** melt pond namelist (nam icemp)207 ! !!** melt pond namelist (nammp) 226 208 LOGICAL , PUBLIC :: ln_pnd !: activate ponds or not 227 209 LOGICAL , PUBLIC :: ln_pnd_rad !: ponds radiatively active or not … … 231 213 REAL(wp), PUBLIC :: rn_hpnd !: prescribed pond depth (0<rn_hpnd<1), only if nn_pnd_scheme = 0 232 214 ! END MV MP 2016 233 ! !!** ice-diagnostics namelist (nam ice_dia) **215 ! !!** ice-diagnostics namelist (namdia) ** 234 216 LOGICAL , PUBLIC :: ln_icediachk !: flag for ice diag (T) or not (F) 235 217 LOGICAL , PUBLIC :: ln_icediahsb !: flag for ice diag (T) or not (F) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceadv.F90
r8518 r8531 42 42 INTEGER, PARAMETER :: np_advUMx = 2 ! Ultimate-Macho scheme 43 43 ! 44 ! ** namelist (nam ice_adv) **44 ! ** namelist (namdyn_adv) ** 45 45 LOGICAL :: ln_adv_Pra ! Prather advection scheme 46 46 LOGICAL :: ln_adv_UMx ! Ultimate-Macho advection scheme … … 132 132 !! dynamics 133 133 !! 134 !! ** Method : Read the nam ice_adv namelist and check the ice-dynamic134 !! ** Method : Read the namdyn_adv namelist and check the ice-dynamic 135 135 !! parameter values called at the first timestep (nit000) 136 136 !! 137 !! ** input : Namelist nam ice_adv137 !! ** input : Namelist namdyn_adv 138 138 !!------------------------------------------------------------------- 139 139 INTEGER :: ios, ioptio ! Local integer output status for namelist read 140 140 !! 141 NAMELIST/nam ice_adv/ ln_adv_Pra, ln_adv_UMx, nn_UMx141 NAMELIST/namdyn_adv/ ln_adv_Pra, ln_adv_UMx, nn_UMx 142 142 !!------------------------------------------------------------------- 143 143 ! 144 REWIND( numnam_ice_ref ) ! Namelist nam ice_adv in reference namelist : Ice dynamics145 READ ( numnam_ice_ref, nam ice_adv, IOSTAT = ios, ERR = 901)146 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_adv in reference namelist', lwp )144 REWIND( numnam_ice_ref ) ! Namelist namdyn_adv in reference namelist : Ice dynamics 145 READ ( numnam_ice_ref, namdyn_adv, IOSTAT = ios, ERR = 901) 146 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_adv in reference namelist', lwp ) 147 147 ! 148 REWIND( numnam_ice_cfg ) ! Namelist nam ice_adv in configuration namelist : Ice dynamics149 READ ( numnam_ice_cfg, nam ice_adv, IOSTAT = ios, ERR = 902 )150 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_adv in configuration namelist', lwp )151 IF(lwm) WRITE ( numoni, nam ice_adv )148 REWIND( numnam_ice_cfg ) ! Namelist namdyn_adv in configuration namelist : Ice dynamics 149 READ ( numnam_ice_cfg, namdyn_adv, IOSTAT = ios, ERR = 902 ) 150 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_adv in configuration namelist', lwp ) 151 IF(lwm) WRITE ( numoni, namdyn_adv ) 152 152 ! 153 153 IF(lwp) THEN ! control print … … 155 155 WRITE(numout,*) 'ice_adv_init: ice parameters for ice dynamics ' 156 156 WRITE(numout,*) '~~~~~~~~~~~~' 157 WRITE(numout,*) ' Namelist nam ice_adv'158 WRITE(numout,*) ' type of advection scheme (Prather) 159 WRITE(numout,*) ' type of advection scheme (Ulimate-Macho) 160 WRITE(numout,*) ' order of the Ultimate-Macho scheme nn_UMx= ', nn_UMx157 WRITE(numout,*) ' Namelist namdyn_adv:' 158 WRITE(numout,*) ' type of advection scheme (Prather) ln_adv_Pra = ', ln_adv_Pra 159 WRITE(numout,*) ' type of advection scheme (Ulimate-Macho) ln_adv_UMx = ', ln_adv_UMx 160 WRITE(numout,*) ' order of the Ultimate-Macho scheme nn_UMx = ', nn_UMx 161 161 ENDIF 162 162 ! -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icealb.F90
r8517 r8531 34 34 REAL(wp) , PARAMETER :: r1_c2 = 1. / rc2 35 35 ! 36 ! ** albedo namelist (nam ice_alb)36 ! ** albedo namelist (namalb) 37 37 INTEGER :: nn_ice_alb ! type of albedo scheme: 0: Shine & Henderson-Sellers (JGR 1985) 38 38 ! ! 1: "home made" based on Brandt et al. (JClim 2005) … … 310 310 !! ** Purpose : initializations for the albedo parameters 311 311 !! 312 !! ** Method : Read the namelist nam ice_alb312 !! ** Method : Read the namelist namalb 313 313 !!---------------------------------------------------------------------- 314 314 INTEGER :: ios ! Local integer output status for namelist read 315 315 !! 316 NAMELIST/nam ice_alb/ nn_ice_alb, rn_alb_sdry, rn_alb_smlt, rn_alb_idry, rn_alb_imlt, rn_alb_dpnd317 !!---------------------------------------------------------------------- 318 ! 319 REWIND( numnam_ice_ref ) ! Namelist nam ice_alb in reference namelist : Albedo parameters320 READ ( numnam_ice_ref, nam ice_alb, IOSTAT = ios, ERR = 901)321 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_alb in reference namelist', lwp )322 323 REWIND( numnam_ice_cfg ) ! Namelist nam ice_alb in configuration namelist : Albedo parameters324 READ ( numnam_ice_cfg, nam ice_alb, IOSTAT = ios, ERR = 902 )325 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_alb in configuration namelist', lwp )326 IF(lwm) WRITE ( numoni, nam ice_alb )316 NAMELIST/namalb/ nn_ice_alb, rn_alb_sdry, rn_alb_smlt, rn_alb_idry, rn_alb_imlt, rn_alb_dpnd 317 !!---------------------------------------------------------------------- 318 ! 319 REWIND( numnam_ice_ref ) ! Namelist namalb in reference namelist : Albedo parameters 320 READ ( numnam_ice_ref, namalb, IOSTAT = ios, ERR = 901) 321 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namalb in reference namelist', lwp ) 322 323 REWIND( numnam_ice_cfg ) ! Namelist namalb in configuration namelist : Albedo parameters 324 READ ( numnam_ice_cfg, namalb, IOSTAT = ios, ERR = 902 ) 325 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namalb in configuration namelist', lwp ) 326 IF(lwm) WRITE ( numoni, namalb ) 327 327 ! 328 328 IF(lwp) THEN ! Control print … … 330 330 WRITE(numout,*) 'ice_alb_init: set albedo parameters' 331 331 WRITE(numout,*) '~~~~~~~~~~~~' 332 WRITE(numout,*) ' Namelist nam ice_alb : albedo'332 WRITE(numout,*) ' Namelist namalb:' 333 333 WRITE(numout,*) ' choose the albedo parameterization nn_ice_alb = ', nn_ice_alb 334 334 WRITE(numout,*) ' albedo of dry snow rn_alb_sdry = ', rn_alb_sdry -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedia.F90
r8522 r8531 48 48 INTEGER FUNCTION ice_dia_alloc() 49 49 !!---------------------------------------------------------------------! 50 !! *** ROUTINE ice_ rdgrft_alloc ***50 !! *** ROUTINE ice_dia_alloc *** 51 51 !!---------------------------------------------------------------------! 52 52 ALLOCATE( vol_loc_ini(jpi,jpj), sal_loc_ini(jpi,jpj), tem_loc_ini(jpi,jpj), STAT=ice_dia_alloc ) … … 175 175 INTEGER :: ios, ierror ! local integer 176 176 !! 177 NAMELIST/nam ice_dia/ ln_icediachk, ln_icediahsb, ln_icectl, iiceprt, jiceprt177 NAMELIST/namdia/ ln_icediachk, ln_icediahsb, ln_icectl, iiceprt, jiceprt 178 178 !!---------------------------------------------------------------------- 179 179 ! 180 REWIND( numnam_ice_ref ) ! Namelist nam ice_dia in reference namelist : Parameters for ice181 READ ( numnam_ice_ref, nam ice_dia, IOSTAT = ios, ERR = 901)182 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_dia in reference namelist', lwp )183 184 REWIND( numnam_ice_cfg ) ! Namelist nam ice_dia in configuration namelist : Parameters for ice185 READ ( numnam_ice_cfg, nam ice_dia, IOSTAT = ios, ERR = 902 )186 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_dia in configuration namelist', lwp )187 IF(lwm) WRITE ( numoni, nam ice_dia )180 REWIND( numnam_ice_ref ) ! Namelist namdia in reference namelist : Parameters for ice 181 READ ( numnam_ice_ref, namdia, IOSTAT = ios, ERR = 901) 182 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdia in reference namelist', lwp ) 183 184 REWIND( numnam_ice_cfg ) ! Namelist namdia in configuration namelist : Parameters for ice 185 READ ( numnam_ice_cfg, namdia, IOSTAT = ios, ERR = 902 ) 186 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdia in configuration namelist', lwp ) 187 IF(lwm) WRITE ( numoni, namdia ) 188 188 ! 189 189 IF(lwp) THEN ! control print … … 191 191 WRITE(numout,*) 'ice_dia_init: ice diagnostics' 192 192 WRITE(numout,*) ' ~~~~~~~~~~~' 193 WRITE(numout,*) ' Namelist nam ice_dia :'193 WRITE(numout,*) ' Namelist namdia:' 194 194 WRITE(numout,*) ' Diagnose online heat/mass/salt budget ln_icediachk = ', ln_icediachk 195 195 WRITE(numout,*) ' Output heat/mass/salt budget ln_icediahsb = ', ln_icediahsb 196 WRITE(numout,*) ' control prints for a given grid point ln_icectl= ', ln_icectl196 WRITE(numout,*) ' control prints for a given grid point ln_icectl = ', ln_icectl 197 197 WRITE(numout,*) ' chosen grid point position (iiceprt,jiceprt) = (', iiceprt,',', jiceprt,')' 198 198 ENDIF -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn.F90
r8518 r8531 25 25 USE lib_mpp ! MPP library 26 26 USE in_out_manager ! I/O manager 27 USE iom ! I/O manager 27 28 USE lib_fortran ! glob_sum 28 29 USE timing ! Timing … … 209 210 !! dynamics 210 211 !! 211 !! ** Method : Read the nam ice_dyn namelist and check the ice-dynamic212 !! ** Method : Read the namdyn namelist and check the ice-dynamic 212 213 !! parameter values called at the first timestep (nit000) 213 214 !! 214 !! ** input : Namelist nam ice_dyn215 !! ** input : Namelist namdyn 215 216 !!------------------------------------------------------------------- 216 217 INTEGER :: ios, ioptio ! Local integer output status for namelist read 217 218 !! 218 NAMELIST/nam ice_dyn/ ln_dynFULL, ln_dynRHGADV, ln_dynADV, rn_uice, rn_vice, &219 & rn_ishlat , rn_cio ,&220 & 221 !!------------------------------------------------------------------- 222 ! 223 REWIND( numnam_ice_ref ) ! Namelist nam ice_dyn in reference namelist : Ice dynamics224 READ ( numnam_ice_ref, nam ice_dyn, IOSTAT = ios, ERR = 901)225 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_dyn in reference namelist', lwp )226 ! 227 REWIND( numnam_ice_cfg ) ! Namelist nam ice_dyn in configuration namelist : Ice dynamics228 READ ( numnam_ice_cfg, nam ice_dyn, IOSTAT = ios, ERR = 902 )229 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_dyn in configuration namelist', lwp )230 IF(lwm) WRITE ( numoni, nam ice_dyn )219 NAMELIST/namdyn/ ln_dynFULL, ln_dynRHGADV, ln_dynADV, rn_uice, rn_vice, & 220 & rn_ishlat , & 221 & ln_landfast, rn_gamma , rn_icebfr, rn_lfrelax 222 !!------------------------------------------------------------------- 223 ! 224 REWIND( numnam_ice_ref ) ! Namelist namdyn in reference namelist : Ice dynamics 225 READ ( numnam_ice_ref, namdyn, IOSTAT = ios, ERR = 901) 226 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn in reference namelist', lwp ) 227 ! 228 REWIND( numnam_ice_cfg ) ! Namelist namdyn in configuration namelist : Ice dynamics 229 READ ( numnam_ice_cfg, namdyn, IOSTAT = ios, ERR = 902 ) 230 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn in configuration namelist', lwp ) 231 IF(lwm) WRITE ( numoni, namdyn ) 231 232 ! 232 233 IF(lwp) THEN ! control print … … 234 235 WRITE(numout,*) 'ice_dyn_init: ice parameters for ice dynamics ' 235 236 WRITE(numout,*) '~~~~~~~~~~~~' 236 WRITE(numout,*) ' Namelist nam ice_dyn'237 WRITE(numout,*) ' Namelist namdyn:' 237 238 WRITE(numout,*) ' Full ice dynamics (rhg + adv + ridge/raft + corr) ln_dynFULL = ', ln_dynFULL 238 239 WRITE(numout,*) ' No ridge/raft & No cor (rhg + adv) ln_dynRHGADV = ', ln_dynRHGADV … … 240 241 WRITE(numout,*) ' with prescribed velocity given by ' 241 242 WRITE(numout,*) ' a uniform field (u,v)_ice = (rn_uice,rn_vice) = (', rn_uice,',', rn_vice,')' 242 WRITE(numout,*) ' lateral boundary condition for sea ice dynamics rn_ishlat = ', rn_ishlat 243 WRITE(numout,*) ' drag coefficient for oceanic stress rn_cio = ', rn_cio 244 WRITE(numout,*) ' Landfast: param (T or F) ln_landfast = ', ln_landfast 245 WRITE(numout,*) ' fraction of ocean depth that ice must reach rn_gamma = ', rn_gamma 246 WRITE(numout,*) ' maximum bottom stress per unit area of contact rn_icebfr = ', rn_icebfr 247 WRITE(numout,*) ' relax time scale (s-1) to reach static friction rn_lfrelax = ', rn_lfrelax 243 WRITE(numout,*) ' lateral boundary condition for sea ice dynamics rn_ishlat = ', rn_ishlat 244 WRITE(numout,*) ' Landfast: param (T or F) ln_landfast = ', ln_landfast 245 WRITE(numout,*) ' fraction of ocean depth that ice must reach rn_gamma = ', rn_gamma 246 WRITE(numout,*) ' maximum bottom stress per unit area of contact rn_icebfr = ', rn_icebfr 247 WRITE(numout,*) ' relax time scale (s-1) to reach static friction rn_lfrelax = ', rn_lfrelax 248 248 ENDIF 249 249 ! !== set the choice of ice dynamics ==! … … 267 267 ENDIF 268 268 ! !--- NO Landfast ice : set to zero once for all 269 IF( .NOT. ln_landfast ) tau_icebfr(:,:) = 0._wp 269 IF( .NOT. ln_landfast ) tau_icebfr(:,:) = 0._wp 270 ! 271 CALL ice_rdgrft_init ! set ice ridging/rafting parameters 272 CALL ice_rhg_init ! set ice rheology parameters 273 CALL ice_adv_init ! set ice advection parameters 270 274 ! 271 275 END SUBROUTINE ice_dyn_init -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceforcing.F90
r8514 r8531 30 30 PRIVATE 31 31 32 PUBLIC ice_forcing_tau ! routine called by icestp.F90 33 PUBLIC ice_forcing_flx ! routine called by icestp.F90 32 PUBLIC ice_forcing_tau ! called by icestp.F90 33 PUBLIC ice_forcing_flx ! called by icestp.F90 34 PUBLIC ice_forcing_init ! called by icestp.F90 34 35 35 36 !! * Substitutions … … 257 258 END SUBROUTINE ice_flx_dist 258 259 260 SUBROUTINE ice_forcing_init 261 !!------------------------------------------------------------------- 262 !! *** ROUTINE ice_forcing_init *** 263 !! 264 !! ** Purpose : Physical constants and parameters linked to the ice 265 !! dynamics 266 !! 267 !! ** Method : Read the namforcing namelist and check the ice-dynamic 268 !! parameter values called at the first timestep (nit000) 269 !! 270 !! ** input : Namelist namforcing 271 !!------------------------------------------------------------------- 272 INTEGER :: ios, ioptio ! Local integer output status for namelist read 273 !! 274 NAMELIST/namforcing/ rn_cio, rn_blow_s, nn_iceflx 275 !!------------------------------------------------------------------- 276 ! 277 REWIND( numnam_ice_ref ) ! Namelist namforcing in reference namelist : Ice dynamics 278 READ ( numnam_ice_ref, namforcing, IOSTAT = ios, ERR = 901) 279 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namforcing in reference namelist', lwp ) 280 ! 281 REWIND( numnam_ice_cfg ) ! Namelist namforcing in configuration namelist : Ice dynamics 282 READ ( numnam_ice_cfg, namforcing, IOSTAT = ios, ERR = 902 ) 283 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namforcing in configuration namelist', lwp ) 284 IF(lwm) WRITE ( numoni, namforcing ) 285 ! 286 IF(lwp) THEN ! control print 287 WRITE(numout,*) 288 WRITE(numout,*) 'ice_forcing_init: ice parameters for ice dynamics ' 289 WRITE(numout,*) '~~~~~~~~~~~~~~~' 290 WRITE(numout,*) ' Namelist namforcing:' 291 WRITE(numout,*) ' drag coefficient for oceanic stress rn_cio = ', rn_cio 292 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_blow_s = ', rn_blow_s 293 WRITE(numout,*) ' Multicategory heat flux formulation nn_iceflx = ', nn_iceflx 294 ENDIF 295 ! 296 IF(lwp) WRITE(numout,*) 297 SELECT CASE( nn_iceflx ) ! ESIM Multi-category heat flux formulation 298 CASE( -1 ) 299 IF(lwp) WRITE(numout,*) ' ESIM: use per-category fluxes (nn_iceflx = -1) ' 300 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for ESIM in coupled mode must be 0 or 2' ) 301 CASE( 0 ) 302 IF(lwp) WRITE(numout,*) ' ESIM: use average per-category fluxes (nn_iceflx = 0) ' 303 CASE( 1 ) 304 IF(lwp) WRITE(numout,*) ' ESIM: use average then redistribute per-category fluxes (nn_iceflx = 1) ' 305 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for ESIM in coupled mode must be 0 or 2' ) 306 CASE( 2 ) 307 IF(lwp) WRITE(numout,*) ' ESIM: Redistribute a single flux over categories (nn_iceflx = 2) ' 308 IF( .NOT. ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for ESIM in forced mode cannot be 2' ) 309 CASE DEFAULT 310 CALL ctl_stop( 'ice_thd_init: ESIM option, nn_iceflx, should be between -1 and 2' ) 311 END SELECT 312 ! 313 END SUBROUTINE ice_forcing_init 314 259 315 #else 260 316 !!---------------------------------------------------------------------- -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceistate.F90
r8518 r8531 49 49 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: si ! structure of input fields (file informations, fields read) 50 50 ! 51 ! ** namelist (nami ce_ini) **51 ! ** namelist (namini) ** 52 52 LOGICAL :: ln_iceini ! initialization or not 53 53 LOGICAL :: ln_iceini_file ! Ice initialization state from 2D netcdf file … … 512 512 !! ** Purpose : Definition of initial state of the ice 513 513 !! 514 !! ** Method : Read the nami ce_ini namelist and check the parameter514 !! ** Method : Read the namini namelist and check the parameter 515 515 !! values called at the first timestep (nit000) 516 516 !! 517 517 !! ** input : 518 !! Namelist nami ce_ini518 !! Namelist namini 519 519 !! 520 520 !! history : … … 531 531 TYPE(FLD_N), DIMENSION(jpfldi) :: slf_i ! array of namelist informations on the fields to read 532 532 ! 533 NAMELIST/nami ce_ini/ ln_iceini, ln_iceini_file, rn_thres_sst, rn_hts_ini_n, rn_hts_ini_s, &534 & 535 & 536 & 533 NAMELIST/namini/ ln_iceini, ln_iceini_file, rn_thres_sst, rn_hts_ini_n, rn_hts_ini_s, & 534 & rn_hti_ini_n, rn_hti_ini_s, rn_ati_ini_n, rn_ati_ini_s, rn_smi_ini_n, & 535 & rn_smi_ini_s, rn_tmi_ini_n, rn_tmi_ini_s, & 536 & sn_hti, sn_hts, sn_ati, sn_tsu, sn_tmi, sn_smi, cn_dir 537 537 !!----------------------------------------------------------------------------- 538 538 ! 539 REWIND( numnam_ice_ref ) ! Namelist nami ce_ini in reference namelist : Ice initial state540 READ ( numnam_ice_ref, nami ce_ini, IOSTAT = ios, ERR = 901)541 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nami ce_ini in reference namelist', lwp )542 543 REWIND( numnam_ice_cfg ) ! Namelist nami ce_ini in configuration namelist : Ice initial state544 READ ( numnam_ice_cfg, nami ce_ini, IOSTAT = ios, ERR = 902 )545 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nami ce_ini in configuration namelist', lwp )546 IF(lwm) WRITE ( numoni, nami ce_ini )539 REWIND( numnam_ice_ref ) ! Namelist namini in reference namelist : Ice initial state 540 READ ( numnam_ice_ref, namini, IOSTAT = ios, ERR = 901) 541 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namini in reference namelist', lwp ) 542 543 REWIND( numnam_ice_cfg ) ! Namelist namini in configuration namelist : Ice initial state 544 READ ( numnam_ice_cfg, namini, IOSTAT = ios, ERR = 902 ) 545 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namini in configuration namelist', lwp ) 546 IF(lwm) WRITE ( numoni, namini ) 547 547 548 548 slf_i(jp_hti) = sn_hti ; slf_i(jp_hts) = sn_hts … … 555 555 WRITE(numout,*) 'ice_istate_init: ice parameters inititialisation ' 556 556 WRITE(numout,*) '~~~~~~~~~~~~~~~' 557 WRITE(numout,*) ' Namelist nami ce_ini'557 WRITE(numout,*) ' Namelist namini:' 558 558 WRITE(numout,*) ' initialization with ice (T) or not (F) ln_iceini = ', ln_iceini 559 559 WRITE(numout,*) ' ice initialization from a netcdf file ln_iceini_file = ', ln_iceini_file -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceitd.F90
r8517 r8531 38 38 PUBLIC ice_itd_reb ! called in iceerr 39 39 40 ! ** ice-thickness distribution namelist (nami ce_itd) **40 ! ** ice-thickness distribution namelist (namitd) ** 41 41 REAL(wp) :: rn_himean ! mean thickness of the domain (used to compute the distribution) 42 42 … … 643 643 !! ** Purpose : Initializes the ice thickness distribution 644 644 !! ** Method : ... 645 !! ** input : Namelist nami ce_itd645 !! ** input : Namelist namitd 646 646 !!------------------------------------------------------------------- 647 647 INTEGER :: jl ! dummy loop index … … 649 649 REAL(wp) :: zhmax, znum, zden, zalpha ! - - 650 650 !! 651 NAMELIST/nami ce_itd/ rn_himean, rn_himin652 !!------------------------------------------------------------------ 653 ! 654 REWIND( numnam_ice_ref ) ! Namelist nami ce_itd in reference namelist : Parameters for ice655 READ ( numnam_ice_ref, nami ce_itd, IOSTAT = ios, ERR = 901)656 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nami ce_itd in reference namelist', lwp )657 658 REWIND( numnam_ice_cfg ) ! Namelist nami ce_itd in configuration namelist : Parameters for ice659 READ ( numnam_ice_cfg, nami ce_itd, IOSTAT = ios, ERR = 902 )660 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nami ce_itd in configuration namelist', lwp )661 IF(lwm) WRITE ( numoni, nami ce_itd )651 NAMELIST/namitd/ rn_himean, rn_himin 652 !!------------------------------------------------------------------ 653 ! 654 REWIND( numnam_ice_ref ) ! Namelist namitd in reference namelist : Parameters for ice 655 READ ( numnam_ice_ref, namitd, IOSTAT = ios, ERR = 901) 656 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namitd in reference namelist', lwp ) 657 658 REWIND( numnam_ice_cfg ) ! Namelist namitd in configuration namelist : Parameters for ice 659 READ ( numnam_ice_cfg, namitd, IOSTAT = ios, ERR = 902 ) 660 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namitd in configuration namelist', lwp ) 661 IF(lwm) WRITE ( numoni, namitd ) 662 662 ! 663 663 IF(lwp) THEN ! control print … … 665 665 WRITE(numout,*) 'ice_itd_init: Initialization of ice cat distribution ' 666 666 WRITE(numout,*) '~~~~~~~~~~~~' 667 WRITE(numout,*) ' Namelist nami ce_itd: '667 WRITE(numout,*) ' Namelist namitd: ' 668 668 WRITE(numout,*) ' mean ice thickness in the domain rn_himean = ', rn_himean 669 669 WRITE(numout,*) ' minimum ice thickness rn_himin = ', rn_himin -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerdgrft.F90
r8518 r8531 12 12 !! 'key_lim3' LIM-3 sea-ice model 13 13 !!---------------------------------------------------------------------- 14 USE par_oce ! ocean parameters15 14 USE dom_oce ! ocean domain 16 15 USE phycst ! physical constants (ocean directory) … … 31 30 PRIVATE 32 31 33 PUBLIC ice_rdgrft ! called by ice_stp34 PUBLIC ice_ rdgrft_strength ! called by icerhg_evp35 PUBLIC ice_rdgrft_init ! called by ice_stp32 PUBLIC ice_rdgrft ! called by icestp 33 PUBLIC ice_strength ! called by icerhg_evp 34 PUBLIC ice_rdgrft_init ! called by icedyn 36 35 37 36 ! Variables shared among ridging subroutines 38 37 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: asum ! sum of total ice and open water area 39 38 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: aksum ! ratio of area removed to area ridged 40 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a thorn! participation function; fraction of ridging/closing associated w/ category n39 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: apartf ! participation function; fraction of ridging/closing associated w/ category n 41 40 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hrmin ! minimum ridge thickness 42 41 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hrmax ! maximum ridge thickness 43 42 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hraft ! thickness of rafted ice 44 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: krdg! thickness of ridging ice / mean ridge thickness43 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hi_hrdg ! thickness of ridging ice / mean ridge thickness 45 44 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: aridge ! participating ice ridging 46 45 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: araft ! participating ice rafting 47 46 ! 48 REAL(wp), PARAMETER :: krdgmin = 1.1_wp ! min ridge thickness multiplier49 REAL(wp), PARAMETER :: kraft = 0.5_wp ! rafting multipliyer50 REAL(wp) :: zdrho !47 REAL(wp), PARAMETER :: hrdg_hi_min = 1.1_wp ! min ridge thickness multiplier: min(hrdg/hi) 48 REAL(wp), PARAMETER :: hi_hrft = 0.5_wp ! rafting multipliyer: (hi/hraft) 49 REAL(wp) :: zdrho ! 51 50 ! 52 ! ** namelist (nam ice_rdgrft) **51 ! ** namelist (namdyn_rdgrft) ** 53 52 LOGICAL :: ln_str_H79 ! ice strength parameterization (Hibler79) 54 53 REAL(wp) :: rn_pstar ! determines ice strength, Hibler JPO79 … … 83 82 !! *** ROUTINE ice_rdgrft_alloc *** 84 83 !!---------------------------------------------------------------------! 85 ALLOCATE( asum (jpi,jpj) , a thorn(jpi,jpj,0:jpl) , aksum (jpi,jpj) , &86 & hrmin(jpi,jpj,jpl) , hraft (jpi,jpj,jpl) , aridge(jpi,jpj,jpl) , &87 & hrmax(jpi,jpj,jpl) , krdg(jpi,jpj,jpl) , araft (jpi,jpj,jpl) , STAT=ice_rdgrft_alloc )84 ALLOCATE( asum (jpi,jpj) , apartf (jpi,jpj,0:jpl) , aksum (jpi,jpj) , & 85 & hrmin(jpi,jpj,jpl) , hraft (jpi,jpj,jpl) , aridge(jpi,jpj,jpl) , & 86 & hrmax(jpi,jpj,jpl) , hi_hrdg(jpi,jpj,jpl) , araft (jpi,jpj,jpl) , STAT=ice_rdgrft_alloc ) 88 87 89 88 IF( lk_mpp ) CALL mpp_sum ( ice_rdgrft_alloc ) … … 124 123 INTEGER :: niter ! local integer 125 124 INTEGER :: iterate_ridging ! if =1, repeat the ridging 126 REAL(wp) :: z a! local scalar125 REAL(wp) :: zfac ! local scalar 127 126 REAL(wp), DIMENSION(jpi,jpj) :: closing_net ! net rate at which area is removed (1/s) 128 127 ! ! (ridging ice area - area of new ridges) / dt … … 150 149 !-----------------------------------------------------------------------------! 151 150 ! 152 CALL ice_rdgrft_prep ! prepare ridging151 CALL rdgrft_prep ! prepare ridging 153 152 ! 154 153 DO jj = 1, jpj ! Initialize arrays. … … 203 202 DO WHILE ( iterate_ridging > 0 .AND. niter < nitermax ) 204 203 205 ! 3. 2closing_gross204 ! 3.1 closing_gross 206 205 !-----------------------------------------------------------------------------! 207 206 ! Based on the ITD of ridging and ridged ice, convert the net … … 216 215 DO jj = 1, jpj 217 216 DO ji = 1, jpi 218 z a = ( opning(ji,jj) - athorn(ji,jj,0) * closing_gross(ji,jj) ) * rdt_ice219 IF ( z a < 0._wp .AND. za> - ato_i(ji,jj) ) THEN ! would lead to negative ato_i220 opning(ji,jj) = a thorn(ji,jj,0) * closing_gross(ji,jj) - ato_i(ji,jj) * r1_rdtice221 ELSEIF( z a > 0._wp .AND. za> ( asum(ji,jj) - ato_i(ji,jj) ) ) THEN ! would lead to ato_i > asum222 opning(ji,jj) = a thorn(ji,jj,0) * closing_gross(ji,jj) + ( asum(ji,jj) - ato_i(ji,jj) ) * r1_rdtice217 zfac = ( opning(ji,jj) - apartf(ji,jj,0) * closing_gross(ji,jj) ) * rdt_ice 218 IF ( zfac < 0._wp .AND. zfac > - ato_i(ji,jj) ) THEN ! would lead to negative ato_i 219 opning(ji,jj) = apartf(ji,jj,0) * closing_gross(ji,jj) - ato_i(ji,jj) * r1_rdtice 220 ELSEIF( zfac > 0._wp .AND. zfac > ( asum(ji,jj) - ato_i(ji,jj) ) ) THEN ! would lead to ato_i > asum 221 opning(ji,jj) = apartf(ji,jj,0) * closing_gross(ji,jj) + ( asum(ji,jj) - ato_i(ji,jj) ) * r1_rdtice 223 222 ENDIF 224 223 END DO … … 232 231 DO jj = 1, jpj 233 232 DO ji = 1, jpi 234 z a = athorn(ji,jj,jl) * closing_gross(ji,jj) * rdt_ice235 IF( z a> a_i(ji,jj,jl) ) THEN236 closing_gross(ji,jj) = closing_gross(ji,jj) * a_i(ji,jj,jl) / z a233 zfac = apartf(ji,jj,jl) * closing_gross(ji,jj) * rdt_ice 234 IF( zfac > a_i(ji,jj,jl) ) THEN 235 closing_gross(ji,jj) = closing_gross(ji,jj) * a_i(ji,jj,jl) / zfac 237 236 ENDIF 238 237 END DO … … 240 239 END DO 241 240 242 ! 3. 3Redistribute area, volume, and energy.241 ! 3.2 Redistribute area, volume, and energy. 243 242 !-----------------------------------------------------------------------------! 244 CALL ice_rdgrft_ridgeshift( opning, closing_gross )243 CALL rdgrft_shift( opning, closing_gross ) 245 244 246 ! 3. 4Compute total area of ice plus open water after ridging.245 ! 3.3 Compute total area of ice plus open water after ridging. 247 246 !-----------------------------------------------------------------------------! 248 247 ! This is in general not equal to one because of divergence during transport 249 248 asum(:,:) = ato_i(:,:) + SUM( a_i, dim=3 ) 250 249 251 ! 3. 5Do we keep on iterating?250 ! 3.4 Do we keep on iterating? 252 251 !-----------------------------------------------------------------------------! 253 252 ! Check whether asum = 1. If not (because the closing and opening … … 276 275 ! 277 276 IF( iterate_ridging == 1 ) THEN 278 CALL ice_rdgrft_prep277 CALL rdgrft_prep 279 278 IF( niter > nitermax ) THEN 280 279 WRITE(numout,*) ' ALERTE : non-converging ridging scheme ' … … 295 294 296 295 297 SUBROUTINE ice_rdgrft_prep296 SUBROUTINE rdgrft_prep 298 297 !!---------------------------------------------------------------------! 299 !! *** ROUTINE ice_rdgrft_prep ***298 !! *** ROUTINE rdgrft_prep *** 300 299 !! 301 300 !! ** Purpose : preparation for ridging and strength calculations … … 319 318 END WHERE 320 319 321 !------------------------------------------------------------------------------! 322 ! 1) Participation function 323 !------------------------------------------------------------------------------! 320 !----------------------------------------------------------------- 321 ! 1) Participation function: a(h) = b(h).g(h) (apartf) 322 !----------------------------------------------------------------- 323 ! Compute the participation function apartf; this is analogous to 324 ! a(h) = b(h)g(h) as defined in Thorndike et al. (1975). 325 ! area lost from category n due to ridging/closing 326 ! apartf(n) = total area lost due to ridging/closing 327 ! assume b(h) = (2/Gstar) * (1 - G(h)/Gstar). 328 ! 329 ! The expressions for apartf are found by integrating b(h)g(h) between 330 ! the category boundaries. 331 ! apartf is always >= 0 and SUM(apartf(0:jpl))=1 332 !----------------------------------------------------------------- 324 333 ! 325 334 ! Compute total area of ice plus open water. … … 337 346 END DO 338 347 339 ! 1.3 Compute participation function a(h) = b(h).g(h) (athorn)340 !--------------------------------------------------------------------------------------------------341 ! Compute the participation function athorn; this is analogous to342 ! a(h) = b(h)g(h) as defined in Thorndike et al. (1975).343 ! area lost from category n due to ridging/closing344 ! athorn(n) = total area lost due to ridging/closing345 ! assume b(h) = (2/Gstar) * (1 - G(h)/Gstar).346 !347 ! The expressions for athorn are found by integrating b(h)g(h) between348 ! the category boundaries.349 ! athorn is always >= 0 and SUM(athorn(0:jpl))=1350 !-----------------------------------------------------------------351 348 ! 352 349 IF( ln_partf_lin ) THEN !--- Linear formulation (Thorndike et al., 1975) … … 355 352 DO ji = 1, jpi 356 353 IF ( zGsum(ji,jj,jl) < rn_gstar ) THEN 357 a thorn(ji,jj,jl) = z1_gstar * ( zGsum(ji,jj,jl) - zGsum(ji,jj,jl-1) ) * &354 apartf(ji,jj,jl) = z1_gstar * ( zGsum(ji,jj,jl) - zGsum(ji,jj,jl-1) ) * & 358 355 & ( 2._wp - ( zGsum(ji,jj,jl-1) + zGsum(ji,jj,jl) ) * z1_gstar ) 359 356 ELSEIF( zGsum(ji,jj,jl-1) < rn_gstar ) THEN 360 a thorn(ji,jj,jl) = z1_gstar * ( rn_gstar - zGsum(ji,jj,jl-1) ) * &357 apartf(ji,jj,jl) = z1_gstar * ( rn_gstar - zGsum(ji,jj,jl-1) ) * & 361 358 & ( 2._wp - ( zGsum(ji,jj,jl-1) + rn_gstar ) * z1_gstar ) 362 359 ELSE 363 a thorn(ji,jj,jl) = 0._wp360 apartf(ji,jj,jl) = 0._wp 364 361 ENDIF 365 362 END DO … … 374 371 END DO 375 372 DO jl = 0, jpl 376 a thorn(:,:,jl) = zGsum(:,:,jl-1) - zGsum(:,:,jl)373 apartf(:,:,jl) = zGsum(:,:,jl-1) - zGsum(:,:,jl) 377 374 END DO 378 375 ! … … 384 381 DO jj = 1, jpj 385 382 DO ji = 1, jpi 386 aridge(ji,jj,jl) = ( 1._wp + TANH ( rn_craft * ( ht_i(ji,jj,jl) - rn_hraft ) ) ) * 0.5_wp * a thorn(ji,jj,jl)387 araft (ji,jj,jl) = a thorn(ji,jj,jl) - aridge(ji,jj,jl)383 aridge(ji,jj,jl) = ( 1._wp + TANH ( rn_craft * ( ht_i(ji,jj,jl) - rn_hraft ) ) ) * 0.5_wp * apartf(ji,jj,jl) 384 araft (ji,jj,jl) = apartf(ji,jj,jl) - aridge(ji,jj,jl) 388 385 END DO 389 386 END DO 390 387 END DO 391 388 ELSEIF( ln_ridging .AND. .NOT. ln_rafting ) THEN !- ridging alone 392 aridge(:,:,:) = a thorn(:,:,1:jpl)389 aridge(:,:,:) = apartf(:,:,1:jpl) 393 390 araft (:,:,:) = 0._wp 394 391 ELSEIF( ln_rafting .AND. .NOT. ln_ridging ) THEN !- rafting alone 395 392 aridge(:,:,:) = 0._wp 396 araft (:,:,:) = a thorn(:,:,1:jpl)393 araft (:,:,:) = apartf(:,:,1:jpl) 397 394 ELSE !- no ridging & no rafting 398 395 aridge(:,:,:) = 0._wp … … 408 405 ! This parameterization is a modified version of Hibler (1980). 409 406 ! The mean ridging thickness, zhmean, is proportional to hi^(0.5) 410 ! and for very thick ridging ice must be >= krdgmin*hi407 ! and for very thick ridging ice must be >= hrdg_hi_min*hi 411 408 ! 412 409 ! The minimum ridging thickness, hrmin, is equal to 2*hi … … 426 423 !----------------------------------------------------------------- 427 424 428 aksum(:,:) = athorn(:,:,0) 425 aksum(:,:) = apartf(:,:,0) 426 zdummy = 1._wp / hi_hrft 429 427 ! Transfer function 430 428 DO jl = 1, jpl !all categories have a specific transfer function 431 429 DO jj = 1, jpj 432 430 DO ji = 1, jpi 433 IF ( a thorn(ji,jj,jl) > 0._wp ) THEN434 zhmean = MAX( SQRT( rn_hstar * ht_i(ji,jj,jl) ), ht_i(ji,jj,jl) * krdgmin )435 hrmin (ji,jj,jl) = MIN( 2._wp * ht_i(ji,jj,jl), 0.5_wp * ( zhmean + ht_i(ji,jj,jl) ) )436 hrmax (ji,jj,jl) = 2._wp * zhmean - hrmin(ji,jj,jl)437 hraft (ji,jj,jl) = ht_i(ji,jj,jl) / kraft438 krdg(ji,jj,jl) = ht_i(ji,jj,jl) / MAX( zhmean, epsi20 )431 IF ( apartf(ji,jj,jl) > 0._wp ) THEN 432 zhmean = MAX( SQRT( rn_hstar * ht_i(ji,jj,jl) ), ht_i(ji,jj,jl) * hrdg_hi_min ) 433 hrmin (ji,jj,jl) = MIN( 2._wp * ht_i(ji,jj,jl), 0.5_wp * ( zhmean + ht_i(ji,jj,jl) ) ) 434 hrmax (ji,jj,jl) = 2._wp * zhmean - hrmin(ji,jj,jl) 435 hraft (ji,jj,jl) = ht_i(ji,jj,jl) * zdummy 436 hi_hrdg(ji,jj,jl) = ht_i(ji,jj,jl) / MAX( zhmean, epsi20 ) 439 437 ! 440 438 ! Normalization factor : aksum, ensures mass conservation 441 aksum(ji,jj) = aksum(ji,jj) + aridge(ji,jj,jl) * ( 1._wp - krdg(ji,jj,jl) ) &442 & + araft (ji,jj,jl) * ( 1._wp - kraft)439 aksum(ji,jj) = aksum(ji,jj) + aridge(ji,jj,jl) * ( 1._wp - hi_hrdg(ji,jj,jl) ) & 440 & + araft (ji,jj,jl) * ( 1._wp - hi_hrft ) 443 441 ELSE 444 hrmin (ji,jj,jl)= 0._wp445 hrmax (ji,jj,jl)= 0._wp446 hraft (ji,jj,jl)= 0._wp447 krdg (ji,jj,jl)= 1._wp442 hrmin (ji,jj,jl) = 0._wp 443 hrmax (ji,jj,jl) = 0._wp 444 hraft (ji,jj,jl) = 0._wp 445 hi_hrdg(ji,jj,jl) = 1._wp 448 446 ENDIF 449 447 END DO … … 451 449 END DO 452 450 ! 453 END SUBROUTINE ice_rdgrft_prep454 455 456 SUBROUTINE ice_rdgrft_ridgeshift( opning, closing_gross )451 END SUBROUTINE rdgrft_prep 452 453 454 SUBROUTINE rdgrft_shift( opning, closing_gross ) 457 455 !!---------------------------------------------------------------------- 458 !! *** ROUTINE ice_rdgrft_strength***456 !! *** ROUTINE rdgrft_shift *** 459 457 !! 460 458 !! ** Purpose : shift ridging ice among thickness categories of ice thickness … … 463 461 !! and add to thicker ice categories. 464 462 !!---------------------------------------------------------------------- 465 REAL(wp), DIMENSION(jpi,jpj), INTENT(in 466 REAL(wp), DIMENSION(jpi,jpj), INTENT(in 467 ! 468 INTEGER :: ji, jj, jl, jl1, jl2, jk ! dummy loop indices469 INTEGER :: ij! horizontal index, combines i and j loops470 INTEGER :: icells! number of cells with a_i > puny471 REAL(wp) :: hL, hR, farea ! left and right limits of integration and new area going to jl2472 473 INTEGER , DIMENSION(jpij) :: indxi, indxj ! compressed indices474 REAL(wp), DIMENSION(jpij) :: zswitch, fvol ! new ridge volume going to jl2463 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: opning ! rate of opening due to divergence/shear 464 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: closing_gross ! rate at which area retreats, excluding area of new ridges 465 ! 466 INTEGER :: ji, jj, jl, jl1, jl2, jk ! dummy loop indices 467 INTEGER :: ij ! horizontal index, combines i and j loops 468 INTEGER :: icells ! number of cells with a_i > puny 469 REAL(wp) :: hL, hR, farea ! left and right limits of integration and new area going to jl2 470 471 INTEGER , DIMENSION(jpij) :: indxi, indxj ! compressed indices 472 REAL(wp), DIMENSION(jpij) :: zswitch, fvol ! new ridge volume going to jl2 475 473 476 474 REAL(wp), DIMENSION(jpij) :: afrac ! fraction of category area ridged … … 482 480 REAL(wp), DIMENSION(jpij) :: aprdg2 ! pond area of ridging ice 483 481 ! END MV MP 2016 484 REAL(wp), DIMENSION(jpij) :: dhr , dhr2! hrmax - hrmin & hrmax^2 - hrmin^2485 486 REAL(wp), DIMENSION(jpij) :: vrdg1 ! volume of ice ridged487 REAL(wp), DIMENSION(jpij) :: vrdg2 ! volume of new ridges488 REAL(wp), DIMENSION(jpij) :: vsw ! volume of seawater trapped into ridges489 REAL(wp), DIMENSION(jpij) :: srdg1 ! sal*volume of ice ridged490 REAL(wp), DIMENSION(jpij) :: srdg2 ! sal*volume of new ridges491 REAL(wp), DIMENSION(jpij) :: smsw ! sal*volume of water trapped into ridges482 REAL(wp), DIMENSION(jpij) :: dhr, dhr2 ! hrmax - hrmin & hrmax^2 - hrmin^2 483 484 REAL(wp), DIMENSION(jpij) :: vrdg1 ! volume of ice ridged 485 REAL(wp), DIMENSION(jpij) :: vrdg2 ! volume of new ridges 486 REAL(wp), DIMENSION(jpij) :: vsw ! volume of seawater trapped into ridges 487 REAL(wp), DIMENSION(jpij) :: srdg1 ! sal*volume of ice ridged 488 REAL(wp), DIMENSION(jpij) :: srdg2 ! sal*volume of new ridges 489 REAL(wp), DIMENSION(jpij) :: smsw ! sal*volume of water trapped into ridges 492 490 REAL(wp), DIMENSION(jpij) :: oirdg1, oirdg2 ! ice age of ice ridged 493 491 … … 503 501 REAL(wp), DIMENSION(jpij) :: oirft1, oirft2 ! ice age of ice rafted 504 502 505 REAL(wp), DIMENSION(jpij,nlay_i) :: eirft 506 REAL(wp), DIMENSION(jpij,nlay_i) :: erdg1 507 REAL(wp), DIMENSION(jpij,nlay_i) :: erdg2 508 REAL(wp), DIMENSION(jpij,nlay_i) :: ersw 503 REAL(wp), DIMENSION(jpij,nlay_i) :: eirft ! ice energy of rafting ice 504 REAL(wp), DIMENSION(jpij,nlay_i) :: erdg1 ! enth*volume of ice ridged 505 REAL(wp), DIMENSION(jpij,nlay_i) :: erdg2 ! enth*volume of new ridges 506 REAL(wp), DIMENSION(jpij,nlay_i) :: ersw ! enth of water trapped into ridges 509 507 !!---------------------------------------------------------------------- 510 508 … … 515 513 DO ji = 1, jpi 516 514 ato_i(ji,jj) = MAX( 0._wp, ato_i(ji,jj) + & 517 & ( opning(ji,jj) - a thorn(ji,jj,0) * closing_gross(ji,jj) ) * rdt_ice )515 & ( opning(ji,jj) - apartf(ji,jj,0) * closing_gross(ji,jj) ) * rdt_ice ) 518 516 END DO 519 517 END DO 520 518 521 519 !----------------------------------------------------------------- 522 ! 3) Pump everything from ice which is being ridged / rafted520 ! 2) Pump everything from ice which is being ridged / rafted 523 521 !----------------------------------------------------------------- 524 522 ! Compute the area, volume, and energy of ice ridging in each … … 528 526 529 527 !------------------------------------------------ 530 ! 3.1) Identify grid cells with nonzero ridging528 ! 2.1) Identify grid cells with nonzero ridging 531 529 !------------------------------------------------ 532 530 icells = 0 533 531 DO jj = 1, jpj 534 532 DO ji = 1, jpi 535 IF( a thorn(ji,jj,jl1) > 0._wp .AND. closing_gross(ji,jj) > 0._wp ) THEN533 IF( apartf(ji,jj,jl1) > 0._wp .AND. closing_gross(ji,jj) > 0._wp ) THEN 536 534 icells = icells + 1 537 535 indxi(icells) = ji … … 545 543 546 544 !-------------------------------------------------------------------- 547 ! 3.2) Compute area of ridging ice (ardg1) and of new ridge (ardg2)545 ! 2.2) Compute area of ridging ice (ardg1) and of new ridge (ardg2) 548 546 !-------------------------------------------------------------------- 549 547 ardg1(ij) = aridge(ji,jj,jl1) * closing_gross(ji,jj) * rdt_ice … … 551 549 552 550 !--------------------------------------------------------------- 553 ! 3.3) Compute ridging /rafting fractions, make sure afrac <=1551 ! 2.3) Compute ridging /rafting fractions, make sure afrac <=1 554 552 !--------------------------------------------------------------- 555 553 afrac(ij) = ardg1(ij) / a_i(ji,jj,jl1) !ridging 556 554 afrft(ij) = arft1(ij) / a_i(ji,jj,jl1) !rafting 557 ardg2(ij) = ardg1(ij) * krdg(ji,jj,jl1)558 arft2(ij) = arft1(ij) * kraft555 ardg2(ij) = ardg1(ij) * hi_hrdg(ji,jj,jl1) 556 arft2(ij) = arft1(ij) * hi_hrft 559 557 560 558 !-------------------------------------------------------------------------- 561 ! 3.4) Substract area, volume, and energy from ridging559 ! 2.4) Substract area, volume, and energy from ridging 562 560 ! / rafting category n1. 563 561 !-------------------------------------------------------------------------- … … 571 569 IF ( nn_pnd_scheme > 0 ) THEN 572 570 aprdg1(ij) = a_ip(ji,jj, jl1) * afrac(ij) 573 aprdg2(ij) = a_ip(ji,jj, jl1) * afrac(ij) * krdg(ji,jj,jl1)571 aprdg2(ij) = a_ip(ji,jj, jl1) * afrac(ij) * hi_hrdg(ji,jj,jl1) 574 572 vprdg(ij) = v_ip(ji,jj, jl1) * afrac(ij) 575 573 ENDIF … … 577 575 srdg1 (ij) = smv_i(ji,jj, jl1) * afrac(ij) 578 576 oirdg1(ij) = oa_i (ji,jj, jl1) * afrac(ij) 579 oirdg2(ij) = oa_i (ji,jj, jl1) * afrac(ij) * krdg(ji,jj,jl1)577 oirdg2(ij) = oa_i (ji,jj, jl1) * afrac(ij) * hi_hrdg(ji,jj,jl1) 580 578 581 579 ! rafting volumes, heat contents ... … … 585 583 IF ( nn_pnd_scheme > 0 ) THEN 586 584 aprft1(ij) = a_ip (ji,jj, jl1) * afrft(ij) 587 aprft2(ij) = a_ip (ji,jj, jl1) * afrft(ij) * kraft585 aprft2(ij) = a_ip (ji,jj, jl1) * afrft(ij) * hi_hrft 588 586 vprft(ij) = v_ip(ji,jj,jl1) * afrft(ij) 589 587 ENDIF … … 593 591 smrft (ij) = smv_i(ji,jj, jl1) * afrft(ij) 594 592 oirft1(ij) = oa_i (ji,jj, jl1) * afrft(ij) 595 oirft2(ij) = oa_i (ji,jj, jl1) * afrft(ij) * kraft593 oirft2(ij) = oa_i (ji,jj, jl1) * afrft(ij) * hi_hrft 596 594 597 595 !----------------------------------------------------------------- 598 ! 3.5) Compute properties of new ridges596 ! 2.5) Compute properties of new ridges 599 597 !----------------------------------------------------------------- 600 598 smsw(ij) = vsw(ij) * sss_m(ji,jj) ! salt content of seawater frozen in voids … … 612 610 613 611 !------------------------------------------ 614 ! 3.7Put the snow somewhere in the ocean612 ! 2.6 Put the snow somewhere in the ocean 615 613 !------------------------------------------ 616 614 ! Place part of the snow lost by ridging into the ocean. … … 627 625 ! MV MP 2016 628 626 !------------------------------------------ 629 ! 3.XPut the melt pond water in the ocean627 ! 2.7 Put the melt pond water in the ocean 630 628 !------------------------------------------ 631 629 ! Place part of the melt pond volume into the ocean. … … 637 635 638 636 !----------------------------------------------------------------- 639 ! 3.8 Compute quantities used to apportion ice among categories637 ! 2.8 Compute quantities used to apportion ice among categories 640 638 ! in the n2 loop below 641 639 !----------------------------------------------------------------- … … 662 660 663 661 !-------------------------------------------------------------------- 664 ! 3.9 Compute ridging ice enthalpy, remove it from ridging ice and662 ! 2.9 Compute ridging ice enthalpy, remove it from ridging ice and 665 663 ! compute ridged ice enthalpy 666 664 !-------------------------------------------------------------------- … … 689 687 690 688 !------------------------------------------------------------------------------- 691 ! 4) Add area, volume, and energy of new ridge to each category jl2689 ! 3) Add area, volume, and energy of new ridge to each category jl2 692 690 !------------------------------------------------------------------------------- 693 691 DO jl2 = 1, jpl … … 710 708 !!gm see above IF( hraft(ji,jj,jl1) <= hi_max(jl2) .AND. hraft(ji,jj,jl1) > hi_max(jl2-1) ) THEN 711 709 IF( hi_max(jl2-1) < hraft(ji,jj,jl1) .AND. hraft(ji,jj,jl1) <= hi_max(jl2) ) THEN ; zswitch(ij) = 1._wp 712 ELSE ; zswitch(ij) = 0._wp 710 ELSE ; zswitch(ij) = 0._wp 713 711 ENDIF 714 712 ! … … 743 741 END DO ! jl1 (deforming categories) 744 742 ! 745 END SUBROUTINE ice_rdgrft_ridgeshift746 747 748 SUBROUTINE ice_ rdgrft_strength743 END SUBROUTINE rdgrft_shift 744 745 746 SUBROUTINE ice_strength 749 747 !!---------------------------------------------------------------------- 750 !! *** ROUTINE ice_ rdgrft_strength ***748 !! *** ROUTINE ice_strength *** 751 749 !! 752 750 !! ** Purpose : computes ice strength used in dynamics routines of ice thickness … … 767 765 768 766 ! !--------------------------------------------------! 769 CALL ice_rdgrft_prep! Thickness distribution of ridging and ridged ice !767 CALL rdgrft_prep ! Thickness distribution of ridging and ridged ice ! 770 768 ! !--------------------------------------------------! 771 769 … … 775 773 z1_3 = 1._wp / 3._wp 776 774 DO jl = 1, jpl 777 WHERE( a thorn(:,:,jl) > 0._wp )778 strength(:,:) = - a thorn(:,:,jl) * ht_i(:,:,jl) * ht_i(:,:,jl) & ! PE loss from deforming ice779 & + 2._wp * araft (:,:,jl) * ht_i (:,:,jl) * ht_i(:,:,jl) & ! PE gain from rafting ice780 & + aridge(:,:,jl) * krdg(:,:,jl) * z1_3 * &! PE gain from ridging ice781 & ( hrmax(:,:,jl) * hrmax (:,:,jl) +&782 & hrmin(:,:,jl) * hrmin (:,:,jl) +&783 & hrmax(:,:,jl) * hrmin (:,:,jl) )775 WHERE( apartf(:,:,jl) > 0._wp ) 776 strength(:,:) = - apartf(:,:,jl) * ht_i (:,:,jl) * ht_i(:,:,jl) & ! PE loss from deforming ice 777 & + 2._wp * araft (:,:,jl) * ht_i (:,:,jl) * ht_i(:,:,jl) & ! PE gain from rafting ice 778 & + aridge(:,:,jl) * hi_hrdg(:,:,jl) * z1_3 * & ! PE gain from ridging ice 779 & ( hrmax(:,:,jl) * hrmax (:,:,jl) + & 780 & hrmin(:,:,jl) * hrmin (:,:,jl) + & 781 & hrmax(:,:,jl) * hrmin (:,:,jl) ) 784 782 ELSEWHERE 785 783 strength(:,:) = 0._wp … … 844 842 END SELECT 845 843 ! 846 END SUBROUTINE ice_ rdgrft_strength844 END SUBROUTINE ice_strength 847 845 848 846 … … 854 852 !! to the mechanical ice redistribution 855 853 !! 856 !! ** Method : Read the nam ice_rdgrft namelist854 !! ** Method : Read the namdyn_rdgrft namelist 857 855 !! and check the parameters values 858 856 !! called at the first timestep (nit000) 859 857 !! 860 !! ** input : Namelist nam ice_rdgrft858 !! ** input : Namelist namdyn_rdgrft 861 859 !!------------------------------------------------------------------- 862 860 INTEGER :: ios ! Local integer output status for namelist read 863 861 !! 864 NAMELIST/nam ice_rdgrft/ ln_str_H79, rn_pstar, rn_crhg, &862 NAMELIST/namdyn_rdgrft/ ln_str_H79, rn_pstar, rn_crhg, & 865 863 & ln_str_R75, rn_perdg, & 866 864 & rn_csrdg , & … … 872 870 ! 873 871 REWIND( numnam_ice_ref ) ! Namelist namicetdme in reference namelist : Ice mechanical ice redistribution 874 READ ( numnam_ice_ref, nam ice_rdgrft, IOSTAT = ios, ERR = 901)875 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_rdgrft in reference namelist', lwp )876 ! 877 REWIND( numnam_ice_cfg ) ! Namelist nam ice_rdgrft in configuration namelist : Ice mechanical ice redistribution878 READ ( numnam_ice_cfg, nam ice_rdgrft, IOSTAT = ios, ERR = 902 )879 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_rdgrft in configuration namelist', lwp )880 IF(lwm) WRITE ( numoni, nam ice_rdgrft )872 READ ( numnam_ice_ref, namdyn_rdgrft, IOSTAT = ios, ERR = 901) 873 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_rdgrft in reference namelist', lwp ) 874 ! 875 REWIND( numnam_ice_cfg ) ! Namelist namdyn_rdgrft in configuration namelist : Ice mechanical ice redistribution 876 READ ( numnam_ice_cfg, namdyn_rdgrft, IOSTAT = ios, ERR = 902 ) 877 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_rdgrft in configuration namelist', lwp ) 878 IF(lwm) WRITE ( numoni, namdyn_rdgrft ) 881 879 ! 882 880 IF (lwp) THEN ! control print … … 884 882 WRITE(numout,*) 'ice_rdgrft_init: ice parameters for ridging/rafting ' 885 883 WRITE(numout,*) '~~~~~~~~~~~~~~~' 886 WRITE(numout,*) ' Namelist nam ice_rdgrft'884 WRITE(numout,*) ' Namelist namdyn_rdgrft:' 887 885 WRITE(numout,*) ' ice strength parameterization Hibler (1979) ln_str_H79 = ', ln_str_H79 888 886 WRITE(numout,*) ' 1st bulk-rheology parameter rn_pstar = ', rn_pstar … … 915 913 ENDIF 916 914 ! ! allocate tke arrays 917 IF( ice_rdgrft_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'ice_rdgrft_init 915 IF( ice_rdgrft_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'ice_rdgrft_init: unable to allocate arrays' ) 918 916 ! 919 917 END SUBROUTINE ice_rdgrft_init -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerhg.F90
r8518 r8531 101 101 !! dynamics 102 102 !! 103 !! ** Method : Read the nam ice_rhg namelist and check the ice-dynamic103 !! ** Method : Read the namdyn_rhg namelist and check the ice-dynamic 104 104 !! parameter values called at the first timestep (nit000) 105 105 !! 106 !! ** input : Namelist nam ice_rhg106 !! ** input : Namelist namdyn_rhg 107 107 !!------------------------------------------------------------------- 108 108 INTEGER :: ios, ioptio ! Local integer output status for namelist read 109 109 !! 110 NAMELIST/nam ice_rhg/ ln_rhg_EVP, rn_creepl, rn_ecc , nn_nevp, rn_relast110 NAMELIST/namdyn_rhg/ ln_rhg_EVP, rn_creepl, rn_ecc , nn_nevp, rn_relast 111 111 !!------------------------------------------------------------------- 112 112 ! 113 REWIND( numnam_ice_ref ) ! Namelist nam ice_rhg in reference namelist : Ice dynamics114 READ ( numnam_ice_ref, nam ice_rhg, IOSTAT = ios, ERR = 901)115 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_rhg in reference namelist', lwp )113 REWIND( numnam_ice_ref ) ! Namelist namdyn_rhg in reference namelist : Ice dynamics 114 READ ( numnam_ice_ref, namdyn_rhg, IOSTAT = ios, ERR = 901) 115 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_rhg in reference namelist', lwp ) 116 116 ! 117 REWIND( numnam_ice_cfg ) ! Namelist nam ice_rhg in configuration namelist : Ice dynamics118 READ ( numnam_ice_cfg, nam ice_rhg, IOSTAT = ios, ERR = 902 )119 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_rhg in configuration namelist', lwp )120 IF(lwm) WRITE ( numoni, nam ice_rhg )117 REWIND( numnam_ice_cfg ) ! Namelist namdyn_rhg in configuration namelist : Ice dynamics 118 READ ( numnam_ice_cfg, namdyn_rhg, IOSTAT = ios, ERR = 902 ) 119 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_rhg in configuration namelist', lwp ) 120 IF(lwm) WRITE ( numoni, namdyn_rhg ) 121 121 ! 122 122 IF(lwp) THEN ! control print … … 124 124 WRITE(numout,*) 'ice_rhg_init: ice parameters for ice dynamics ' 125 125 WRITE(numout,*) '~~~~~~~~~~~~' 126 WRITE(numout,*) ' Namelist nam ice_rhg'127 WRITE(numout,*) ' rheology EVP (icerhg_evp) ln_rhg_EVP= ', ln_rhg_EVP128 WRITE(numout,*) ' creep limit rn_creepl= ', rn_creepl129 WRITE(numout,*) ' eccentricity of the elliptical yield curve rn_ecc= ', rn_ecc130 WRITE(numout,*) ' number of iterations for subcycling nn_nevp= ', nn_nevp131 WRITE(numout,*) ' ratio of elastic timescale over ice time step rn_relast= ', rn_relast126 WRITE(numout,*) ' Namelist namdyn_rhg:' 127 WRITE(numout,*) ' rheology EVP (icerhg_evp) ln_rhg_EVP = ', ln_rhg_EVP 128 WRITE(numout,*) ' creep limit rn_creepl = ', rn_creepl 129 WRITE(numout,*) ' eccentricity of the elliptical yield curve rn_ecc = ', rn_ecc 130 WRITE(numout,*) ' number of iterations for subcycling nn_nevp = ', nn_nevp 131 WRITE(numout,*) ' ratio of elastic timescale over ice time step rn_relast = ', rn_relast 132 132 ENDIF 133 133 ! -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerhg_evp.F90
r8518 r8531 253 253 254 254 ! Ice strength 255 CALL ice_ rdgrft_strength255 CALL ice_strength 256 256 257 257 ! scale factors -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90
r8518 r8531 142 142 ! --- ice dynamics and advection --- ! 143 143 !-------------------------------------! 144 CALL ice_diag0 ! set diag of mass, heat and salt fluxes to 0144 CALL diag_set0 ! set diag of mass, heat and salt fluxes to 0 145 145 CALL ice_rst_opn( kt ) ! Open Ice restart file (if necessary) 146 146 ! … … 243 243 IF(lwm) CALL ctl_opn( numoni, 'output.namelist.ice', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, 1 ) 244 244 ! 245 CALL ice_run_init ! set some ice run parameters245 CALL par_init ! set some ice run parameters 246 246 ! 247 247 ! ! Allocate the ice arrays (sbc_ice already allocated in sbc_init) … … 268 268 CALL ice_var_glo2eqv 269 269 ! 270 CALL ice_forcing_init ! set ice-ocean and ice-atm. coupling parameters 271 ! 270 272 IF( ln_icedyn ) THEN 271 273 CALL ice_dyn_init ! set ice dynamics parameters 272 CALL ice_rdgrft_init ! set ice ridging/rafting parameters273 CALL ice_rhg_init ! set ice rheology parameters274 CALL ice_adv_init ! set ice advection parameters275 274 ENDIF 276 275 ! 277 276 IF( ln_icethd ) THEN 278 277 CALL ice_thd_init ! set ice thermodynics parameters 279 CALL ice_thd_sal_init ! set ice salinity parameters280 278 ENDIF 281 279 ! … … 299 297 300 298 301 SUBROUTINE ice_run_init299 SUBROUTINE par_init 302 300 !!------------------------------------------------------------------- 303 !! *** ROUTINE ice_run_init ***301 !! *** ROUTINE par_init *** 304 302 !! 305 303 !! ** Purpose : Definition some run parameter for ice model 306 304 !! 307 !! ** Method : Read the nam ice_runnamelist and check the parameter305 !! ** Method : Read the nampar namelist and check the parameter 308 306 !! values called at the first timestep (nit000) 309 307 !! 310 !! ** input : Namelist nam ice_run308 !! ** input : Namelist nampar 311 309 !!------------------------------------------------------------------- 312 310 INTEGER :: ios ! Local integer output status for namelist read 313 NAMELIST/nam ice_run/ jpl, nlay_i, nlay_s, nn_monocat, ln_icedyn, ln_icethd, rn_amax_n, rn_amax_s, &314 & 311 NAMELIST/nampar/ jpl, nlay_i, nlay_s, nn_monocat, ln_icedyn, ln_icethd, rn_amax_n, rn_amax_s, & 312 & cn_icerst_in, cn_icerst_indir, cn_icerst_out, cn_icerst_outdir 315 313 !!------------------------------------------------------------------- 316 314 ! 317 REWIND( numnam_ice_ref ) ! Namelist nam ice_runin reference namelist : Parameters for ice318 READ ( numnam_ice_ref, nam ice_run, IOSTAT = ios, ERR = 901)319 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_runin reference namelist', lwp )320 321 REWIND( numnam_ice_cfg ) ! Namelist nam ice_runin configuration namelist : Parameters for ice322 READ ( numnam_ice_cfg, nam ice_run, IOSTAT = ios, ERR = 902 )323 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_runin configuration namelist', lwp )324 IF(lwm) WRITE ( numoni, nam ice_run)315 REWIND( numnam_ice_ref ) ! Namelist nampar in reference namelist : Parameters for ice 316 READ ( numnam_ice_ref, nampar, IOSTAT = ios, ERR = 901) 317 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampar in reference namelist', lwp ) 318 319 REWIND( numnam_ice_cfg ) ! Namelist nampar in configuration namelist : Parameters for ice 320 READ ( numnam_ice_cfg, nampar, IOSTAT = ios, ERR = 902 ) 321 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampar in configuration namelist', lwp ) 322 IF(lwm) WRITE ( numoni, nampar ) 325 323 ! 326 324 IF(lwp) THEN ! control print 327 325 WRITE(numout,*) 328 WRITE(numout,*) ' ice_run_init : ice share parameters for dynamics/advection/thermo of sea-ice'329 WRITE(numout,*) ' ~~~~~~ '330 WRITE(numout,*) ' Namelist nam ice_run: '326 WRITE(numout,*) 'par_init: ice parameters shared among all the routines' 327 WRITE(numout,*) ' ~~~~~~~' 328 WRITE(numout,*) ' Namelist nampar: ' 331 329 WRITE(numout,*) ' number of ice categories jpl = ', jpl 332 330 WRITE(numout,*) ' number of ice layers nlay_i = ', nlay_i 333 331 WRITE(numout,*) ' number of snow layers nlay_s = ', nlay_s 334 332 WRITE(numout,*) ' virtual ITD mono-category param (1-4) or not (0) nn_monocat = ', nn_monocat 335 WRITE(numout,*) ' Ice dynamics (T) or not (F) ln_icedyn= ', ln_icedyn336 WRITE(numout,*) ' Ice thermodynamics (T) or not (F) ln_icethd= ', ln_icethd333 WRITE(numout,*) ' Ice dynamics (T) or not (F) ln_icedyn = ', ln_icedyn 334 WRITE(numout,*) ' Ice thermodynamics (T) or not (F) ln_icethd = ', ln_icethd 337 335 WRITE(numout,*) ' maximum ice concentration for NH = ', rn_amax_n 338 336 WRITE(numout,*) ' maximum ice concentration for SH = ', rn_amax_s … … 346 344 ENDIF 347 345 IF ( jpl == 1 .AND. nn_monocat == 0 ) THEN 348 CALL ctl_stop( 'STOP', ' ice_run_init : if jpl=1 then nn_monocat should be between 1 and 4' )346 CALL ctl_stop( 'STOP', 'par_init : if jpl=1 then nn_monocat should be between 1 and 4' ) 349 347 ENDIF 350 348 ! 351 IF( ln_bdy .AND. ln_icediachk ) CALL ctl_warn(' ice_run_init: online conservation check does not work with BDY')349 IF( ln_bdy .AND. ln_icediachk ) CALL ctl_warn('par_init: online conservation check does not work with BDY') 352 350 ! 353 351 rdt_ice = REAL(nn_fsbc) * rdt !--- sea-ice timestep and inverse … … 358 356 r1_nlay_s = 1._wp / REAL( nlay_s, wp ) 359 357 ! 360 END SUBROUTINE ice_run_init358 END SUBROUTINE par_init 361 359 362 360 … … 393 391 394 392 395 SUBROUTINE ice_diag0396 !!---------------------------------------------------------------------- 397 !! *** ROUTINE ice_diag0 ***393 SUBROUTINE diag_set0 394 !!---------------------------------------------------------------------- 395 !! *** ROUTINE diag_set0 *** 398 396 !! 399 397 !! ** purpose : set ice-ocean and ice-atm. fluxes to zeros at the beggining … … 442 440 tau_icebfr(:,:) = 0._wp; ! landfast ice param only (clem: important to keep the init here) 443 441 444 END SUBROUTINE ice_diag0442 END SUBROUTINE diag_set0 445 443 446 444 #else -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90
r8522 r8531 28 28 & fr1_i0, fr2_i0 29 29 USE ice1D ! thermodynamic sea-ice variables 30 USE icethd_ dif ! vertical diffusion30 USE icethd_zdf ! vertical diffusion 31 31 USE icethd_dh ! ice-snow growth and melt 32 32 USE icethd_da ! lateral melting 33 33 USE icethd_sal ! ice salinity 34 34 USE icethd_ent ! ice enthalpy redistribution 35 USE icethd_ lac! lateral accretion35 USE icethd_do ! lateral accretion 36 36 USE iceitd ! remapping thickness distribution 37 37 USE icetab ! 1D <==> 2D transformation … … 51 51 PUBLIC ice_thd_init ! called by ice_init 52 52 53 !!** namelist (namthd) ** 54 LOGICAL :: ln_icedH ! activate ice thickness change from growing/melting (T) or not (F) 55 LOGICAL :: ln_icedA ! activate lateral melting param. (T) or not (F) 56 LOGICAL :: ln_icedO ! activate ice growth in open-water (T) or not (F) 57 LOGICAL :: ln_icedS ! activate gravity drainage and flushing (T) or not (F) 58 53 59 !! * Substitutions 54 60 # include "vectopt_loop_substitute.h90" … … 70 76 !! at the ice base, snow acc.,heat budget of the leads) 71 77 !! - selection of the icy points and put them in an array 72 !! - call ice_thd_ dif for vertical heat diffusion78 !! - call ice_thd_zdf for vertical heat diffusion 73 79 !! - call ice_thd_dh for vertical ice growth and melt 74 80 !! - call ice_thd_ent for enthalpy remapping 75 81 !! - call ice_thd_sal for ice desalination 76 82 !! - call ice_thd_temp to retrieve temperature from ice enthalpy 83 !! - call ice_thd_lam for extra lateral ice melt if monocat 84 !! - call ice_thd_da for lateral ice melt 77 85 !! - back to the geographic grid 78 86 !!--------------------------------------------------------------------- … … 223 231 ! 224 232 IF( ln_icedH ) THEN ! --- growing/melting --- ! 225 CALL ice_thd_ dif ! Ice/Snow Temperature profile233 CALL ice_thd_zdf ! Ice/Snow Temperature profile 226 234 CALL ice_thd_dh ! Ice/Snow thickness 227 235 CALL ice_thd_ent( e_i_1d(1:nidx,:) ) ! Ice enthalpy remapping 228 236 ENDIF 229 237 ! 230 CALL ice_thd_sal 238 CALL ice_thd_sal( ln_icedS ) ! --- Ice salinity --- ! 231 239 ! 232 240 CALL ice_thd_temp ! --- temperature update --- ! … … 261 269 IF( jpl > 1 ) CALL ice_itd_rem( kt ) ! --- Transport ice between thickness categories --- ! 262 270 ! 263 IF( ln_icedO ) CALL ice_thd_ lac! --- frazil ice growing in leads --- !271 IF( ln_icedO ) CALL ice_thd_do ! --- frazil ice growing in leads --- ! 264 272 ! 265 273 ! controls … … 523 531 !! *** ROUTINE ice_thd_init *** 524 532 !! 525 !! ** Purpose : Physical constants and parameters linked to the ice526 !! thermodynamics533 !! ** Purpose : Physical constants and parameters associated with 534 !! ice thermodynamics 527 535 !! 528 !! ** Method : Read the nam ice_thd namelist and check the ice-thermo529 !! parameter valuescalled at the first timestep (nit000)536 !! ** Method : Read the namthd namelist and check the parameters 537 !! called at the first timestep (nit000) 530 538 !! 531 !! ** input : Namelist nam icether539 !! ** input : Namelist namthd 532 540 !!------------------------------------------------------------------- 533 541 INTEGER :: ios ! Local integer output status for namelist read 534 542 !! 535 NAMELIST/namice_thd/ rn_kappa_i, ln_cndi_U64, ln_cndi_P07, ln_dqns_i, rn_cnd_s, & 536 & ln_icedH, rn_blow_s, & 537 & ln_icedA, rn_beta, rn_dmin, & 538 & ln_icedO, rn_hinew, ln_frazil, rn_maxfraz, rn_vfraz, rn_Cfraz, & 539 & nn_iceflx 543 NAMELIST/namthd/ ln_icedH, ln_icedA, ln_icedO, ln_icedS 540 544 !!------------------------------------------------------------------- 541 545 ! 542 REWIND( numnam_ice_ref ) ! Namelist nam ice_thd in reference namelist : Ice thermodynamics543 READ ( numnam_ice_ref, nam ice_thd, IOSTAT = ios, ERR = 901)544 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_thd in reference namelist', lwp )545 546 REWIND( numnam_ice_cfg ) ! Namelist nam ice_thd in configuration namelist : Ice thermodynamics547 READ ( numnam_ice_cfg, nam ice_thd, IOSTAT = ios, ERR = 902 )548 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_thd in configuration namelist', lwp )549 IF(lwm) WRITE ( numoni, nam ice_thd )546 REWIND( numnam_ice_ref ) ! Namelist namthd in reference namelist : Ice thermodynamics 547 READ ( numnam_ice_ref, namthd, IOSTAT = ios, ERR = 901) 548 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd in reference namelist', lwp ) 549 550 REWIND( numnam_ice_cfg ) ! Namelist namthd in configuration namelist : Ice thermodynamics 551 READ ( numnam_ice_cfg, namthd, IOSTAT = ios, ERR = 902 ) 552 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd in configuration namelist', lwp ) 553 IF(lwm) WRITE ( numoni, namthd ) 550 554 ! 551 555 ! 552 556 IF(lwp) THEN ! control print 553 WRITE(numout,*) 'ice_thd_init : Ice Thermodynamics' 554 WRITE(numout,*) '~~~~~~~~~~~~~' 555 WRITE(numout,*) ' Namelist namice_thd' 556 WRITE(numout,*) ' -- icethd_dif --' 557 WRITE(numout,*) ' extinction radiation parameter in sea ice rn_kappa_i = ', rn_kappa_i 558 WRITE(numout,*) ' thermal conductivity in the ice (Untersteiner 1964) ln_cndi_U64 = ', ln_cndi_U64 559 WRITE(numout,*) ' thermal conductivity in the ice (Pringle et al 2007) ln_cndi_P07 = ', ln_cndi_P07 560 WRITE(numout,*) ' change the surface non-solar flux with Tsu or not ln_dqns_i = ', ln_dqns_i 561 WRITE(numout,*) ' thermal conductivity of the snow rn_cnd_s = ', rn_cnd_s 562 WRITE(numout,*) ' -- icethd_dh --' 563 WRITE(numout,*) ' activate ice thick change from top/bot (T) or not (F) ln_icedH = ', ln_icedH 564 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_blow_s = ', rn_blow_s 565 WRITE(numout,*) ' -- icethd_da --' 566 WRITE(numout,*) ' activate lateral melting (T) or not (F) ln_icedA = ', ln_icedA 567 WRITE(numout,*) ' Coef. beta for lateral melting param. rn_beta = ', rn_beta 568 WRITE(numout,*) ' Minimum floe diameter for lateral melting param. rn_dmin = ', rn_dmin 569 WRITE(numout,*) ' -- icethd_lac --' 570 WRITE(numout,*) ' activate ice growth in open-water (T) or not (F) ln_icedO = ', ln_icedO 571 WRITE(numout,*) ' ice thickness for lateral accretion rn_hinew = ', rn_hinew 572 WRITE(numout,*) ' Frazil ice thickness as a function of wind or not ln_frazil = ', ln_frazil 573 WRITE(numout,*) ' Maximum proportion of frazil ice collecting at bottom rn_maxfraz = ', rn_maxfraz 574 WRITE(numout,*) ' Threshold relative drift speed for collection of frazil rn_vfraz = ', rn_vfraz 575 WRITE(numout,*) ' Squeezing coefficient for collection of frazil rn_Cfraz = ', rn_Cfraz 576 WRITE(numout,*) ' -- icestp --' 577 WRITE(numout,*) ' Multicategory heat flux formulation nn_iceflx = ', nn_iceflx 557 WRITE(numout,*) 'ice_thd_init: Ice Thermodynamics' 558 WRITE(numout,*) '~~~~~~~~~~~~' 559 WRITE(numout,*) ' Namelist namthd:' 560 WRITE(numout,*) ' activate ice thick change from top/bot (T) or not (F) ln_icedH = ', ln_icedH 561 WRITE(numout,*) ' activate lateral melting (T) or not (F) ln_icedA = ', ln_icedA 562 WRITE(numout,*) ' activate ice growth in open-water (T) or not (F) ln_icedO = ', ln_icedO 563 WRITE(numout,*) ' activate gravity drainage and flushing (T) or not (F) ln_icedS = ', ln_icedS 564 ENDIF 565 ! 566 CALL ice_thd_zdf_init ! set ice heat diffusion parameters 567 IF( ln_icedA ) CALL ice_thd_da_init ! set ice lateral melting parameters 568 IF( ln_icedO ) CALL ice_thd_do_init ! set ice growth in open water parameters 569 CALL ice_thd_sal_init ! set ice salinity parameters 570 ! 571 IF( ln_icedS .AND. nn_icesal == 1 ) THEN 572 ln_icedS = .FALSE. 573 CALL ctl_warn('ln_icedS is set to false since constant ice salinity is chosen (nn_icesal=1)') 578 574 ENDIF 579 !580 IF ( ( ln_cndi_U64 .AND. ln_cndi_P07 ) .OR. ( .NOT.ln_cndi_U64 .AND. .NOT.ln_cndi_P07 ) ) THEN581 CALL ctl_stop( 'ice_thd_init: choose one and only one formulation for thermal conductivity (ln_cndi_U64 or ln_cndi_P07)' )582 ENDIF583 !584 IF ( rn_hinew < rn_himin ) CALL ctl_stop( 'ice_thd_init : rn_hinew should be >= rn_himin' )585 !586 IF(lwp) WRITE(numout,*)587 SELECT CASE( nn_iceflx ) ! LIM3 Multi-category heat flux formulation588 CASE( -1 )589 IF(lwp) WRITE(numout,*) ' LIM3: use per-category fluxes (nn_iceflx = -1) '590 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in coupled mode must be 0 or 2' )591 CASE( 0 )592 IF(lwp) WRITE(numout,*) ' LIM3: use average per-category fluxes (nn_iceflx = 0) '593 CASE( 1 )594 IF(lwp) WRITE(numout,*) ' LIM3: use average then redistribute per-category fluxes (nn_iceflx = 1) '595 IF( ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in coupled mode must be 0 or 2' )596 CASE( 2 )597 IF(lwp) WRITE(numout,*) ' LIM3: Redistribute a single flux over categories (nn_iceflx = 2) '598 IF( .NOT. ln_cpl ) CALL ctl_stop( 'ice_thd_init : the chosen nn_iceflx for LIM3 in forced mode cannot be 2' )599 CASE DEFAULT600 CALL ctl_stop( 'ice_thd_init: LIM3 option, nn_iceflx, should be between -1 and 2' )601 END SELECT602 575 ! 603 576 END SUBROUTINE ice_thd_init -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_da.F90
r8498 r8531 17 17 USE ice1D ! sea-ice: thermodynamic 1D variables 18 18 ! 19 USE in_out_manager ! I/O manager 19 20 USE lib_mpp ! MPP library 20 21 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) … … 23 24 PRIVATE 24 25 25 PUBLIC ice_thd_da ! called by icethd.F90 26 PUBLIC ice_thd_da ! called by icethd.F90 27 PUBLIC ice_thd_da_init ! called by icestp.F90 28 29 ! ** namelist (namthd_da) ** 30 REAL(wp) :: rn_beta ! coef. beta for lateral melting param. 31 REAL(wp) :: rn_dmin ! minimum floe diameter for lateral melting param. 26 32 27 33 !!---------------------------------------------------------------------- … … 149 155 ! 150 156 END SUBROUTINE ice_thd_da 151 157 158 SUBROUTINE ice_thd_da_init 159 !!----------------------------------------------------------------------- 160 !! *** ROUTINE ice_thd_da_init *** 161 !! 162 !! ** Purpose : Physical constants and parameters associated with 163 !! ice thermodynamics 164 !! 165 !! ** Method : Read the namthd_da namelist and check the parameters 166 !! called at the first timestep (nit000) 167 !! 168 !! ** input : Namelist namthd_da 169 !!------------------------------------------------------------------- 170 INTEGER :: ios ! Local integer output status for namelist read 171 !! 172 NAMELIST/namthd_da/ rn_beta, rn_dmin 173 !!------------------------------------------------------------------- 174 ! 175 REWIND( numnam_ice_ref ) ! Namelist namthd_da in reference namelist : Ice thermodynamics 176 READ ( numnam_ice_ref, namthd_da, IOSTAT = ios, ERR = 901) 177 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_da in reference namelist', lwp ) 178 179 REWIND( numnam_ice_cfg ) ! Namelist namthd_da in configuration namelist : Ice thermodynamics 180 READ ( numnam_ice_cfg, namthd_da, IOSTAT = ios, ERR = 902 ) 181 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_da in configuration namelist', lwp ) 182 IF(lwm) WRITE ( numoni, namthd_da ) 183 ! 184 ! 185 IF(lwp) THEN ! control print 186 WRITE(numout,*) 'ice_thd_da_init: Ice lateral melting' 187 WRITE(numout,*) '~~~~~~~~~~~~~~~' 188 WRITE(numout,*) ' Namelist namthd_da:' 189 WRITE(numout,*) ' Coef. beta for lateral melting param. rn_beta = ', rn_beta 190 WRITE(numout,*) ' Minimum floe diameter for lateral melting param. rn_dmin = ', rn_dmin 191 ENDIF 192 ! 193 END SUBROUTINE ice_thd_da_init 194 152 195 #else 153 196 !!---------------------------------------------------------------------- -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_ent.F90
r8486 r8531 33 33 PRIVATE 34 34 35 PUBLIC ice_thd_ent ! called by icethd and icethd_ lac35 PUBLIC ice_thd_ent ! called by icethd and icethd_do 36 36 37 37 !!---------------------------------------------------------------------- … … 130 130 131 131 ! --- diag error on heat remapping --- ! 132 ! comment: if input h_i_old and eh_i_old are already multiplied by a_i (as in icethd_ lac),132 ! comment: if input h_i_old and eh_i_old are already multiplied by a_i (as in icethd_do), 133 133 ! then we should not (* a_i) again but not important since this is just to check that remap error is ~0 134 134 DO ji = 1, nidx -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_sal.F90
r8518 r8531 27 27 PRIVATE 28 28 29 PUBLIC ice_thd_sal ! called by icethd module29 PUBLIC ice_thd_sal ! called by icethd 30 30 PUBLIC ice_thd_sal_init ! called by ice_init 31 31 32 ! ** namelist (namsal) ** 33 LOGICAL :: ln_icedS ! activate gravity drainage and flushing (T) or not (F) 34 REAL(wp) :: rn_sal_gd ! restoring salinity for gravity drainage [PSU] 35 REAL(wp) :: rn_time_gd ! restoring time constant for gravity drainage (= 20 days) [s] 36 REAL(wp) :: rn_sal_fl ! restoring salinity for flushing [PSU] 37 REAL(wp) :: rn_time_fl ! restoring time constant for gravity drainage (= 10 days) [s] 32 ! ** namelist (namthd_sal) ** 33 REAL(wp) :: rn_sal_gd ! restoring salinity for gravity drainage [PSU] 34 REAL(wp) :: rn_time_gd ! restoring time constant for gravity drainage (= 20 days) [s] 35 REAL(wp) :: rn_sal_fl ! restoring salinity for flushing [PSU] 36 REAL(wp) :: rn_time_fl ! restoring time constant for gravity drainage (= 10 days) [s] 38 37 39 38 !!---------------------------------------------------------------------- … … 44 43 CONTAINS 45 44 46 SUBROUTINE ice_thd_sal 45 SUBROUTINE ice_thd_sal( ld_sal ) 47 46 !!------------------------------------------------------------------- 48 47 !! *** ROUTINE ice_thd_sal *** … … 55 54 !! -> nn_icesal = 3 -> Sice = S(z) [multiyear ice] 56 55 !!--------------------------------------------------------------------- 56 LOGICAL, INTENT(in) :: ld_sal ! gravity drainage and flushing or not 57 57 INTEGER :: ji, jk ! dummy loop indices 58 58 REAL(wp) :: iflush, igravdr ! local scalars … … 78 78 sm_i_1d(ji) = sm_i_1d(ji) + zsm_i_bg + zsm_i_si 79 79 80 IF( l n_icedS) THEN80 IF( ld_sal ) THEN 81 81 !--------------------------------------------------------- 82 82 ! Update ice salinity from brine drainage and flushing … … 114 114 !! ** Purpose : initialization of ice salinity parameters 115 115 !! 116 !! ** Method : Read the nam ice_sal namelist and check the parameter117 !! values called at the first timestep (nit000)116 !! ** Method : Read the namthd_sal namelist and check the parameter 117 !! values called at the first timestep (nit000) 118 118 !! 119 !! ** input : Namelist nam ice_sal119 !! ** input : Namelist namthd_sal 120 120 !!------------------------------------------------------------------- 121 121 INTEGER :: ios ! Local integer output status for namelist read 122 122 !! 123 NAMELIST/nam ice_sal/ ln_icedS , nn_icesal, rn_icesal, rn_sal_gd, rn_time_gd, &123 NAMELIST/namthd_sal/ nn_icesal, rn_icesal, rn_sal_gd, rn_time_gd, & 124 124 & rn_sal_fl, rn_time_fl, rn_simax , rn_simin 125 125 !!------------------------------------------------------------------- 126 126 ! 127 REWIND( numnam_ice_ref ) ! Namelist nam ice_sal in reference namelist : Ice salinity128 READ ( numnam_ice_ref, nam ice_sal, IOSTAT = ios, ERR = 901)129 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_sal in reference namelist', lwp )127 REWIND( numnam_ice_ref ) ! Namelist namthd_sal in reference namelist : Ice salinity 128 READ ( numnam_ice_ref, namthd_sal, IOSTAT = ios, ERR = 901) 129 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_sal in reference namelist', lwp ) 130 130 ! 131 REWIND( numnam_ice_cfg ) ! Namelist nam ice_sal in configuration namelist : Ice salinity132 READ ( numnam_ice_cfg, nam ice_sal, IOSTAT = ios, ERR = 902 )133 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam ice_sal in configuration namelist', lwp )134 IF(lwm) WRITE ( numoni, nam ice_sal )131 REWIND( numnam_ice_cfg ) ! Namelist namthd_sal in configuration namelist : Ice salinity 132 READ ( numnam_ice_cfg, namthd_sal, IOSTAT = ios, ERR = 902 ) 133 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_sal in configuration namelist', lwp ) 134 IF(lwm) WRITE ( numoni, namthd_sal ) 135 135 ! 136 136 IF(lwp) THEN ! control print … … 138 138 WRITE(numout,*) 'ice_thd_sal_init : Ice parameters for salinity ' 139 139 WRITE(numout,*) '~~~~~~~~~~~~~~~~' 140 WRITE(numout,*) ' Namelist namice_sal' 141 WRITE(numout,*) ' activate gravity drainage and flushing (T) or not (F) ln_icedS = ', ln_icedS 140 WRITE(numout,*) ' Namelist namthd_sal:' 142 141 WRITE(numout,*) ' switch for salinity nn_icesal = ', nn_icesal 143 142 WRITE(numout,*) ' bulk salinity value if nn_icesal = 1 rn_icesal = ', rn_icesal … … 148 147 WRITE(numout,*) ' Maximum tolerated ice salinity rn_simax = ', rn_simax 149 148 WRITE(numout,*) ' Minimum tolerated ice salinity rn_simin = ', rn_simin 150 ENDIF151 !152 IF( ln_icedS .AND. nn_icesal == 1 ) THEN153 ln_icedS = .FALSE.154 CALL ctl_warn('ln_icedS is set to false since constant ice salinity is chosen (nn_icesal=1)')155 149 ENDIF 156 150 ! -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limmp.F90
r8411 r8531 79 79 !! over sea ice 80 80 !! 81 !! ** Method : Read the nam icemp namelist and check the melt pond81 !! ** Method : Read the nammp namelist and check the melt pond 82 82 !! parameter values called at the first timestep (nit000) 83 83 !! 84 !! ** input : Namelist nam icemp84 !! ** input : Namelist nammp 85 85 !!------------------------------------------------------------------- 86 86 INTEGER :: ios ! Local integer output status for namelist read 87 NAMELIST/nam icemp/ ln_pnd, ln_pnd_rad, ln_pnd_fw, nn_pnd_scheme, rn_apnd, rn_hpnd87 NAMELIST/nammp/ ln_pnd, ln_pnd_rad, ln_pnd_fw, nn_pnd_scheme, rn_apnd, rn_hpnd 88 88 !!------------------------------------------------------------------- 89 89 90 REWIND( numnam_ice_ref ) ! Namelist nam icemp in reference namelist : Melt Ponds91 READ ( numnam_ice_ref, nam icemp, IOSTAT = ios, ERR = 901)92 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam icemp in reference namelist', lwp )93 94 REWIND( numnam_ice_cfg ) ! Namelist nam icemp in configuration namelist : Melt Ponds95 READ ( numnam_ice_cfg, nam icemp, IOSTAT = ios, ERR = 902 )96 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam icemp in configuration namelist', lwp )97 IF(lwm) WRITE ( numoni, nam icemp )90 REWIND( numnam_ice_ref ) ! Namelist nammp in reference namelist : Melt Ponds 91 READ ( numnam_ice_ref, nammp, IOSTAT = ios, ERR = 901) 92 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nammp in reference namelist', lwp ) 93 94 REWIND( numnam_ice_cfg ) ! Namelist nammp in configuration namelist : Melt Ponds 95 READ ( numnam_ice_cfg, nammp, IOSTAT = ios, ERR = 902 ) 96 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nammp in configuration namelist', lwp ) 97 IF(lwm) WRITE ( numoni, nammp ) 98 98 99 99 IF(lwp) THEN ! control print
Note: See TracChangeset
for help on using the changeset viewer.