Changeset 8512
- Timestamp:
- 2017-09-07T20:08:11+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8183_ICEMODEL/NEMOGCM
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/namelist_ice_cfg
r8321 r8512 1 1 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 2 !! LIM3 configuration namelist: Overwrites SHARED/namelist_ice_lim3_ref 3 !! 1 - Generic parameters (namicerun) 4 !! 2 - Diagnostics (namicediag) 5 !! 3 - Ice initialization (namiceini) 6 !! 4 - Ice discretization (namiceitd) 7 !! 5 - Ice dynamics and transport (namicedyn) 8 !! 6 - Ice thermodynamics (namicethd) 9 !! 7 - Ice salinity (namicesal) 10 !! 8 - Ice mechanical redistribution (namiceitdme) 11 !! 9 - Ice/snow albedos (namicealb) 12 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3 !! 1 - Generic parameters (namice_run) 4 !! 2 - Ice thickness discretization (namice_itd) 5 !! 3 - Ice ridging/rafting (namice_rdgrft) 6 !! 4 - Ice rheology (namice_rhg) 7 !! 5 - Ice advection (namice_adv) 8 !! 6 - Ice thermodynamics (namice_thd) 9 !! 7 - Ice salinity (namice_sal) 10 !! 8 - Ice melt ponds (namice_mp) 11 !! 9 - Ice initialization (namice_ini) 12 !! 10 - Ice/snow albedos (namice_alb) 13 !! 11 - Ice diagnostics (namice_dia) 14 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 15 ! 13 16 !------------------------------------------------------------------------------ 14 &namice run ! Generic parameters17 &namice_run ! Generic parameters 15 18 !------------------------------------------------------------------------------ 16 19 / 17 20 !------------------------------------------------------------------------------ 18 &namice diag ! Diagnostics21 &namice_itd ! Ice discretization 19 22 !------------------------------------------------------------------------------ 20 23 / 21 24 !------------------------------------------------------------------------------ 22 &namice ini ! Ice initialization25 &namice_rdgrft ! Ice ridging/rafting 23 26 !------------------------------------------------------------------------------ 24 27 / 25 28 !------------------------------------------------------------------------------ 26 &namice itd ! Ice discretization29 &namice_rhg ! Ice rheology 27 30 !------------------------------------------------------------------------------ 28 31 / 29 32 !------------------------------------------------------------------------------ 30 &namice dyn ! Ice dynamics and transport33 &namice_adv ! Ice advection 31 34 !------------------------------------------------------------------------------ 32 35 / 33 36 !------------------------------------------------------------------------------ 34 &namice thd ! Ice thermodynamics37 &namice_thd ! Ice thermodynamics 35 38 !------------------------------------------------------------------------------ 36 39 / 37 40 !------------------------------------------------------------------------------ 38 &namice sal ! Ice salinity41 &namice_sal ! Ice salinity 39 42 !------------------------------------------------------------------------------ 40 43 / 41 44 !------------------------------------------------------------------------------ 42 &namice itdme ! Ice mechanical redistribution (ridging and rafting)45 &namicemp ! Melt ponds 43 46 !------------------------------------------------------------------------------ 44 47 / 45 !----------------------------------------------------------------------- 46 &namice alb ! albedo parameters47 !----------------------------------------------------------------------- 48 !------------------------------------------------------------------------------ 49 &namice_ini ! Ice initialization 50 !------------------------------------------------------------------------------ 48 51 / 52 !------------------------------------------------------------------------------ 53 &namice_alb ! albedo parameters 54 !------------------------------------------------------------------------------ 55 / 56 !------------------------------------------------------------------------------ 57 &namice_dia ! Diagnostics 58 !------------------------------------------------------------------------------ 59 / -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/SHARED/namelist_ice_lim3_ref
r8321 r8512 1 1 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 2 !! LIM3 namelist: 3 !! 1 - Generic parameters (namicerun) 4 !! 2 - Diagnostics (namicediag) 5 !! 3 - Ice initialization (namiceini) 6 !! 4 - Ice discretization (namiceitd) 7 !! 5 - Ice dynamics and transport (namicedyn) 8 !! 6 - Ice thermodynamics (namicethd) 9 !! 7 - Ice salinity (namicesal) 10 !! 8 - Ice mechanical redistribution (namiceitdme) 11 !! 9 - Ice/snow albedos (namicealb) 3 !! 1 - Generic parameters (namice_run) 4 !! 2 - Ice thickness discretization (namice_itd) 5 !! 3 - Ice ridging/rafting (namice_rdgrft) 6 !! 4 - Ice rheology (namice_rhg) 7 !! 5 - Ice advection (namice_adv) 8 !! 6 - Ice thermodynamics (namice_thd) 9 !! 7 - Ice salinity (namice_sal) 10 !! 8 - Ice melt ponds (namice_mp) 11 !! 9 - Ice initialization (namice_ini) 12 !! 10 - Ice/snow albedos (namice_alb) 13 !! 11 - Ice diagnostics (namice_dia) 12 14 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 13 15 ! 14 16 !------------------------------------------------------------------------------ 15 &namicerun ! Generic parameters 16 !------------------------------------------------------------------------------ 17 jpl = 5 ! number of ice categories 18 nlay_i = 2 ! number of ice layers 19 nlay_s = 1 ! number of snow layers (only 1 is working) 20 nn_monocat = 0 ! virtual ITD mono-category parameterizations (1-4 => jpl = 1 only) or not (0) 21 ! 2: simple piling instead of ridging --- temporary option 22 ! 3: activate G(he) only --- temporary option 23 ! 4: activate extra lateral melting only --- temporary option 24 rn_amax_n = 0.997 ! maximum tolerated ice concentration NH 25 rn_amax_s = 0.997 ! maximum tolerated ice concentration SH 26 cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) 27 cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) 28 cn_icerst_indir = "." ! directory to read input ice restarts 29 cn_icerst_outdir = "." ! directory to write output ice restarts 30 ln_limthd = .true. ! ice thermo (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 31 ln_limdyn = .true. ! ice dynamics (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 32 nn_limdyn = 2 ! (ln_limdyn=T) switch for ice dynamics 33 ! 2: total 34 ! 1: advection only (no diffusion, no ridging/rafting) 35 ! 0: advection only (as 1 but with prescribed velocity, bypass rheology) 36 rn_uice = 0.00001 ! (nn_limdyn=0) ice u-velocity 37 rn_vice = -0.00001 ! (nn_limdyn=0) ice v-velocity 38 / 39 !------------------------------------------------------------------------------ 40 &namicediag ! Diagnostics 41 !------------------------------------------------------------------------------ 42 ln_limdiachk = .false. ! check online the heat, mass & salt budgets (T) or not (F) 43 ln_limdiahsb = .false. ! output the heat, mass & salt budgets (T) or not (F) 44 ln_limctl = .false. ! ice points output for debug (T or F) 45 iiceprt = 10 ! i-index for debug 46 jiceprt = 10 ! j-index for debug 47 / 48 !------------------------------------------------------------------------------ 49 &namiceini ! Ice initialization 17 &namice_run ! Generic parameters 18 !------------------------------------------------------------------------------ 19 jpl = 5 ! number of ice categories 20 nlay_i = 2 ! number of ice layers 21 nlay_s = 1 ! number of snow layers (only 1 is working) 22 nn_monocat = 0 ! virtual ITD mono-category parameterizations (1-4 => jpl = 1 only) or not (0) 23 ! 2: simple piling instead of ridging --- temporary option 24 ! 3: activate G(he) only --- temporary option 25 ! 4: activate extra lateral melting only --- temporary option 26 rn_amax_n = 0.997 ! maximum tolerated ice concentration NH 27 rn_amax_s = 0.997 ! maximum tolerated ice concentration SH 28 cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) 29 cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) 30 cn_icerst_indir = "." ! directory to read input ice restarts 31 cn_icerst_outdir = "." ! directory to write output ice restarts 32 / 33 !------------------------------------------------------------------------------ 34 &namice_itd ! Ice discretization 35 !------------------------------------------------------------------------------ 36 rn_himean = 2.0 ! expected domain-average ice thickness (m) 37 / 38 !------------------------------------------------------------------------------ 39 &namice_rdgrft ! Ice ridging/rafting 40 !------------------------------------------------------------------------------ 41 ! -- ice_rdgrft_strength -- ! 42 ln_str_Hib = .true. ! ice strength param.: Hibler_79 => P = pstar*<h>*exp(-c_rhg*A) 43 rn_pstar = 2.0e+04 ! ice strength thickness parameter (N/m2) 44 rn_crhg = 20.0 ! ice strength conc. parameter (-) 45 ln_str_Rot = .false. ! ice strength param.: Rothrock_75 => P = Cf*coeff*integral(wr.h^2) 46 rn_perdg = 17.0 ! ridging work divided by pot. energy change in ridging 47 ! -- ice_rdgrft -- ! 48 rn_cs = 0.5 ! fraction of shearing energy contributing to ridging 49 ! -- ice_rdgrft_prep -- ! 50 ln_partf_lin = .false. ! Linear ridging participation function (Thorndike et al, 1975) 51 rn_gstar = 0.15 ! fractional area of thin ice being ridged 52 ln_partf_exp = .true. ! Exponential ridging participation function (Lipscomb, 2007) 53 rn_astar = 0.03 ! exponential measure of ridging ice fraction [set to 0.05 if hstar=100] 54 ln_ridging = .true. ! ridging activated (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 55 rn_hstar = 25.0 ! determines the maximum thickness of ridged ice (m) (Hibler, 1980) 56 rn_porordg = 0.3 ! porosity of newly ridged ice (Lepparanta et al., 1995) 57 rn_fsnwrdg = 0.5 ! snow volume fraction that survives in ridging 58 rn_fpndrdg = 1.0 ! pond fraction that survives in ridging (small a priori) 59 ln_rafting = .true. ! rafting activated (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 60 rn_hraft = 0.75 ! threshold thickness for rafting (m) 61 rn_craft = 5.0 ! squeezing coefficient used in the rafting function 62 rn_fsnwrft = 0.5 ! snow volume fraction that survives in rafting 63 rn_fpndrft = 1.0 ! pond fraction that survives in rafting (0.5 a priori) 64 / 65 !------------------------------------------------------------------------------ 66 &namice_rhg ! Ice rheology 67 !------------------------------------------------------------------------------ 68 rn_ishlat = 2. ! free slip (0) ; partial slip (0-2) ; no slip (2) ; strong slip (>2) 69 rn_cio = 5.0e-03 ! ice-ocean drag coefficient (-) 70 rn_creepl = 1.0e-12 ! creep limit (s-1) 71 rn_ecc = 2.0 ! eccentricity of the elliptical yield curve 72 nn_nevp = 120 ! number of EVP subcycles 73 rn_relast = 0.333 ! ratio of elastic timescale to ice time step: Telast = dt_ice * rn_relast 74 ! advised value: 1/3 (rn_nevp=120) or 1/9 (rn_nevp=300) 75 ln_landfast = .false. ! landfast ice parameterization (T or F) 76 rn_gamma = 0.15 ! fraction of ocean depth that ice must reach to initiate landfast 77 ! recommended range: [0.1 ; 0.25] 78 rn_icebfr = 10. ! maximum bottom stress per unit area of contact (N/m2) 79 ! a very large value ensures ice velocity=0 even with a small contact area 80 ! recommended range: ?? (should be greater than atm-ice stress => >0.1 N/m2) 81 rn_lfrelax = 1.e-5 ! relaxation time scale to reach static friction (s-1) 82 / 83 !------------------------------------------------------------------------------ 84 &namice_adv ! Ice advection 85 !------------------------------------------------------------------------------ 86 ln_icedyn = .true. ! ice dynamics (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 87 nn_icedyn = 2 ! switch for ice dynamics 88 ! 2: total 89 ! 1: advection only (no diffusion, no ridging/rafting) 90 ! 0: advection only (as 1 but with prescribed velocity, bypass rheology) 91 rn_uice = 0.00001 ! prescribed ice u-velocity 92 rn_vice = -0.00001 ! prescribed ice v-velocity 93 ! -- ice_adv -- ! 94 ln_adv_Pra = .false. ! Advection scheme (Prather) 95 ln_adv_UMx = .true. ! Advection scheme (Ultimate-Macho) 96 nn_UMx = 5 ! order of the scheme for UMx (1-5) 97 / 98 !------------------------------------------------------------------------------ 99 &namice_thd ! Ice thermodynamics 100 !------------------------------------------------------------------------------ 101 ln_limthd = .true. ! ice thermo (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 102 ! -- limthd_dif -- ! 103 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice (m-1) 104 nn_ice_thcon = 1 ! sea ice thermal conductivity 105 ! 0: k = k0 + beta.S/T (Untersteiner, 1964) 106 ! 1: k = k0 + beta1.S/T - beta2.T (Pringle et al., 2007) 107 ln_dqnsice = .true. ! change the surface non-solar flux with surface temperature (T) or not (F) 108 rn_cdsn = 0.31 ! thermal conductivity of the snow (0.31 W/m/K, Maykut and Untersteiner, 1971) 109 ! Obs: 0.1-0.5 (Lecomte et al, JAMES 2013) 110 ! -- limthd_dh -- ! 111 ln_limdH = .true. ! activate ice thickness change from growing/melting (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 112 rn_betas = 0.66 ! exponent in lead-ice repratition of snow precipitation 113 ! betas = 1 -> equipartition, betas < 1 -> more on leads 114 ! -- limthd_da -- ! 115 ln_limdA = .true. ! activate lateral melting param. (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 116 rn_beta = 1.0 ! (ln_latmelt=T) coef. beta for lateral melting param. Recommended range=[0.8-1.2] 117 ! => decrease = more melt and melt peaks toward higher concentration (A~0.5 for beta=1 ; A~0.8 for beta=0.2) 118 ! 0.3 = best fit for western Fram Strait and Antarctica 119 ! 1.4 = best fit for eastern Fram Strait 120 rn_dmin = 8. ! (ln_latmelt=T) minimum floe diameter for lateral melting param. Recommended range=[6-10] 121 ! => 6 vs 8m = +40% melting at the peak (A~0.5) 122 ! 10 vs 8m = -20% melting 123 ! -- limthd_lac -- ! 124 ln_limdO = .true. ! activate ice growth in open-water (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 125 rn_hnewice = 0.1 ! thickness for new ice formation in open water (m) 126 ln_frazil = .false. ! Frazil ice parameterization (ice collection as a function of wind) 127 rn_maxfrazb = 1.0 ! (ln_frazil=T) maximum fraction of frazil ice collecting at the ice base 128 rn_vfrazb = 0.417 ! (ln_frazil=T) thresold drift speed for frazil ice collecting at the ice bottom (m/s) 129 rn_Cfrazb = 5.0 ! (ln_frazil=T) squeezing coefficient for frazil ice collecting at the ice bottom 130 ! -- limitd_th -- ! 131 rn_himin = 0.1 ! minimum ice thickness (m) used in remapping, must be smaller than rn_hnewice 132 ! -- icestp -- ! 133 nn_limflx = -1 ! LIM3 Multi-category heat flux formulation (use -1 if LIM3 is not used) 134 ! =-1 Use per-category fluxes, bypass redistributor, forced mode only, not yet implemented coupled 135 ! = 0 Average per-category fluxes (forced and coupled mode) 136 ! = 1 Average and redistribute per-category fluxes, forced mode only, not yet implemented coupled 137 ! = 2 Redistribute a single flux over categories (coupled mode only) 138 / 139 !------------------------------------------------------------------------------ 140 &namice_sal ! Ice salinity 141 !------------------------------------------------------------------------------ 142 ! -- limthd_sal -- ! 143 ln_limdS = .true. ! activate gravity drainage and flushing (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 144 nn_icesal = 2 ! ice salinity option 145 ! 1: constant ice salinity (S=rn_icesal) 146 ! 2: varying salinity parameterization S(z,t) 147 ! 3: prescribed salinity profile S(z), Schwarzacher, 1959 148 rn_icesal = 4. ! (nn_icesal=1) ice salinity (g/kg) 149 rn_sal_gd = 5. ! restoring ice salinity, gravity drainage (g/kg) 150 rn_time_gd = 1.73e+6 ! restoring time scale, gravity drainage (s) 151 rn_sal_fl = 2. ! restoring ice salinity, flushing (g/kg) 152 rn_time_fl = 8.64e+5 ! restoring time scale, flushing (s) 153 rn_simax = 20. ! maximum tolerated ice salinity (g/kg) 154 rn_simin = 0.1 ! minimum tolerated ice salinity (g/kg) 155 / 156 !------------------------------------------------------------------------------ 157 &namicemp ! Melt ponds 158 !------------------------------------------------------------------------------ 159 ! -- limmp -- ! 160 ln_pnd = .false. ! active melt ponds 161 ln_pnd_rad = .false. ! active melt ponds radiative coupling 162 ln_pnd_fw = .false. ! active melt ponds freshwater coupling 163 nn_pnd_scheme = 0 ! type of melt pond scheme : =0 prescribed ( Tsu=0 ), =1 empirical, =2 topographic 164 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 165 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 166 / 167 !------------------------------------------------------------------------------ 168 &namice_ini ! Ice initialization 50 169 !------------------------------------------------------------------------------ 51 170 ! -- limistate -- ! 52 ln_ limini = .true. ! activate ice initialization (T) or not (F)53 ln_ limini_file = .false. ! netcdf file provided for initialization (T) or not (F)171 ln_iceini = .true. ! activate ice initialization (T) or not (F) 172 ln_iceini_file = .false. ! netcdf file provided for initialization (T) or not (F) 54 173 rn_thres_sst = 2.0 ! maximum water temperature with initial ice (degC) 55 174 rn_hts_ini_n = 0.3 ! initial real snow thickness (m), North … … 73 192 / 74 193 !------------------------------------------------------------------------------ 75 &namiceitd ! Ice discretization 76 !------------------------------------------------------------------------------ 77 rn_himean = 2.0 ! expected domain-average ice thickness (m) 78 / 79 !------------------------------------------------------------------------------ 80 &namicedyn ! Ice dynamics and transport 81 !------------------------------------------------------------------------------ 82 ! -- limtrp & limadv -- ! 83 nn_limadv = 0 ! choose the advection scheme (-1=Prather ; 0=Ultimate-Macho) 84 nn_limadv_ord = 5 ! choose the order of the advection scheme (if nn_limadv=0) 85 ! -- limitd_me -- ! 86 nn_icestr = 0 ! ice strength parameteriztaion 87 ! 0: Hibler_79 P = pstar*<h>*exp(-c_rhg*A) 88 ! 1: Rothrock_75 P = Cf*coeff*integral(wr.h^2) 89 rn_pe_rdg = 17.0 ! (nn_icestr=1) ridging work divided by pot. energy change in ridging 90 rn_pstar = 2.0e+04 ! (nn_icestr=0) ice strength thickness parameter (N/m2) 91 rn_crhg = 20.0 ! (nn_icestr=0) ice strength conc. parameter (-) 92 ln_icestr_bvf = .false. ! ice strength function brine volume (T) or not (F) 93 ! 94 ! -- limdyn & limrhg -- ! 95 rn_ishlat = 2. ! free slip (0) ; partial slip (0-2) ; no slip (2) ; strong slip (>2) 96 rn_cio = 5.0e-03 ! ice-ocean drag coefficient (-) 97 rn_creepl = 1.0e-12 ! creep limit (s-1) 98 rn_ecc = 2.0 ! eccentricity of the elliptical yield curve 99 nn_nevp = 120 ! number of EVP subcycles 100 rn_relast = 0.333 ! ratio of elastic timescale to ice time step: Telast = dt_ice * rn_relast 101 ! advised value: 1/3 (rn_nevp=120) or 1/9 (rn_nevp=300) 102 ln_landfast = .false. ! landfast ice parameterization (T or F) 103 rn_gamma = 0.15 ! (ln_landfast=T) fraction of ocean depth that ice must reach to initiate landfast 104 ! recommended range: [0.1 ; 0.25] 105 rn_icebfr = 10. ! (ln_landfast=T) maximum bottom stress per unit area of contact (N/m2) 106 ! a very large value ensures ice velocity=0 even with a small contact area 107 ! recommended range: ?? (should be greater than atm-ice stress => >0.1 N/m2) 108 rn_lfrelax = 1.e-5 ! (ln_landfast=T) relaxation time scale to reach static friction (s-1) 109 / 110 !------------------------------------------------------------------------------ 111 &namicethd ! Ice thermodynamics 112 !------------------------------------------------------------------------------ 113 ! -- limthd_dif -- ! 114 rn_kappa_i = 1.0 ! radiation attenuation coefficient in sea ice (m-1) 115 nn_ice_thcon = 1 ! sea ice thermal conductivity 116 ! 0: k = k0 + beta.S/T (Untersteiner, 1964) 117 ! 1: k = k0 + beta1.S/T - beta2.T (Pringle et al., 2007) 118 ln_dqnsice = .true. ! change the surface non-solar flux with surface temperature (T) or not (F) 119 rn_cdsn = 0.31 ! thermal conductivity of the snow (0.31 W/m/K, Maykut and Untersteiner, 1971) 120 ! Obs: 0.1-0.5 (Lecomte et al, JAMES 2013) 121 ! -- limthd_dh -- ! 122 ln_limdH = .true. ! activate ice thickness change from growing/melting (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 123 rn_betas = 0.66 ! exponent in lead-ice repratition of snow precipitation 124 ! betas = 1 -> equipartition, betas < 1 -> more on leads 125 ! -- limthd_da -- ! 126 ln_limdA = .true. ! activate lateral melting param. (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 127 rn_beta = 1.0 ! (ln_latmelt=T) coef. beta for lateral melting param. Recommended range=[0.8-1.2] 128 ! => decrease = more melt and melt peaks toward higher concentration (A~0.5 for beta=1 ; A~0.8 for beta=0.2) 129 ! 0.3 = best fit for western Fram Strait and Antarctica 130 ! 1.4 = best fit for eastern Fram Strait 131 rn_dmin = 8. ! (ln_latmelt=T) minimum floe diameter for lateral melting param. Recommended range=[6-10] 132 ! => 6 vs 8m = +40% melting at the peak (A~0.5) 133 ! 10 vs 8m = -20% melting 134 ! -- limthd_lac -- ! 135 ln_limdO = .true. ! activate ice growth in open-water (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 136 rn_hnewice = 0.1 ! thickness for new ice formation in open water (m) 137 ln_frazil = .false. ! Frazil ice parameterization (ice collection as a function of wind) 138 rn_maxfrazb = 1.0 ! (ln_frazil=T) maximum fraction of frazil ice collecting at the ice base 139 rn_vfrazb = 0.417 ! (ln_frazil=T) thresold drift speed for frazil ice collecting at the ice bottom (m/s) 140 rn_Cfrazb = 5.0 ! (ln_frazil=T) squeezing coefficient for frazil ice collecting at the ice bottom 141 ! -- limitd_th -- ! 142 rn_himin = 0.1 ! minimum ice thickness (m) used in remapping, must be smaller than rn_hnewice 143 ! -- icestp -- ! 144 nn_limflx = -1 ! LIM3 Multi-category heat flux formulation (use -1 if LIM3 is not used) 145 ! =-1 Use per-category fluxes, bypass redistributor, forced mode only, not yet implemented coupled 146 ! = 0 Average per-category fluxes (forced and coupled mode) 147 ! = 1 Average and redistribute per-category fluxes, forced mode only, not yet implemented coupled 148 ! = 2 Redistribute a single flux over categories (coupled mode only) 149 / 150 !------------------------------------------------------------------------------ 151 &namicesal ! Ice salinity 152 !------------------------------------------------------------------------------ 153 ! -- limthd_sal -- ! 154 ln_limdS = .true. ! activate gravity drainage and flushing (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 155 nn_icesal = 2 ! ice salinity option 156 ! 1: constant ice salinity (S=rn_icesal) 157 ! 2: varying salinity parameterization S(z,t) 158 ! 3: prescribed salinity profile S(z), Schwarzacher, 1959 159 rn_icesal = 4. ! (nn_icesal=1) ice salinity (g/kg) 160 rn_sal_gd = 5. ! restoring ice salinity, gravity drainage (g/kg) 161 rn_time_gd = 1.73e+6 ! restoring time scale, gravity drainage (s) 162 rn_sal_fl = 2. ! restoring ice salinity, flushing (g/kg) 163 rn_time_fl = 8.64e+5 ! restoring time scale, flushing (s) 164 rn_simax = 20. ! maximum tolerated ice salinity (g/kg) 165 rn_simin = 0.1 ! minimum tolerated ice salinity (g/kg) 166 / 167 !------------------------------------------------------------------------------ 168 &namicemp ! Melt ponds 169 !------------------------------------------------------------------------------ 170 ! -- limmp -- ! 171 ln_pnd = .false. ! active melt ponds 172 ln_pnd_rad = .false. ! active melt ponds radiative coupling 173 ln_pnd_fw = .false. ! active melt ponds freshwater coupling 174 nn_pnd_scheme = 0 ! type of melt pond scheme : =0 prescribed ( Tsu=0 ), =1 empirical, =2 topographic 175 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 176 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 177 / 178 !------------------------------------------------------------------------------ 179 &namiceitdme ! Ice mechanical redistribution (ridging and rafting) 180 !------------------------------------------------------------------------------ 181 ! -- limitd_me -- ! 182 rn_cs = 0.5 ! fraction of shearing energy contributing to ridging 183 nn_partfun = 1 ! type of ridging participation function 184 ! 0: linear (Thorndike et al, 1975) 185 ! 1: exponential (Lipscomb, 2007) 186 rn_gstar = 0.15 ! (nn_partfun = 0) fractional area of thin ice being ridged 187 rn_astar = 0.03 ! (nn_partfun = 1) exponential measure of ridging ice fraction [set to 0.05 if hstar=100] 188 ln_ridging = .true. ! ridging activated (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 189 rn_hstar = 25.0 ! (ln_ridging = T) determines the maximum thickness of ridged ice (m) (Hibler, 1980) 190 rn_por_rdg = 0.3 ! (ln_ridging = T) porosity of newly ridged ice (Lepparanta et al., 1995) 191 rn_fsnowrdg = 0.5 ! (ln_ridging = T) snow volume fraction that survives in ridging 192 rn_fpondrdg = 1.0 ! (ln_ridging = T) pond fraction that survives in ridging (small a priori) 193 ln_rafting = .true. ! rafting activated (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 194 rn_hraft = 0.75 ! (ln_rafting = T) threshold thickness for rafting (m) 195 rn_craft = 5.0 ! (ln_rafting = T) squeezing coefficient used in the rafting function 196 rn_fsnowrft = 0.5 ! (ln_rafting = T) snow volume fraction that survives in rafting 197 rn_fpondrft = 1.0 ! (ln_rafting = T) pond fraction that survives in rafting (0.5 a priori) 198 / 199 !----------------------------------------------------------------------- 200 &namicealb ! albedo parameters 201 !----------------------------------------------------------------------- 194 &namice_alb ! albedo parameters 195 !------------------------------------------------------------------------------ 202 196 nn_ice_alb = 1 ! parameterization of ice/snow albedo 203 197 ! 0: Shine & Henderson-Sellers (JGR 1985), giving clear-sky albedo … … 210 204 rn_alb_dpnd = 0.27 ! ponded ice albedo : 0.25 ( '' ) ; 0.27 ( '' ) ; obs 0.10-0.30 ( '' ) 211 205 / 206 !------------------------------------------------------------------------------ 207 &namice_dia ! Diagnostics 208 !------------------------------------------------------------------------------ 209 ln_limdiachk = .false. ! check online the heat, mass & salt budgets (T) or not (F) 210 ln_limdiahsb = .false. ! output the heat, mass & salt budgets (T) or not (F) 211 ln_limctl = .false. ! ice points output for debug (T or F) 212 iiceprt = 10 ! i-index for debug 213 jiceprt = 10 ! j-index for debug 214 / -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r8506 r8512 153 153 !! * Share Module variables 154 154 !!-------------------------------------------------------------------------- 155 ! !!** ice-generic parameters namelist (namice run) **155 ! !!** ice-generic parameters namelist (namice_run) ** 156 156 INTEGER , PUBLIC :: jpl !: number of ice categories 157 157 INTEGER , PUBLIC :: nlay_i !: number of ice layers … … 163 163 CHARACTER(len=256), PUBLIC :: cn_icerst_indir !: ice restart input directory 164 164 CHARACTER(len=256), PUBLIC :: cn_icerst_outdir!: ice restart output directory 165 LOGICAL , PUBLIC :: ln_limthd !: flag for ice thermo (T) or not (F)166 LOGICAL , PUBLIC :: ln_limdyn !: flag for ice dynamics (T) or not (F)167 INTEGER , PUBLIC :: nn_limdyn !: flag for ice dynamics168 REAL(wp) , PUBLIC :: rn_uice !: prescribed u-vel (case nn_limdyn=0)169 REAL(wp) , PUBLIC :: rn_vice !: prescribed v-vel (case nn_limdyn=0)170 165 171 ! !!** ice-diagnostics namelist (namice diag) **166 ! !!** ice-diagnostics namelist (namice_dia) ** 172 167 LOGICAL , PUBLIC :: ln_limdiachk !: flag for ice diag (T) or not (F) 173 168 LOGICAL , PUBLIC :: ln_limdiahsb !: flag for ice diag (T) or not (F) … … 177 172 178 173 ! !!** ice-dynamics namelist (namicedyn) ** 174 LOGICAL , PUBLIC :: ln_icedyn !: flag for ice dynamics (T) or not (F) 175 INTEGER , PUBLIC :: nn_icedyn !: flag for ice dynamics 176 REAL(wp), PUBLIC :: rn_uice !: prescribed u-vel (case nn_icedyn=0) 177 REAL(wp), PUBLIC :: rn_vice !: prescribed v-vel (case nn_icedyn=0) 179 178 ! -- iceadv -- ! 180 INTEGER , PUBLIC :: nn_limadv !: choose the advection scheme (-1=Prather ; 0=Ultimate-Macho) 181 INTEGER , PUBLIC :: nn_limadv_ord !: choose the order of the advection scheme (if Ultimate-Macho) 179 LOGICAL , PUBLIC :: ln_adv_Pra !: Prather advection scheme 180 LOGICAL , PUBLIC :: ln_adv_UMx !: Ultimate-Macho advection scheme 181 INTEGER , PUBLIC :: nn_UMx !: order of the UMx advection scheme 182 182 ! -- icerdgrft -- ! 183 INTEGER , PUBLIC :: nn_icestr !: ice strength parameterization (0=Hibler79 1=Rothrock75) 184 REAL(wp), PUBLIC :: rn_pe_rdg !: ridging work divided by pot. energy change in ridging, nn_icestr = 1 183 LOGICAL , PUBLIC :: ln_str_Hib !: ice strength parameterization (Hibler79) 185 184 REAL(wp), PUBLIC :: rn_pstar !: determines ice strength, Hibler JPO79 186 185 REAL(wp), PUBLIC :: rn_crhg !: determines changes in ice strength 187 LOGICAL , PUBLIC :: ln_icestr_bvf !: use brine volume to diminish ice strength 186 LOGICAL , PUBLIC :: ln_str_Rot !: ice strength parameterization (Rothrock75) 187 REAL(wp), PUBLIC :: rn_perdg !: ridging work divided by pot. energy change in ridging 188 188 ! -- icerhg -- ! 189 189 REAL(wp), PUBLIC :: rn_ishlat !: lateral boundary condition for sea-ice … … 198 198 REAL(wp), PUBLIC :: rn_lfrelax !: relaxation time scale (s-1) to reach static friction (landfast ice) 199 199 200 ! !!** ice-thermodynamics namelist (namicethd) ** 200 ! !!** ice-thermodynamics namelist (namice_thd) ** 201 LOGICAL , PUBLIC :: ln_limthd !: flag for ice thermo (T) or not (F) 201 202 ! -- icethd_dif -- ! 202 203 REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation Grenfell et al. (2006) [1/m] … … 219 220 REAL(wp), PUBLIC :: rn_vfrazb !: threshold drift speed for collection of bottom frazil ice 220 221 REAL(wp), PUBLIC :: rn_Cfrazb !: squeezing coefficient for collection of bottom frazil ice 221 ! -- iceitd -- !222 ! -- iceitd_th -- ! 222 223 REAL(wp), PUBLIC :: rn_himin !: minimum ice thickness 223 224 ! !!** ice-salinity namelist (namicesal) ** 224 ! -- -- ! 225 INTEGER , PUBLIC :: nn_limflx !: LIM3 Multi-category heat flux formulation 226 ! ! =-1 Use of per-category fluxes 227 ! ! = 0 Average per-category fluxes 228 ! ! = 1 Average then redistribute per-category fluxes 229 ! ! = 2 Redistribute a single flux over categories 230 231 ! !!** ice-salinity namelist (namice_sal) ** 225 232 LOGICAL , PUBLIC :: ln_limdS !: activate gravity drainage and flushing (T) or not (F) 226 233 INTEGER , PUBLIC :: nn_icesal !: salinity configuration used in the model -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceadv.F90
r8505 r8512 34 34 PRIVATE 35 35 36 PUBLIC ice_adv ! called by icestp 36 PUBLIC ice_adv ! called by icestp 37 PUBLIC ice_adv_init ! called by icestp 38 39 INTEGER, PUBLIC :: nice_dyn ! choice of the type of advection scheme 40 ! ! associated indices: 41 INTEGER, PUBLIC, PARAMETER :: np_dynNO = 0 ! no ice dynamics and ice advection 42 INTEGER, PUBLIC, PARAMETER :: np_dynFULL = 1 ! full ice dynamics (rheology + advection + ridging/rafting + correction) 43 INTEGER, PUBLIC, PARAMETER :: np_dyn = 2 ! no ridging/rafting (rheology + advection + correction) 44 INTEGER, PUBLIC, PARAMETER :: np_dynPURE = 3 ! pure dynamics (rheology + advection) 37 45 38 46 !! * Substitution … … 54 62 !! other values are considered as second order. 55 63 !! For advection, one can choose between 56 !! a) an Ultimate-Macho scheme (whose order is defined by nn_ limadv_ord) => nn_limadv=057 !! b) and a second order Prather scheme => nn_limadv=-164 !! a) an Ultimate-Macho scheme (whose order is defined by nn_UMx) => ln_adv_UMx 65 !! b) and a second order Prather scheme => ln_adv_Pra 58 66 !! 59 67 !! ** action : … … 75 83 IF( kt == nit000 .AND. lwp ) THEN 76 84 WRITE(numout,*) 77 WRITE(numout,*) 'ice adv: sea-ice advection'78 WRITE(numout,*) '~~~~~~ '85 WRITE(numout,*) 'ice_adv: sea-ice advection' 86 WRITE(numout,*) '~~~~~~~' 79 87 ENDIF 80 88 … … 116 124 ! Advection 117 125 !---------- 118 SELECT CASE ( nn_limadv ) 119 CASE ( 0 ) !-- ULTIMATE-MACHO scheme 126 IF( ln_adv_UMx ) THEN !-- ULTIMATE-MACHO scheme 120 127 CALL ice_adv_umx( kt, u_ice, v_ice, & 121 128 & ato_i, v_i, v_s, smv_i, oa_i, a_i, a_ip, v_ip, e_s, e_i ) 122 129 123 CASE ( -1 )!-- PRATHER scheme130 ELSEIF( ln_adv_Pra ) THEN !-- PRATHER scheme 124 131 CALL ice_adv_prather( kt, u_ice, v_ice, & 125 132 & ato_i, v_i, v_s, smv_i, oa_i, a_i, a_ip, v_ip, e_s, e_i ) 126 133 127 END SELECT134 ENDIF 128 135 129 136 ! total ice fraction … … 154 161 ! Thickness correction in case too high 155 162 !-------------------------------------- 156 IF( nn_ limdyn == 2 ) THEN163 IF( nn_icedyn == 2 ) THEN 157 164 ! 158 165 CALL ice_var_zapsmall !-- zap small areas … … 228 235 END SUBROUTINE ice_adv 229 236 237 238 SUBROUTINE ice_adv_init 239 !!------------------------------------------------------------------- 240 !! *** ROUTINE ice_adv_init *** 241 !! 242 !! ** Purpose : Physical constants and parameters linked to the ice 243 !! dynamics 244 !! 245 !! ** Method : Read the namice_adv namelist and check the ice-dynamic 246 !! parameter values called at the first timestep (nit000) 247 !! 248 !! ** input : Namelist namice_adv 249 !!------------------------------------------------------------------- 250 INTEGER :: ios ! Local integer output status for namelist read 251 !! 252 NAMELIST/namice_adv/ ln_icedyn, nn_icedyn, rn_uice, rn_vice, ln_adv_Pra, ln_adv_UMx, nn_UMx 253 !!------------------------------------------------------------------- 254 ! 255 REWIND( numnam_ice_ref ) ! Namelist namice_adv in reference namelist : Ice dynamics 256 READ ( numnam_ice_ref, namice_adv, IOSTAT = ios, ERR = 901) 257 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_adv in reference namelist', lwp ) 258 ! 259 REWIND( numnam_ice_cfg ) ! Namelist namice_adv in configuration namelist : Ice dynamics 260 READ ( numnam_ice_cfg, namice_adv, IOSTAT = ios, ERR = 902 ) 261 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_adv in configuration namelist', lwp ) 262 IF(lwm) WRITE ( numoni, namice_adv ) 263 ! 264 IF(lwp) THEN ! control print 265 WRITE(numout,*) 266 WRITE(numout,*) 'ice_adv_init : ice parameters for ice dynamics ' 267 WRITE(numout,*) '~~~~~~~~~~~~' 268 WRITE(numout,*) ' Namelist namice_adv' 269 WRITE(numout,*) ' Ice dynamics (T) or not (F) ln_icedyn = ', ln_icedyn 270 WRITE(numout,*) ' associated switch nn_icedyn = ', nn_icedyn 271 WRITE(numout,*) ' =2 all processes (default option)' 272 WRITE(numout,*) ' =1 advection only (no ridging/rafting)' 273 WRITE(numout,*) ' =0 advection only with prescribed velocity given by ' 274 WRITE(numout,*) ' a uniform field (u,v)_ice = (rn_uice,rn_vice) = (', rn_uice,',', rn_vice,')' 275 WRITE(numout,*) ' advection scheme for ice transport (limtrp)' 276 WRITE(numout,*) ' type of advection scheme (Prather) ln_adv_Pra = ', ln_adv_Pra 277 WRITE(numout,*) ' type of advection scheme (Ulimate-Macho) ln_adv_UMx = ', ln_adv_UMx 278 WRITE(numout,*) ' order of the Ultimate-Macho scheme nn_UMx = ', nn_UMx 279 ENDIF 280 ! 281 ! ! set the choice of ice dynamics 282 IF( lk_c1d .OR. .NOT. ln_icedyn ) THEN 283 nice_dyn = np_dynNO !--- no dynamics 284 ELSE 285 SELECT CASE( nn_icedyn ) 286 CASE( 2 ) 287 IF( nn_monocat /= 2 ) THEN !--- full dynamics (rheology + advection + ridging/rafting + correction) 288 nice_dyn = np_dynFULL 289 ELSE 290 nice_dyn = np_dyn !--- dynamics without ridging/rafting 291 ENDIF 292 CASE( 0 , 1 ) !--- dynamics without ridging/rafting and correction 293 nice_dyn = np_dynPURE 294 END SELECT 295 ENDIF 296 ! !--- simple conservative piling, comparable with LIM2 297 l_piling = nn_icedyn == 1 .OR. ( nn_monocat == 2 .AND. jpl == 1 ) 298 ! 299 IF ( ( ln_adv_Pra .AND. ln_adv_UMx ) .OR. ( .NOT.ln_adv_Pra .AND. .NOT.ln_adv_UMx ) ) THEN 300 CALL ctl_stop( 'ice_adv_init: choose one and only one ice advection scheme (ln_adv_Pra or ln_adv_UMx)' ) 301 ENDIF 302 ! 303 END SUBROUTINE ice_adv_init 304 230 305 #else 231 306 !!---------------------------------------------------------------------- -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceadv_prather.F90
r8504 r8512 75 75 !!---------------------------------------------------------------------- 76 76 ! 77 IF( kt == nit000 .AND. lwp ) THEN 78 WRITE(numout,*) 79 WRITE(numout,*) 'ice_adv_prather: Prather advection scheme' 80 WRITE(numout,*) '~~~~~~~~~~~~~~~' 81 ENDIF 77 IF( kt == nit000 .AND. lwp ) WRITE(numout,*) '-- ice_adv_prather: Prather advection scheme' 82 78 ! 83 79 ALLOCATE( zarea(jpi,jpj) , z0opw(jpi,jpj, 1 ) , & -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceadv_umx.F90
r8504 r8512 74 74 !!---------------------------------------------------------------------- 75 75 ! 76 IF( kt == nit000 .AND. lwp ) THEN 77 WRITE(numout,*) 78 WRITE(numout,*) 'ice_adv_umx : Ultimate-MACHO advection scheme' 79 WRITE(numout,*) '~~~~~~~~~~~' 80 ENDIF 76 IF( kt == nit000 .AND. lwp ) WRITE(numout,*) '-- ice_adv_umx: Ultimate-Macho advection scheme' 81 77 ! 82 78 ALLOCATE( zudy(jpi,jpj) , zvdx(jpi,jpj) , zcu_box(jpi,jpj) , zcv_box(jpi,jpj) ) … … 193 189 ! High order (_ho) fluxes 194 190 ! ----------------------- 195 SELECT CASE( nn_ limadv_ord)191 SELECT CASE( nn_UMx ) 196 192 CASE ( 20 ) ! centered second order 197 193 DO jj = 2, jpjm1 … … 203 199 ! 204 200 CASE ( 1:5 ) ! 1st to 5th order ULTIMATE-MACHO scheme 205 CALL macho( kt, nn_ limadv_ord, pdt, ptc, puc, pvc, pubox, pvbox, zt_u, zt_v )201 CALL macho( kt, nn_UMx, pdt, ptc, puc, pvc, pubox, pvbox, zt_u, zt_v ) 206 202 ! 207 203 DO jj = 2, jpjm1 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icealb.F90
r8505 r8512 34 34 REAL(wp) , PARAMETER :: r1_c2 = 1. / rc2 35 35 ! 36 ! ** albedo namelist (namice alb)36 ! ** albedo namelist (namice_alb) 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 namice alb312 !! ** Method : Read the namelist namice_alb 313 313 !!---------------------------------------------------------------------- 314 314 INTEGER :: ios ! Local integer output status for namelist read 315 315 !! 316 NAMELIST/namice 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 namice alb in reference namelist : Albedo parameters320 READ ( numnam_ice_ref, namice alb, IOSTAT = ios, ERR = 901)321 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice alb in reference namelist', lwp )316 NAMELIST/namice_alb/ 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 namice_alb in reference namelist : Albedo parameters 320 READ ( numnam_ice_ref, namice_alb, IOSTAT = ios, ERR = 901) 321 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_alb in reference namelist', lwp ) 322 322 323 323 REWIND( numnam_ice_cfg ) ! Namelist namsbc_alb in configuration namelist : Albedo parameters 324 READ ( numnam_ice_cfg, namice alb, IOSTAT = ios, ERR = 902 )325 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice alb in configuration namelist', lwp )326 IF(lwm) WRITE ( numoni, namice alb )324 READ ( numnam_ice_cfg, namice_alb, IOSTAT = ios, ERR = 902 ) 325 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_alb in configuration namelist', lwp ) 326 IF(lwm) WRITE ( numoni, namice_alb ) 327 327 ! 328 328 IF(lwp) THEN ! Control print … … 330 330 WRITE(numout,*) 'albedo : set albedo parameters' 331 331 WRITE(numout,*) '~~~~~~~' 332 WRITE(numout,*) ' Namelist namice alb : albedo '332 WRITE(numout,*) ' Namelist namice_alb : albedo ' 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/icecor.F90
r8498 r8512 60 60 IF( kt == nit000 .AND. lwp .AND. kn == 2 ) THEN 61 61 WRITE(numout,*) 62 WRITE(numout,*) ' icecor: correct sea ice variables if out of bounds '63 WRITE(numout,*) '~~~~~~~'62 WRITE(numout,*) 'ice_cor: correct sea ice variables if out of bounds ' 63 WRITE(numout,*) '~~~~~~~' 64 64 ENDIF 65 65 ! !--- conservation test … … 103 103 ! ! Rebin categories with thickness out of bounds ! 104 104 ! !----------------------------------------------------- 105 IF ( jpl > 1 ) CALL ice_itd_reb 105 IF ( jpl > 1 ) CALL ice_itd_reb( kt ) 106 106 107 107 ! !----------------------------------------------------- -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedia.F90
r8505 r8512 164 164 INTEGER :: ios, ierror ! local integer 165 165 !! 166 NAMELIST/namice diag/ ln_limdiachk, ln_limdiahsb, ln_limctl, iiceprt, jiceprt166 NAMELIST/namice_dia/ ln_limdiachk, ln_limdiahsb, ln_limctl, iiceprt, jiceprt 167 167 !!---------------------------------------------------------------------- 168 168 ! 169 REWIND( numnam_ice_ref ) ! Namelist namice diagin reference namelist : Parameters for ice170 READ ( numnam_ice_ref, namice diag, IOSTAT = ios, ERR = 901)171 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice diagin reference namelist', lwp )172 173 REWIND( numnam_ice_cfg ) ! Namelist namice diagin configuration namelist : Parameters for ice174 READ ( numnam_ice_cfg, namice diag, IOSTAT = ios, ERR = 902 )175 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice diagin configuration namelist', lwp )176 IF(lwm) WRITE ( numoni, namice diag)169 REWIND( numnam_ice_ref ) ! Namelist namice_dia in reference namelist : Parameters for ice 170 READ ( numnam_ice_ref, namice_dia, IOSTAT = ios, ERR = 901) 171 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_dia in reference namelist', lwp ) 172 173 REWIND( numnam_ice_cfg ) ! Namelist namice_dia in configuration namelist : Parameters for ice 174 READ ( numnam_ice_cfg, namice_dia, IOSTAT = ios, ERR = 902 ) 175 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_dia in configuration namelist', lwp ) 176 IF(lwm) WRITE ( numoni, namice_dia ) 177 177 ! 178 178 IF(lwp) THEN ! control print … … 180 180 WRITE(numout,*) 'ice_dia_init: ice diagnostics' 181 181 WRITE(numout,*) ' ~~~~~~~~~~~' 182 WRITE(numout,*) ' Namelist namice diag: '182 WRITE(numout,*) ' Namelist namice_dia : ' 183 183 WRITE(numout,*) ' Diagnose online heat/mass/salt budget ln_limdiachk = ', ln_limdiachk 184 184 WRITE(numout,*) ' Output heat/mass/salt budget ln_limdiahsb = ', ln_limdiahsb -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceforcing.F90
r8498 r8512 65 65 IF( kt == nit000 .AND. lwp ) THEN 66 66 WRITE(numout,*) 67 WRITE(numout,*)'ice_forcing_tau 67 WRITE(numout,*)'ice_forcing_tau: Surface boundary condition for sea ice (momentum)' 68 68 WRITE(numout,*)'~~~~~~~~~~~~~~~' 69 69 ENDIF … … 124 124 IF( kt == nit000 .AND. lwp ) THEN 125 125 WRITE(numout,*) 126 WRITE(numout,*)'ice_forcing_flx 126 WRITE(numout,*)'ice_forcing_flx: Surface boundary condition for sea ice (flux)' 127 127 WRITE(numout,*)'~~~~~~~~~~~~~~~' 128 128 ENDIF -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceist.F90
r8506 r8512 47 47 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: si ! structure of input fields (file informations, fields read) 48 48 ! 49 ! ** namelist (namice ini) **50 LOGICAL :: ln_ limini ! initialization or not51 LOGICAL :: ln_ limini_file ! Ice initialization state from 2D netcdf file49 ! ** namelist (namice_ini) ** 50 LOGICAL :: ln_iceini ! initialization or not 51 LOGICAL :: ln_iceini_file ! Ice initialization state from 2D netcdf file 52 52 REAL(wp) :: rn_thres_sst ! threshold water temperature for initial sea ice 53 53 REAL(wp) :: rn_hts_ini_n ! initial snow thickness in the north … … 126 126 ! 2) Initialization of sea ice state variables 127 127 !-------------------------------------------------------------------- 128 IF( ln_ limini ) THEN128 IF( ln_iceini ) THEN 129 129 ! 130 IF( ln_ limini_file )THEN130 IF( ln_iceini_file )THEN 131 131 ! 132 132 zht_i_ini(:,:) = si(jp_hti)%fnow(:,:,1) … … 141 141 END WHERE 142 142 ! 143 ELSE ! ln_ limini_file = F143 ELSE ! ln_iceini_file = F 144 144 145 145 !-------------------------------------------------------------------- … … 175 175 END DO 176 176 ! 177 ENDIF ! ln_ limini_file177 ENDIF ! ln_iceini_file 178 178 179 179 zvt_i_ini(:,:) = zht_i_ini(:,:) * zat_i_ini(:,:) ! ice volume … … 403 403 ! END MV MP 2016 404 404 405 ELSE ! if ln_ limini=false405 ELSE ! if ln_iceini=false 406 406 a_i (:,:,:) = 0._wp 407 407 v_i (:,:,:) = 0._wp … … 431 431 h_ip (:,:,:) = 0._wp 432 432 433 ENDIF ! ln_ limini433 ENDIF ! ln_iceini 434 434 435 435 at_i (:,:) = 0.0_wp … … 518 518 !! ** Purpose : Definition of initial state of the ice 519 519 !! 520 !! ** Method : Read the namice ini namelist and check the parameter520 !! ** Method : Read the namice_ini namelist and check the parameter 521 521 !! values called at the first timestep (nit000) 522 522 !! 523 523 !! ** input : 524 !! Namelist namice ini524 !! Namelist namice_ini 525 525 !! 526 526 !! history : … … 537 537 TYPE(FLD_N), DIMENSION(jpfldi) :: slf_i ! array of namelist informations on the fields to read 538 538 ! 539 NAMELIST/namice ini/ ln_limini, ln_limini_file, rn_thres_sst, rn_hts_ini_n, rn_hts_ini_s, &539 NAMELIST/namice_ini/ ln_iceini, ln_iceini_file, rn_thres_sst, rn_hts_ini_n, rn_hts_ini_s, & 540 540 & rn_hti_ini_n, rn_hti_ini_s, rn_ati_ini_n, rn_ati_ini_s, rn_smi_ini_n, & 541 541 & rn_smi_ini_s, rn_tmi_ini_n, rn_tmi_ini_s, & … … 543 543 !!----------------------------------------------------------------------------- 544 544 ! 545 REWIND( numnam_ice_ref ) ! Namelist namice ini in reference namelist : Ice initial state546 READ ( numnam_ice_ref, namice ini, IOSTAT = ios, ERR = 901)547 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice ini in reference namelist', lwp )548 549 REWIND( numnam_ice_cfg ) ! Namelist namice ini in configuration namelist : Ice initial state550 READ ( numnam_ice_cfg, namice ini, IOSTAT = ios, ERR = 902 )551 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice ini in configuration namelist', lwp )552 IF(lwm) WRITE ( numoni, namice ini )545 REWIND( numnam_ice_ref ) ! Namelist namice_ini in reference namelist : Ice initial state 546 READ ( numnam_ice_ref, namice_ini, IOSTAT = ios, ERR = 901) 547 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_ini in reference namelist', lwp ) 548 549 REWIND( numnam_ice_cfg ) ! Namelist namice_ini in configuration namelist : Ice initial state 550 READ ( numnam_ice_cfg, namice_ini, IOSTAT = ios, ERR = 902 ) 551 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_ini in configuration namelist', lwp ) 552 IF(lwm) WRITE ( numoni, namice_ini ) 553 553 554 554 slf_i(jp_hti) = sn_hti ; slf_i(jp_hts) = sn_hts … … 563 563 WRITE(numout,*) 'ice_ist_init : ice parameters inititialisation ' 564 564 WRITE(numout,*) '~~~~~~~~~~~~' 565 WRITE(numout,*) ' Namelist namice ini'566 WRITE(numout,*) ' initialization with ice (T) or not (F) ln_ limini = ', ln_limini567 WRITE(numout,*) ' ice initialization from a netcdf file ln_ limini_file = ', ln_limini_file565 WRITE(numout,*) ' Namelist namice_ini' 566 WRITE(numout,*) ' initialization with ice (T) or not (F) ln_iceini = ', ln_iceini 567 WRITE(numout,*) ' ice initialization from a netcdf file ln_iceini_file = ', ln_iceini_file 568 568 WRITE(numout,*) ' threshold water temp. for initial sea-ice rn_thres_sst = ', rn_thres_sst 569 569 WRITE(numout,*) ' initial snow thickness in the north rn_hts_ini_n = ', rn_hts_ini_n … … 579 579 ENDIF 580 580 581 IF( ln_ limini_file ) THEN ! Ice initialization using input file581 IF( ln_iceini_file ) THEN ! Ice initialization using input file 582 582 ! 583 583 ! set si structure -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceitd.F90
r8505 r8512 38 38 PUBLIC ice_itd_reb ! called in iceerr 39 39 40 ! ** ice-thickness distribution namelist (namice itd) **40 ! ** ice-thickness distribution namelist (namice_itd) ** 41 41 REAL(wp) :: rn_himean ! mean thickness of the domain (used to compute the distribution) 42 42 … … 79 79 !!------------------------------------------------------------------ 80 80 81 IF( kt == nit000 .AND. lwp) THEN 82 WRITE(numout,*) 83 WRITE(numout,*) 'ice_itd_rem : Remapping the ice thickness distribution' 84 WRITE(numout,*) '~~~~~~~~~~~~~~~' 85 ENDIF 81 IF( kt == nit000 .AND. lwp ) WRITE(numout,*) '-- ice_itd_rem: remapping ice thickness distribution' 86 82 87 83 IF( ln_limdiachk ) CALL ice_cons_hsm(0, 'iceitd_rem', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) … … 545 541 546 542 547 SUBROUTINE ice_itd_reb 543 SUBROUTINE ice_itd_reb( kt ) 548 544 !!------------------------------------------------------------------ 549 545 !! *** ROUTINE ice_itd_reb *** … … 555 551 !! to the neighboring category 556 552 !!------------------------------------------------------------------ 553 INTEGER , INTENT (in) :: kt ! Ocean time step 557 554 INTEGER :: ji, jj, jl ! dummy loop indices 558 555 ! … … 561 558 !!------------------------------------------------------------------ 562 559 ! 560 IF( kt == nit000 .AND. lwp ) WRITE(numout,*) '-- ice_itd_reb: rebining ice thickness distribution' 561 563 562 jdonor(:,:) = 0 564 563 zdaice(:,:) = 0._wp … … 645 644 !! ** Purpose : Initializes the ice thickness distribution 646 645 !! ** Method : ... 647 !! ** input : Namelist namice itd646 !! ** input : Namelist namice_itd 648 647 !!------------------------------------------------------------------- 649 648 INTEGER :: jl ! dummy loop index … … 651 650 REAL(wp) :: zhmax, znum, zden, zalpha ! - - 652 651 !! 653 NAMELIST/namice itd/ rn_himean654 !!------------------------------------------------------------------ 655 ! 656 REWIND( numnam_ice_ref ) ! Namelist namice itd in reference namelist : Parameters for ice657 READ ( numnam_ice_ref, namice itd, IOSTAT = ios, ERR = 901)658 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice itd in reference namelist', lwp )659 660 REWIND( numnam_ice_cfg ) ! Namelist namice itd in configuration namelist : Parameters for ice661 READ ( numnam_ice_cfg, namice itd, IOSTAT = ios, ERR = 902 )662 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice itd in configuration namelist', lwp )663 IF(lwm) WRITE ( numoni, namice itd )652 NAMELIST/namice_itd/ rn_himean 653 !!------------------------------------------------------------------ 654 ! 655 REWIND( numnam_ice_ref ) ! Namelist namice_itd in reference namelist : Parameters for ice 656 READ ( numnam_ice_ref, namice_itd, IOSTAT = ios, ERR = 901) 657 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_itd in reference namelist', lwp ) 658 659 REWIND( numnam_ice_cfg ) ! Namelist namice_itd in configuration namelist : Parameters for ice 660 READ ( numnam_ice_cfg, namice_itd, IOSTAT = ios, ERR = 902 ) 661 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_itd in configuration namelist', lwp ) 662 IF(lwm) WRITE ( numoni, namice_itd ) 664 663 ! 665 664 IF(lwp) THEN ! control print … … 667 666 WRITE(numout,*) 'ice_itd_init : Initialization of ice cat distribution ' 668 667 WRITE(numout,*) '~~~~~~~~~~~~' 669 WRITE(numout,*) ' Namelist namice run: '668 WRITE(numout,*) ' Namelist namice_itd : ' 670 669 WRITE(numout,*) ' mean ice thickness in the domain rn_himean = ', rn_himean 671 670 ENDIF -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerdgrft.F90
r8506 r8512 32 32 33 33 PUBLIC ice_rdgrft ! called by ice_stp 34 PUBLIC ice_rdgrft_ icestrength! called by icerhg_evp34 PUBLIC ice_rdgrft_strength ! called by icerhg_evp 35 35 PUBLIC ice_rdgrft_init ! called by ice_stp 36 36 PUBLIC ice_rdgrft_alloc ! called by ice_init … … 51 51 REAL(wp) :: zdrho ! 52 52 ! 53 ! ** namelist (namiceitdme) ** 54 REAL(wp) :: rn_cs !: fraction of shearing energy contributing to ridging 55 INTEGER :: nn_partfun !: participation function: =0 Thorndike et al. (1975), =1 Lipscomb et al. (2007) 56 REAL(wp) :: rn_gstar !: fractional area of young ice contributing to ridging 57 REAL(wp) :: rn_astar !: equivalent of G* for an exponential participation function 58 LOGICAL :: ln_ridging !: ridging of ice or not 59 REAL(wp) :: rn_hstar !: thickness that determines the maximal thickness of ridged ice 60 REAL(wp) :: rn_por_rdg !: initial porosity of ridges (0.3 regular value) 61 REAL(wp) :: rn_fsnowrdg !: fractional snow loss to the ocean during ridging 62 REAL(wp) :: rn_fpondrdg !: fractional melt pond loss to the ocean during ridging 63 LOGICAL :: ln_rafting !: rafting of ice or not 64 REAL(wp) :: rn_hraft !: threshold thickness (m) for rafting / ridging 65 REAL(wp) :: rn_craft !: coefficient for smoothness of the hyperbolic tangent in rafting 66 REAL(wp) :: rn_fsnowrft !: fractional snow loss to the ocean during ridging 67 REAL(wp) :: rn_fpondrft !: fractional snow loss to the ocean during rafting 53 ! ** namelist (namice_rdgrft) ** 54 REAL(wp) :: rn_cs ! fraction of shearing energy contributing to ridging 55 LOGICAL :: ln_partf_lin ! participation function linear (Thorndike et al. (1975)) 56 REAL(wp) :: rn_gstar ! fractional area of young ice contributing to ridging 57 LOGICAL :: ln_partf_exp ! participation function exponential (Lipscomb et al. (2007)) 58 REAL(wp) :: rn_astar ! equivalent of G* for an exponential participation function 59 LOGICAL :: ln_ridging ! ridging of ice or not 60 REAL(wp) :: rn_hstar ! thickness that determines the maximal thickness of ridged ice 61 REAL(wp) :: rn_porordg ! initial porosity of ridges (0.3 regular value) 62 REAL(wp) :: rn_fsnwrdg ! fractional snow loss to the ocean during ridging 63 REAL(wp) :: rn_fpndrdg ! fractional pond loss to the ocean during ridging 64 LOGICAL :: ln_rafting ! rafting of ice or not 65 REAL(wp) :: rn_hraft ! threshold thickness (m) for rafting / ridging 66 REAL(wp) :: rn_craft ! coefficient for smoothness of the hyperbolic tangent in rafting 67 REAL(wp) :: rn_fsnwrft ! fractional snow loss to the ocean during rafting 68 REAL(wp) :: rn_fpndrft ! fractional pond loss to the ocean during rafting 68 69 ! 69 70 !!---------------------------------------------------------------------- … … 133 134 IF( kt == nit000 ) THEN 134 135 IF(lwp) WRITE(numout,*) 135 IF(lwp) WRITE(numout,*)'ice rdgrft: ice ridging and rafting'136 IF(lwp) WRITE(numout,*)'ice_rdgrft: ice ridging and rafting' 136 137 IF(lwp) WRITE(numout,*)'~~~~~~~~~~' 137 138 ! … … 146 147 !-----------------------------------------------------------------------------! 147 148 ! 148 CALL ice_rdgrft_ ridgeprep ! prepare ridging149 CALL ice_rdgrft_prep ! prepare ridging 149 150 ! 150 151 DO jj = 1, jpj ! Initialize arrays. … … 272 273 ! 273 274 IF( iterate_ridging == 1 ) THEN 274 CALL ice_rdgrft_ ridgeprep275 CALL ice_rdgrft_prep 275 276 IF( niter > nitermax ) THEN 276 277 WRITE(numout,*) ' ALERTE : non-converging ridging scheme ' … … 297 298 298 299 299 SUBROUTINE ice_rdgrft_ ridgeprep300 SUBROUTINE ice_rdgrft_prep 300 301 !!---------------------------------------------------------------------! 301 !! *** ROUTINE ice_rdgrft_ ridgeprep ***302 !! *** ROUTINE ice_rdgrft_prep *** 302 303 !! 303 304 !! ** Purpose : preparation for ridging and strength calculations … … 352 353 !----------------------------------------------------------------- 353 354 ! 354 IF( nn_partfun == 0 ) THEN!--- Linear formulation (Thorndike et al., 1975)355 IF( ln_partf_lin ) THEN !--- Linear formulation (Thorndike et al., 1975) 355 356 DO jl = 0, jpl 356 357 DO jj = 1, jpj … … 369 370 END DO 370 371 ! 371 ELSE 372 ELSEIF( ln_partf_exp ) THEN !--- Exponential, more stable formulation (Lipscomb et al, 2007) 372 373 ! 373 374 zdummy = 1._wp / ( 1._wp - EXP(-z1_astar) ) ! precompute exponential terms using zGsum as a work array … … 453 454 END DO 454 455 ! 455 END SUBROUTINE ice_rdgrft_ ridgeprep456 END SUBROUTINE ice_rdgrft_prep 456 457 457 458 458 459 SUBROUTINE ice_rdgrft_ridgeshift( opning, closing_gross ) 459 460 !!---------------------------------------------------------------------- 460 !! *** ROUTINE ice_rdgrft_ icestrength ***461 !! *** ROUTINE ice_rdgrft_strength *** 461 462 !! 462 463 !! ** Purpose : shift ridging ice among thickness categories of ice thickness … … 565 566 !-------------------------------------------------------------------------- 566 567 vrdg1(ij) = v_i(ji,jj,jl1) * afrac(ij) 567 vrdg2(ij) = vrdg1(ij) * ( 1. + rn_por _rdg )568 vsw (ij) = vrdg1(ij) * rn_por _rdg568 vrdg2(ij) = vrdg1(ij) * ( 1. + rn_porordg ) 569 vsw (ij) = vrdg1(ij) * rn_porordg 569 570 570 571 vsrdg (ij) = v_s (ji,jj, jl1) * afrac(ij) … … 621 622 ! During the next time step, thermo_rates will determine whether 622 623 ! the ocean cools or new ice grows. 623 wfx_snw_dyn(ji,jj) = wfx_snw_dyn(ji,jj) + ( rhosn * vsrdg(ij) * ( 1._wp - rn_fsn owrdg ) &624 & + rhosn * vsrft(ij) * ( 1._wp - rn_fsn owrft ) ) * r1_rdtice ! fresh water source for ocean625 626 hfx_dyn(ji,jj) = hfx_dyn(ji,jj) + ( - esrdg(ij) * ( 1._wp - rn_fsn owrdg ) &627 & - esrft(ij) * ( 1._wp - rn_fsn owrft ) ) * r1_rdtice ! heat sink for ocean (<0, W.m-2)624 wfx_snw_dyn(ji,jj) = wfx_snw_dyn(ji,jj) + ( rhosn * vsrdg(ij) * ( 1._wp - rn_fsnwrdg ) & 625 & + rhosn * vsrft(ij) * ( 1._wp - rn_fsnwrft ) ) * r1_rdtice ! fresh water source for ocean 626 627 hfx_dyn(ji,jj) = hfx_dyn(ji,jj) + ( - esrdg(ij) * ( 1._wp - rn_fsnwrdg ) & 628 & - esrft(ij) * ( 1._wp - rn_fsnwrft ) ) * r1_rdtice ! heat sink for ocean (<0, W.m-2) 628 629 629 630 ! MV MP 2016 … … 633 634 ! Place part of the melt pond volume into the ocean. 634 635 IF ( ( nn_pnd_scheme > 0 ) .AND. ln_pnd_fw ) THEN 635 wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + ( rhofw * vprdg(ij) * ( 1._wp - rn_fp ondrdg ) &636 & + rhofw * vprft(ij) * ( 1._wp - rn_fp ondrft ) ) * r1_rdtice ! fresh water source for ocean636 wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + ( rhofw * vprdg(ij) * ( 1._wp - rn_fpndrdg ) & 637 & + rhofw * vprft(ij) * ( 1._wp - rn_fpndrft ) ) * r1_rdtice ! fresh water source for ocean 637 638 ENDIF 638 639 ! END MV MP 2016 … … 719 720 v_i (ji,jj ,jl2) = v_i (ji,jj ,jl2) + ( vrdg2 (ij) * fvol(ij) + virft (ij) * zswitch(ij) ) 720 721 smv_i(ji,jj ,jl2) = smv_i(ji,jj ,jl2) + ( srdg2 (ij) * fvol(ij) + smrft (ij) * zswitch(ij) ) 721 v_s (ji,jj ,jl2) = v_s (ji,jj ,jl2) + ( vsrdg (ij) * rn_fsn owrdg * fvol(ij) + &722 & vsrft (ij) * rn_fsn owrft * zswitch(ij) )723 e_s (ji,jj,1,jl2) = e_s (ji,jj,1,jl2) + ( esrdg (ij) * rn_fsn owrdg * fvol(ij) + &724 & esrft (ij) * rn_fsn owrft * zswitch(ij) )722 v_s (ji,jj ,jl2) = v_s (ji,jj ,jl2) + ( vsrdg (ij) * rn_fsnwrdg * fvol(ij) + & 723 & vsrft (ij) * rn_fsnwrft * zswitch(ij) ) 724 e_s (ji,jj,1,jl2) = e_s (ji,jj,1,jl2) + ( esrdg (ij) * rn_fsnwrdg * fvol(ij) + & 725 & esrft (ij) * rn_fsnwrft * zswitch(ij) ) 725 726 ! MV MP 2016 726 727 IF ( nn_pnd_scheme > 0 ) THEN 727 v_ip (ji,jj,jl2) = v_ip(ji,jj,jl2) + ( vprdg (ij) * rn_fp ondrdg * fvol (ij) &728 & + vprft (ij) * rn_fp ondrft * zswitch(ij) )729 a_ip (ji,jj,jl2) = a_ip(ji,jj,jl2) + ( aprdg2(ij) * rn_fp ondrdg * farea &730 & + aprft2(ij) * rn_fp ondrft * zswitch(ji) )728 v_ip (ji,jj,jl2) = v_ip(ji,jj,jl2) + ( vprdg (ij) * rn_fpndrdg * fvol (ij) & 729 & + vprft (ij) * rn_fpndrft * zswitch(ij) ) 730 a_ip (ji,jj,jl2) = a_ip(ji,jj,jl2) + ( aprdg2(ij) * rn_fpndrdg * farea & 731 & + aprft2(ij) * rn_fpndrft * zswitch(ji) ) 731 732 ENDIF 732 733 ! END MV MP 2016 … … 748 749 749 750 750 SUBROUTINE ice_rdgrft_ icestrength( kstrngth )751 SUBROUTINE ice_rdgrft_strength 751 752 !!---------------------------------------------------------------------- 752 !! *** ROUTINE ice_rdgrft_ icestrength ***753 !! *** ROUTINE ice_rdgrft_strength *** 753 754 !! 754 755 !! ** Purpose : computes ice strength used in dynamics routines of ice thickness … … 759 760 !! by ridging. Note that only Hibler's formulation is stable and that 760 761 !! ice strength has to be smoothed 761 !!762 !! ** Inputs / Ouputs : kstrngth (what kind of ice strength we are using)763 762 !!---------------------------------------------------------------------- 764 INTEGER, INTENT(in) :: kstrngth ! = 1 for Rothrock formulation, 0 for Hibler (1979)765 !766 763 INTEGER :: ji,jj, jl ! dummy loop indices 767 764 INTEGER :: ismooth ! smoothing the resistance to deformation … … 773 770 774 771 ! !--------------------------------------------------! 775 CALL ice_rdgrft_ ridgeprep! Thickness distribution of ridging and ridged ice !772 CALL ice_rdgrft_prep ! Thickness distribution of ridging and ridged ice ! 776 773 ! !--------------------------------------------------! 777 774 778 775 ! !--------------------------------------------------! 779 IF( kstrngth == 1 ) THEN! Ice strength => Rothrock (1975) method !776 IF( ln_str_Rot ) THEN ! Ice strength => Rothrock (1975) method ! 780 777 ! !--------------------------------------------------! 781 778 z1_3 = 1._wp / 3._wp … … 792 789 END WHERE 793 790 END DO 794 strength(:,:) = rn_pe _rdg * zdrho * strength(:,:) / aksum(:,:) * tmask(:,:,1)795 ! where zdrho = (g/2)*(rhow-rhoi)*(rhoi/rhow) and rn_pe _rdg accounts for frictional dissipation791 strength(:,:) = rn_perdg * zdrho * strength(:,:) / aksum(:,:) * tmask(:,:,1) 792 ! where zdrho = (g/2)*(rhow-rhoi)*(rhoi/rhow) and rn_perdg accounts for frictional dissipation 796 793 ismooth = 1 797 794 ! !--------------------------------------------------! 798 ELSE 795 ELSEIF( ln_str_Hib ) THEN ! Ice strength => Hibler (1979) method ! 799 796 ! !--------------------------------------------------! 800 797 strength(:,:) = rn_pstar * vt_i(:,:) * EXP( - rn_crhg * ( 1._wp - at_i(:,:) ) ) * tmask(:,:,1) … … 802 799 ismooth = 1 803 800 ! 804 ENDIF805 ! !--------------------------------------------------!806 IF( ln_icestr_bvf ) THEN ! Impact of brine volume !807 ! !--------------------------------------------------!808 ! CAN BE REMOVED809 DO jj = 1, jpj810 DO ji = 1, jpi811 strength(ji,jj) = strength(ji,jj) * exp(-5.88*SQRT(MAX(bvm_i(ji,jj),0.0)))812 END DO813 END DO814 801 ENDIF 815 802 ! !--------------------------------------------------! 816 803 SELECT CASE( ismooth ) ! Smoothing ice strength ! 817 804 ! !--------------------------------------------------! 818 !819 805 CASE( 1 ) !--- Spatial smoothing 820 806 DO jj = 2, jpjm1 … … 861 847 END SELECT 862 848 ! 863 END SUBROUTINE ice_rdgrft_ icestrength849 END SUBROUTINE ice_rdgrft_strength 864 850 865 851 … … 871 857 !! to the mechanical ice redistribution 872 858 !! 873 !! ** Method : Read the namice itdmenamelist859 !! ** Method : Read the namice_rdgrft namelist 874 860 !! and check the parameters values 875 861 !! called at the first timestep (nit000) 876 862 !! 877 !! ** input : Namelist namice itdme863 !! ** input : Namelist namice_rdgrft 878 864 !!------------------------------------------------------------------- 879 865 INTEGER :: ios ! Local integer output status for namelist read 880 866 !! 881 NAMELIST/namiceitdme/ rn_cs , nn_partfun, rn_gstar , rn_astar , & 882 & ln_ridging, rn_hstar , rn_por_rdg, rn_fsnowrdg, rn_fpondrdg, & 883 & ln_rafting, rn_hraft , rn_craft , rn_fsnowrft, rn_fpondrft 867 NAMELIST/namice_rdgrft/ ln_str_Hib, rn_pstar, rn_crhg, & 868 & ln_str_Rot, rn_perdg, & 869 & rn_cs , & 870 & ln_partf_lin, rn_gstar, & 871 & ln_partf_exp, rn_astar, & 872 & ln_ridging, rn_hstar, rn_porordg, rn_fsnwrdg, rn_fpndrdg, & 873 & ln_rafting, rn_hraft, rn_craft , rn_fsnwrft, rn_fpndrft 884 874 !!------------------------------------------------------------------- 885 875 ! 886 876 REWIND( numnam_ice_ref ) ! Namelist namicetdme in reference namelist : Ice mechanical ice redistribution 887 READ ( numnam_ice_ref, namice itdme, IOSTAT = ios, ERR = 901)888 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice itdmein reference namelist', lwp )889 ! 890 REWIND( numnam_ice_cfg ) ! Namelist namice itdmein configuration namelist : Ice mechanical ice redistribution891 READ ( numnam_ice_cfg, namice itdme, IOSTAT = ios, ERR = 902 )892 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice itdmein configuration namelist', lwp )893 IF(lwm) WRITE ( numoni, namice itdme)877 READ ( numnam_ice_ref, namice_rdgrft, IOSTAT = ios, ERR = 901) 878 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_rdgrft in reference namelist', lwp ) 879 ! 880 REWIND( numnam_ice_cfg ) ! Namelist namice_rdgrft in configuration namelist : Ice mechanical ice redistribution 881 READ ( numnam_ice_cfg, namice_rdgrft, IOSTAT = ios, ERR = 902 ) 882 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_rdgrft in configuration namelist', lwp ) 883 IF(lwm) WRITE ( numoni, namice_rdgrft ) 894 884 ! 895 885 IF (lwp) THEN ! control print 896 886 WRITE(numout,*) 897 WRITE(numout,*) 'ice_rdgrft_init : ice parameters for mechanical ice redistribution'887 WRITE(numout,*) 'ice_rdgrft_init : ice parameters for ridging/rafting ' 898 888 WRITE(numout,*) '~~~~~~~~~~~~~~~' 899 WRITE(numout,*) ' Namelist namiceitdme' 900 WRITE(numout,*) ' Fraction of shear energy contributing to ridging rn_cs = ', rn_cs 901 WRITE(numout,*) ' Switch for part. function (0) linear (1) exponential nn_partfun = ', nn_partfun 902 WRITE(numout,*) ' Fraction of total ice coverage contributing to ridging rn_gstar = ', rn_gstar 903 WRITE(numout,*) ' Equivalent to G* for an exponential part function rn_astar = ', rn_astar 904 WRITE(numout,*) ' Ridging of ice sheets or not ln_ridging = ', ln_ridging 905 WRITE(numout,*) ' Quantity playing a role in max ridged ice thickness rn_hstar = ', rn_hstar 906 WRITE(numout,*) ' Initial porosity of ridges rn_por_rdg = ', rn_por_rdg 907 WRITE(numout,*) ' Fraction of snow volume conserved during ridging rn_fsnowrdg = ', rn_fsnowrdg 908 WRITE(numout,*) ' Fraction of pond volume conserved during ridging rn_fpondrdg = ', rn_fpondrdg 909 WRITE(numout,*) ' Rafting of ice sheets or not ln_rafting = ', ln_rafting 910 WRITE(numout,*) ' Parmeter thickness (threshold between ridge-raft) rn_hraft = ', rn_hraft 911 WRITE(numout,*) ' Rafting hyperbolic tangent coefficient rn_craft = ', rn_craft 912 WRITE(numout,*) ' Fraction of snow volume conserved during ridging rn_fsnowrft = ', rn_fsnowrft 913 WRITE(numout,*) ' Fraction of pond volume conserved during rafting rn_fpondrft = ', rn_fpondrft 889 WRITE(numout,*) ' Namelist namice_rdgrft' 890 WRITE(numout,*) ' ice strength parameterization Hibler (1979) ln_str_Hib = ', ln_str_Hib 891 WRITE(numout,*) ' 1st bulk-rheology parameter rn_pstar = ', rn_pstar 892 WRITE(numout,*) ' 2nd bulk-rhelogy parameter rn_crhg = ', rn_crhg 893 WRITE(numout,*) ' ice strength parameterization Rothrock (1975) ln_str_Rot = ', ln_str_Rot 894 WRITE(numout,*) ' Ratio of ridging work to PotEner change in ridging rn_perdg = ', rn_perdg 895 WRITE(numout,*) ' Fraction of shear energy contributing to ridging rn_cs = ', rn_cs 896 WRITE(numout,*) ' linear ridging participation function ln_partf_lin = ', ln_partf_lin 897 WRITE(numout,*) ' Fraction of ice coverage contributing to ridging rn_gstar = ', rn_gstar 898 WRITE(numout,*) ' Exponential ridging participation function ln_partf_exp = ', ln_partf_exp 899 WRITE(numout,*) ' Equivalent to G* for an exponential function rn_astar = ', rn_astar 900 WRITE(numout,*) ' Ridging of ice sheets or not ln_ridging = ', ln_ridging 901 WRITE(numout,*) ' max ridged ice thickness rn_hstar = ', rn_hstar 902 WRITE(numout,*) ' Initial porosity of ridges rn_porordg = ', rn_porordg 903 WRITE(numout,*) ' Fraction of snow volume conserved during ridging rn_fsnwrdg = ', rn_fsnwrdg 904 WRITE(numout,*) ' Fraction of pond volume conserved during ridging rn_fpndrdg = ', rn_fpndrdg 905 WRITE(numout,*) ' Rafting of ice sheets or not ln_rafting = ', ln_rafting 906 WRITE(numout,*) ' Parmeter thickness (threshold between ridge-raft) rn_hraft = ', rn_hraft 907 WRITE(numout,*) ' Rafting hyperbolic tangent coefficient rn_craft = ', rn_craft 908 WRITE(numout,*) ' Fraction of snow volume conserved during rafting rn_fsnwrft = ', rn_fsnwrft 909 WRITE(numout,*) ' Fraction of pond volume conserved during rafting rn_fpndrft = ', rn_fpndrft 914 910 ENDIF 915 911 ! 916 END SUBROUTINE ice_rdgrft_init 912 IF ( ( ln_str_Hib .AND. ln_str_Rot ) .OR. ( .NOT.ln_str_Hib .AND. .NOT.ln_str_Rot ) ) THEN 913 CALL ctl_stop( 'ice_rdgrft_init: choose one and only one formulation for ice strength (ln_str_Hib or ln_str_Rot)' ) 914 ENDIF 915 ! 916 IF ( ( ln_partf_lin .AND. ln_partf_exp ) .OR. ( .NOT.ln_partf_lin .AND. .NOT.ln_partf_exp ) ) THEN 917 CALL ctl_stop( 'ice_rdgrft_init: choose one and only one participation function (ln_partf_lin or ln_partf_exp)' ) 918 ENDIF 919 ! 920 END SUBROUTINE ice_rdgrft_init 917 921 918 922 #else -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerhg.F90
r8491 r8512 31 31 PRIVATE 32 32 33 PUBLIC ice_rhg ! routinecalled by icestp.F9034 PUBLIC ice_rhg_init ! routinecalled by icestp.F9035 33 PUBLIC ice_rhg ! called by icestp.F90 34 PUBLIC ice_rhg_init ! called by icestp.F90 35 36 36 !! * Substitutions 37 37 # include "vectopt_loop_substitute.h90" … … 63 63 IF( kt == nit000 .AND. lwp ) THEN 64 64 WRITE(numout,*) 65 WRITE(numout,*)'ice_rhg 66 WRITE(numout,*)'~~~~~~~ ~'65 WRITE(numout,*)'ice_rhg: sea-ice rheology' 66 WRITE(numout,*)'~~~~~~~' 67 67 ENDIF 68 68 … … 82 82 ! Rheology (ice dynamics) 83 83 ! ----------------------- 84 IF( nn_ limdyn /= 0 ) THEN ! -- Ice dynamics84 IF( nn_icedyn /= 0 ) THEN ! -- Ice dynamics 85 85 ! 86 CALL ice_rhg_evp( stress1_i, stress2_i, stress12_i, u_ice, v_ice, shear_i, divu_i, delta_i )86 CALL ice_rhg_evp( kt, stress1_i, stress2_i, stress12_i, u_ice, v_ice, shear_i, divu_i, delta_i ) 87 87 ! 88 88 ELSE ! -- prescribed uniform velocity … … 110 110 !! dynamics 111 111 !! 112 !! ** Method : Read the namice dynnamelist and check the ice-dynamic112 !! ** Method : Read the namice_rhg namelist and check the ice-dynamic 113 113 !! parameter values called at the first timestep (nit000) 114 114 !! 115 !! ** input : Namelist namice dyn115 !! ** input : Namelist namice_rhg 116 116 !!------------------------------------------------------------------- 117 117 INTEGER :: ios ! Local integer output status for namelist read 118 118 !! 119 NAMELIST/namicedyn/ nn_limadv , nn_limadv_ord, & 120 & nn_icestr , rn_pe_rdg, rn_pstar , rn_crhg, ln_icestr_bvf , & 121 & rn_ishlat , rn_cio , rn_creepl, rn_ecc , nn_nevp, rn_relast, & 119 NAMELIST/namice_rhg/ rn_ishlat , rn_cio , rn_creepl, rn_ecc , nn_nevp, rn_relast, & 122 120 & ln_landfast, rn_gamma , rn_icebfr, rn_lfrelax 123 121 !!------------------------------------------------------------------- 124 122 ! 125 REWIND( numnam_ice_ref ) ! Namelist namice dynin reference namelist : Ice dynamics126 READ ( numnam_ice_ref, namice dyn, IOSTAT = ios, ERR = 901)127 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice dynin reference namelist', lwp )123 REWIND( numnam_ice_ref ) ! Namelist namice_rhg in reference namelist : Ice dynamics 124 READ ( numnam_ice_ref, namice_rhg, IOSTAT = ios, ERR = 901) 125 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_rhg in reference namelist', lwp ) 128 126 ! 129 REWIND( numnam_ice_cfg ) ! Namelist namice dynin configuration namelist : Ice dynamics130 READ ( numnam_ice_cfg, namice dyn, IOSTAT = ios, ERR = 902 )131 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice dynin configuration namelist', lwp )132 IF(lwm) WRITE ( numoni, namice dyn)127 REWIND( numnam_ice_cfg ) ! Namelist namice_rhg in configuration namelist : Ice dynamics 128 READ ( numnam_ice_cfg, namice_rhg, IOSTAT = ios, ERR = 902 ) 129 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_rhg in configuration namelist', lwp ) 130 IF(lwm) WRITE ( numoni, namice_rhg ) 133 131 ! 134 132 IF(lwp) THEN ! control print … … 136 134 WRITE(numout,*) 'ice_rhg_init : ice parameters for ice dynamics ' 137 135 WRITE(numout,*) '~~~~~~~~~~~~' 138 WRITE(numout,*) ' Namelist namicedyn' 139 WRITE(numout,*) ' advection scheme for ice transport (limtrp)' 140 WRITE(numout,*) ' type of advection scheme (-1=Prather, 0=Ulimate-Macho) nn_limadv = ', nn_limadv 141 WRITE(numout,*) ' order of the scheme for Ultimate-Macho case nn_limadv_ord = ', nn_limadv_ord 142 WRITE(numout,*) ' ridging/rafting (icerdgrft)' 143 WRITE(numout,*) ' ice strength parameterization (0=Hibler 1=Rothrock) nn_icestr = ', nn_icestr 144 WRITE(numout,*) ' Ratio of ridging work to PotEner change in ridging rn_pe_rdg = ', rn_pe_rdg 145 WRITE(numout,*) ' 1st bulk-rheology parameter rn_pstar = ', rn_pstar 146 WRITE(numout,*) ' 2nd bulk-rhelogy parameter rn_crhg = ', rn_crhg 147 WRITE(numout,*) ' brine volume included in ice strength computation ln_icestr_bvf = ', ln_icestr_bvf 148 WRITE(numout,*) ' rheology EVP (icerhg_evp)' 136 WRITE(numout,*) ' Namelist namice_rhg' 137 WRITE(numout,*) ' rheology EVP (icerhg_evp)' 149 138 WRITE(numout,*) ' lateral boundary condition for sea ice dynamics rn_ishlat = ', rn_ishlat 150 139 WRITE(numout,*) ' drag coefficient for oceanic stress rn_cio = ', rn_cio -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerhg_evp.F90
r8500 r8512 52 52 CONTAINS 53 53 54 SUBROUTINE ice_rhg_evp( stress1_i, stress2_i, stress12_i, u_ice, v_ice, shear_i, divu_i, delta_i )54 SUBROUTINE ice_rhg_evp( kt, stress1_i, stress2_i, stress12_i, u_ice, v_ice, shear_i, divu_i, delta_i ) 55 55 !!------------------------------------------------------------------- 56 56 !! *** SUBROUTINE ice_rhg_evp *** … … 107 107 !! Bouillon et al., Ocean Modelling 2013 108 108 !!------------------------------------------------------------------- 109 INTEGER, INTENT(in) :: kt ! time step 109 110 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: stress1_i, stress2_i, stress12_i 110 111 REAL(wp), DIMENSION(jpi,jpj), INTENT( out) :: u_ice, v_ice, shear_i, divu_i, delta_i … … 174 175 !!------------------------------------------------------------------- 175 176 177 IF( kt == nit000 .AND. lwp ) WRITE(numout,*) '-- ice_rhg_evp: EVP sea-ice rheology' 178 176 179 #if defined key_agrif 177 180 CALL agrif_interp_lim3( 'U', 0, nn_nevp ) ! First interpolation of coarse values … … 249 252 250 253 ! Ice strength 251 CALL ice_rdgrft_ icestrength( nn_icestr )254 CALL ice_rdgrft_strength 252 255 253 256 ! scale factors -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerst.F90
r8486 r8512 188 188 ! In case Prather scheme is used for advection, write second order moments 189 189 ! ------------------------------------------------------------------------ 190 IF( nn_limadv == -1) THEN190 IF( ln_adv_Pra ) THEN 191 191 192 192 DO jl = 1, jpl … … 461 461 ! In case Prather scheme is used for advection, read second order moments 462 462 ! ------------------------------------------------------------------------ 463 IF( nn_limadv == -1) THEN463 IF( ln_adv_Pra ) THEN 464 464 465 465 DO jl = 1, jpl -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90
r8505 r8512 76 76 PUBLIC ice_init ! called by sbcmod.F90 77 77 78 INTEGER :: nice_dyn ! choice of the type of advection scheme79 ! ! associated indices:80 INTEGER, PARAMETER :: np_dynNO = 0 ! no ice dynamics and ice advection81 INTEGER, PARAMETER :: np_dynFULL = 1 ! full ice dynamics (rheology + advection + ridging/rafting + correction)82 INTEGER, PARAMETER :: np_dyn = 2 ! no ridging/rafting (rheology + advection + correction)83 INTEGER, PARAMETER :: np_dynPURE = 3 ! pure dynamics (rheology + advection)84 85 78 !! * Substitutions 86 79 # include "vectopt_loop_substitute.h90" … … 161 154 CALL ice_adv ( kt ) ! -- advection of ice 162 155 CALL ice_cor ( kt , 1 ) ! -- Corrections 163 CASE ( np_dynPURE ) !== pure dynamics only ==! (nn_ limdyn= 0 or 1 )156 CASE ( np_dynPURE ) !== pure dynamics only ==! (nn_icedyn= 0 or 1 ) 164 157 CALL ice_rhg ( kt ) ! -- rheology 165 158 CALL ice_adv ( kt ) ! -- advection of ice … … 239 232 ! Update surface ocean stresses (only in ice-dynamic case) otherwise the atm.-ocean stresses are used everywhere 240 233 ! using before instantaneous surf. currents 241 IF( ln_ limdyn ) CALL ice_update_tau( kt, ub(:,:,1), vb(:,:,1) )234 IF( ln_icedyn ) CALL ice_update_tau( kt, ub(:,:,1), vb(:,:,1) ) 242 235 !!gm remark, the ocean-ice stress is not saved in ice diag call above ..... find a solution!!! 243 236 ! … … 270 263 ierr = ierr + sbc_ice_alloc () ! surface forcing 271 264 ierr = ierr + ice1D_alloc () ! thermodynamics 272 IF( ln_limdyn )ierr = ierr + ice_rdgrft_alloc () ! ridging/rafting265 ierr = ierr + ice_rdgrft_alloc () ! ridging/rafting 273 266 ! 274 267 IF( lk_mpp ) CALL mpp_sum( ierr ) 275 268 IF( ierr /= 0 ) CALL ctl_stop('STOP', 'ice_init : unable to allocate ice arrays') 276 269 ! 277 CALL ice_rhg_init ! set ice dynamics parameters278 !279 270 CALL ice_itd_init ! ice thickness distribution initialization 271 ! 272 CALL ice_rdgrft_init ! set ice ridging/rafting parameters 273 ! 274 CALL ice_rhg_init ! set ice rheology parameters 275 ! 276 CALL ice_adv_init ! set ice advection parameters 280 277 ! 281 278 CALL ice_thd_init ! set ice thermodynics parameters … … 286 283 CALL lim_mp_init ! set melt ponds parameters 287 284 ! END MV MP 2016 288 289 IF( ln_limdyn ) CALL ice_rdgrft_init ! ice thickness distribution initialization for ridging/rafting290 285 ! ! Initial sea-ice state 291 286 IF( .NOT. ln_rstart ) THEN ! start from rest: sea-ice deduced from sst … … 323 318 !! ** Purpose : Definition some run parameter for ice model 324 319 !! 325 !! ** Method : Read the namice run namelist and check the parameter320 !! ** Method : Read the namice_run namelist and check the parameter 326 321 !! values called at the first timestep (nit000) 327 322 !! 328 !! ** input : Namelist namice run323 !! ** input : Namelist namice_run 329 324 !!------------------------------------------------------------------- 330 325 INTEGER :: ios ! Local integer output status for namelist read 331 NAMELIST/namice run/ jpl, nlay_i, nlay_s, nn_monocat, rn_amax_n, rn_amax_s, cn_icerst_in, cn_icerst_indir, &332 & cn_icerst_out, cn_icerst_outdir , ln_limthd, ln_limdyn, nn_limdyn, rn_uice, rn_vice326 NAMELIST/namice_run/ jpl, nlay_i, nlay_s, nn_monocat, rn_amax_n, rn_amax_s, cn_icerst_in, cn_icerst_indir, & 327 & cn_icerst_out, cn_icerst_outdir 333 328 !!------------------------------------------------------------------- 334 329 ! 335 REWIND( numnam_ice_ref ) ! Namelist namice run in reference namelist : Parameters for ice336 READ ( numnam_ice_ref, namice run, IOSTAT = ios, ERR = 901)337 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice run in reference namelist', lwp )338 339 REWIND( numnam_ice_cfg ) ! Namelist namice run in configuration namelist : Parameters for ice340 READ ( numnam_ice_cfg, namice run, IOSTAT = ios, ERR = 902 )341 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice run in configuration namelist', lwp )342 IF(lwm) WRITE ( numoni, namice run )330 REWIND( numnam_ice_ref ) ! Namelist namice_run in reference namelist : Parameters for ice 331 READ ( numnam_ice_ref, namice_run, IOSTAT = ios, ERR = 901) 332 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_run in reference namelist', lwp ) 333 334 REWIND( numnam_ice_cfg ) ! Namelist namice_run in configuration namelist : Parameters for ice 335 READ ( numnam_ice_cfg, namice_run, IOSTAT = ios, ERR = 902 ) 336 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_run in configuration namelist', lwp ) 337 IF(lwm) WRITE ( numoni, namice_run ) 343 338 ! 344 339 IF(lwp) THEN ! control print … … 346 341 WRITE(numout,*) 'ice_run_init : ice share parameters for dynamics/advection/thermo of sea-ice' 347 342 WRITE(numout,*) ' ~~~~~~' 348 WRITE(numout,*) ' Namelist namice run : '343 WRITE(numout,*) ' Namelist namice_run : ' 349 344 WRITE(numout,*) ' number of ice categories jpl = ', jpl 350 345 WRITE(numout,*) ' number of ice layers nlay_i = ', nlay_i … … 353 348 WRITE(numout,*) ' maximum ice concentration for NH = ', rn_amax_n 354 349 WRITE(numout,*) ' maximum ice concentration for SH = ', rn_amax_s 355 WRITE(numout,*) ' Ice thermodynamics (T) or not (F) ln_limthd = ', ln_limthd356 WRITE(numout,*) ' Ice dynamics (T) or not (F) ln_limdyn = ', ln_limdyn357 WRITE(numout,*) ' associated switch nn_limdyn = ', nn_limdyn358 WRITE(numout,*) ' =2 all processes (default option)'359 WRITE(numout,*) ' =1 advection only (no ridging/rafting)'360 WRITE(numout,*) ' =0 advection only with prescribed velocity given by '361 WRITE(numout,*) ' a uniform field (u,v)_ice = (rn_uice,rn_vice) = (', rn_uice,',', rn_vice,')'362 350 ENDIF 363 351 ! … … 373 361 ! 374 362 IF( ln_bdy .AND. ln_limdiachk ) CALL ctl_warn('ice_run_init: online conservation check does not work with BDY') 375 !376 ! ! set the choice of ice dynamics377 IF( lk_c1d .OR. .NOT.ln_limdyn ) THEN378 nice_dyn = np_dynNO !--- no dynamics379 ELSE380 SELECT CASE( nn_limdyn )381 CASE( 2 )382 IF( nn_monocat /= 2 ) THEN !--- full dynamics (rheology + advection + ridging/rafting + correction)383 nice_dyn = np_dynFULL384 ELSE385 nice_dyn = np_dyn !--- dynamics without ridging/rafting386 ENDIF387 CASE( 0 , 1 ) !--- dynamics without ridging/rafting and correction388 nice_dyn = np_dynPURE389 END SELECT390 ENDIF391 ! !--- simple conservative piling, comparable with LIM2392 l_piling = nn_limdyn == 1 .OR. ( nn_monocat == 2 .AND. jpl == 1 )393 363 ! 394 364 rdt_ice = REAL(nn_fsbc) * rdt !--- sea-ice timestep and inverse -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd.F90
r8506 r8512 26 26 USE sbc_oce , ONLY : sss_m, sst_m, e3t_m, utau, vtau, ssu_m, ssv_m, frq_m, qns_tot, qsr_tot, sprecip, ln_cpl 27 27 USE sbc_ice , ONLY : qsr_oce, qns_oce, qemp_oce, qsr_ice, qns_ice, dqns_ice, evap_ice, qprec_ice, qevap_ice, & 28 & fr1_i0, fr2_i0 , nn_limflx28 & fr1_i0, fr2_i0 29 29 USE ice1D ! thermodynamic sea-ice variables 30 30 USE icethd_dif ! vertical diffusion … … 92 92 IF( kt == nit000 .AND. lwp ) THEN 93 93 WRITE(numout,*) 94 WRITE(numout,*) ' icethd: sea-ice thermodynamics'95 WRITE(numout,*) ' ~~~~~~~~'94 WRITE(numout,*) 'ice_thd: sea-ice thermodynamics' 95 WRITE(numout,*) '~~~~~~~' 96 96 ENDIF 97 97 … … 104 104 ! computation of friction velocity at T points 105 105 !---------------------------------------------! 106 IF( ln_ limdyn ) THEN106 IF( ln_icedyn ) THEN 107 107 zu_io(:,:) = u_ice(:,:) - ssu_m(:,:) 108 108 zv_io(:,:) = v_ice(:,:) - ssv_m(:,:) … … 532 532 !! thermodynamics 533 533 !! 534 !! ** Method : Read the namice thd namelist and check the ice-thermo534 !! ** Method : Read the namice_thd namelist and check the ice-thermo 535 535 !! parameter values called at the first timestep (nit000) 536 536 !! … … 539 539 INTEGER :: ios ! Local integer output status for namelist read 540 540 !! 541 NAMELIST/namice thd/ rn_kappa_i, nn_ice_thcon, ln_dqnsice, rn_cdsn,&541 NAMELIST/namice_thd/ ln_limthd, rn_kappa_i, nn_ice_thcon, ln_dqnsice, rn_cdsn, & 542 542 & ln_limdH, rn_betas, & 543 543 & ln_limdA, rn_beta, rn_dmin, & … … 546 546 !!------------------------------------------------------------------- 547 547 ! 548 REWIND( numnam_ice_ref ) ! Namelist namice thd in reference namelist : Ice thermodynamics549 READ ( numnam_ice_ref, namice thd, IOSTAT = ios, ERR = 901)550 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice thd in reference namelist', lwp )551 552 REWIND( numnam_ice_cfg ) ! Namelist namice thd in configuration namelist : Ice thermodynamics553 READ ( numnam_ice_cfg, namice thd, IOSTAT = ios, ERR = 902 )554 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice thd in configuration namelist', lwp )555 IF(lwm) WRITE ( numoni, namice thd )548 REWIND( numnam_ice_ref ) ! Namelist namice_thd in reference namelist : Ice thermodynamics 549 READ ( numnam_ice_ref, namice_thd, IOSTAT = ios, ERR = 901) 550 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_thd in reference namelist', lwp ) 551 552 REWIND( numnam_ice_cfg ) ! Namelist namice_thd in configuration namelist : Ice thermodynamics 553 READ ( numnam_ice_cfg, namice_thd, IOSTAT = ios, ERR = 902 ) 554 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_thd in configuration namelist', lwp ) 555 IF(lwm) WRITE ( numoni, namice_thd ) 556 556 ! 557 557 ! … … 559 559 WRITE(numout,*) 'ice_thd_init : Ice Thermodynamics' 560 560 WRITE(numout,*) '~~~~~~~~~~~~~' 561 WRITE(numout,*)' Namelist namicethd' 562 WRITE(numout,*)' -- icethd_dif --' 563 WRITE(numout,*)' extinction radiation parameter in sea ice rn_kappa_i = ', rn_kappa_i 564 WRITE(numout,*)' switch for comp. of thermal conductivity in the ice nn_ice_thcon = ', nn_ice_thcon 565 WRITE(numout,*)' change the surface non-solar flux with Tsu or not ln_dqnsice = ', ln_dqnsice 566 WRITE(numout,*)' thermal conductivity of the snow rn_cdsn = ', rn_cdsn 567 WRITE(numout,*)' -- icethd_dh --' 568 WRITE(numout,*)' activate ice thick change from top/bot (T) or not (F) ln_limdH = ', ln_limdH 569 WRITE(numout,*)' coefficient for ice-lead partition of snowfall rn_betas = ', rn_betas 570 WRITE(numout,*)' -- icethd_da --' 571 WRITE(numout,*)' activate lateral melting (T) or not (F) ln_limdA = ', ln_limdA 572 WRITE(numout,*)' Coef. beta for lateral melting param. rn_beta = ', rn_beta 573 WRITE(numout,*)' Minimum floe diameter for lateral melting param. rn_dmin = ', rn_dmin 574 WRITE(numout,*)' -- icethd_lac --' 575 WRITE(numout,*)' activate ice growth in open-water (T) or not (F) ln_limdO = ', ln_limdO 576 WRITE(numout,*)' ice thickness for lateral accretion rn_hnewice = ', rn_hnewice 577 WRITE(numout,*)' Frazil ice thickness as a function of wind or not ln_frazil = ', ln_frazil 578 WRITE(numout,*)' Maximum proportion of frazil ice collecting at bottom rn_maxfrazb = ', rn_maxfrazb 579 WRITE(numout,*)' Threshold relative drift speed for collection of frazil rn_vfrazb = ', rn_vfrazb 580 WRITE(numout,*)' Squeezing coefficient for collection of frazil rn_Cfrazb = ', rn_Cfrazb 581 WRITE(numout,*)' -- iceitd --' 582 WRITE(numout,*)' minimum ice thickness rn_himin = ', rn_himin 583 WRITE(numout,*)' -- icestp --' 584 WRITE(numout,*)' Multicategory heat flux formulation nn_limflx = ', nn_limflx 561 WRITE(numout,*) ' Namelist namice_thd' 562 WRITE(numout,*) ' Ice thermodynamics (T) or not (F) ln_limthd = ', ln_limthd 563 WRITE(numout,*) ' -- icethd_dif --' 564 WRITE(numout,*) ' extinction radiation parameter in sea ice rn_kappa_i = ', rn_kappa_i 565 WRITE(numout,*) ' switch for comp. of thermal conductivity in the ice nn_ice_thcon = ', nn_ice_thcon 566 WRITE(numout,*) ' change the surface non-solar flux with Tsu or not ln_dqnsice = ', ln_dqnsice 567 WRITE(numout,*) ' thermal conductivity of the snow rn_cdsn = ', rn_cdsn 568 WRITE(numout,*) ' -- icethd_dh --' 569 WRITE(numout,*) ' activate ice thick change from top/bot (T) or not (F) ln_limdH = ', ln_limdH 570 WRITE(numout,*) ' coefficient for ice-lead partition of snowfall rn_betas = ', rn_betas 571 WRITE(numout,*) ' -- icethd_da --' 572 WRITE(numout,*) ' activate lateral melting (T) or not (F) ln_limdA = ', ln_limdA 573 WRITE(numout,*) ' Coef. beta for lateral melting param. rn_beta = ', rn_beta 574 WRITE(numout,*) ' Minimum floe diameter for lateral melting param. rn_dmin = ', rn_dmin 575 WRITE(numout,*) ' -- icethd_lac --' 576 WRITE(numout,*) ' activate ice growth in open-water (T) or not (F) ln_limdO = ', ln_limdO 577 WRITE(numout,*) ' ice thickness for lateral accretion rn_hnewice = ', rn_hnewice 578 WRITE(numout,*) ' Frazil ice thickness as a function of wind or not ln_frazil = ', ln_frazil 579 WRITE(numout,*) ' Maximum proportion of frazil ice collecting at bottom rn_maxfrazb = ', rn_maxfrazb 580 WRITE(numout,*) ' Threshold relative drift speed for collection of frazil rn_vfrazb = ', rn_vfrazb 581 WRITE(numout,*) ' Squeezing coefficient for collection of frazil rn_Cfrazb = ', rn_Cfrazb 582 WRITE(numout,*) ' -- iceitd --' 583 WRITE(numout,*) ' minimum ice thickness rn_himin = ', rn_himin 584 WRITE(numout,*) ' -- icestp --' 585 WRITE(numout,*) ' Multicategory heat flux formulation nn_limflx = ', nn_limflx 585 586 ENDIF 586 587 ! -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_sal.F90
r8498 r8512 107 107 !! ** Purpose : initialization of ice salinity parameters 108 108 !! 109 !! ** Method : Read the namice sal namelist and check the parameter109 !! ** Method : Read the namice_sal namelist and check the parameter 110 110 !! values called at the first timestep (nit000) 111 111 !! 112 !! ** input : Namelist namice sal112 !! ** input : Namelist namice_sal 113 113 !!------------------------------------------------------------------- 114 114 INTEGER :: ios ! Local integer output status for namelist read 115 115 !! 116 NAMELIST/namice sal/ ln_limdS , nn_icesal , rn_icesal, rn_sal_gd, rn_time_gd, &116 NAMELIST/namice_sal/ ln_limdS , nn_icesal , rn_icesal, rn_sal_gd, rn_time_gd, & 117 117 & rn_sal_fl, rn_time_fl, rn_simax , rn_simin 118 118 !!------------------------------------------------------------------- 119 119 ! 120 REWIND( numnam_ice_ref ) ! Namelist namice sal in reference namelist : Ice salinity121 READ ( numnam_ice_ref, namice sal, IOSTAT = ios, ERR = 901)122 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice sal in reference namelist', lwp )120 REWIND( numnam_ice_ref ) ! Namelist namice_sal in reference namelist : Ice salinity 121 READ ( numnam_ice_ref, namice_sal, IOSTAT = ios, ERR = 901) 122 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_sal in reference namelist', lwp ) 123 123 ! 124 REWIND( numnam_ice_cfg ) ! Namelist namice sal in configuration namelist : Ice salinity125 READ ( numnam_ice_cfg, namice sal, IOSTAT = ios, ERR = 902 )126 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice sal in configuration namelist', lwp )127 IF(lwm) WRITE ( numoni, namice sal )124 REWIND( numnam_ice_cfg ) ! Namelist namice_sal in configuration namelist : Ice salinity 125 READ ( numnam_ice_cfg, namice_sal, IOSTAT = ios, ERR = 902 ) 126 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_sal in configuration namelist', lwp ) 127 IF(lwm) WRITE ( numoni, namice_sal ) 128 128 ! 129 129 IF(lwp) THEN ! control print … … 131 131 WRITE(numout,*) 'ice_thd_sal_init : Ice parameters for salinity ' 132 132 WRITE(numout,*) '~~~~~~~~~~~~~~~~' 133 WRITE(numout,*) ' activate gravity drainage and flushing (T) or not (F) ln_limdS = ', ln_limdS 134 WRITE(numout,*) ' switch for salinity nn_icesal = ', nn_icesal 135 WRITE(numout,*) ' bulk salinity value if nn_icesal = 1 rn_icesal = ', rn_icesal 136 WRITE(numout,*) ' restoring salinity for gravity drainage rn_sal_gd = ', rn_sal_gd 137 WRITE(numout,*) ' restoring time for for gravity drainage rn_time_gd = ', rn_time_gd 138 WRITE(numout,*) ' restoring salinity for flushing rn_sal_fl = ', rn_sal_fl 139 WRITE(numout,*) ' restoring time for flushing rn_time_fl = ', rn_time_fl 140 WRITE(numout,*) ' Maximum tolerated ice salinity rn_simax = ', rn_simax 141 WRITE(numout,*) ' Minimum tolerated ice salinity rn_simin = ', rn_simin 133 WRITE(numout,*) ' Namelist namice_sal' 134 WRITE(numout,*) ' activate gravity drainage and flushing (T) or not (F) ln_limdS = ', ln_limdS 135 WRITE(numout,*) ' switch for salinity nn_icesal = ', nn_icesal 136 WRITE(numout,*) ' bulk salinity value if nn_icesal = 1 rn_icesal = ', rn_icesal 137 WRITE(numout,*) ' restoring salinity for gravity drainage rn_sal_gd = ', rn_sal_gd 138 WRITE(numout,*) ' restoring time for for gravity drainage rn_time_gd = ', rn_time_gd 139 WRITE(numout,*) ' restoring salinity for flushing rn_sal_fl = ', rn_sal_fl 140 WRITE(numout,*) ' restoring time for flushing rn_time_fl = ', rn_time_fl 141 WRITE(numout,*) ' Maximum tolerated ice salinity rn_simax = ', rn_simax 142 WRITE(numout,*) ' Minimum tolerated ice salinity rn_simin = ', rn_simin 142 143 ENDIF 143 144 ! -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/iceupdate.F90
r8498 r8512 116 116 IF( kt == nit000 .AND. lwp ) THEN 117 117 WRITE(numout,*) 118 WRITE(numout,*)'ice_update_flx '118 WRITE(numout,*)'ice_update_flx: update fluxes (mass, salt and heat) at the ice-ocean interface' 119 119 WRITE(numout,*)'~~~~~~~~~~~~~~' 120 120 ENDIF … … 255 255 IF( kt == nit000 .AND. lwp ) THEN 256 256 WRITE(numout,*) 257 WRITE(numout,*)'ice_update_tau '257 WRITE(numout,*)'ice_update_tau: update stress at the ice-ocean interface' 258 258 WRITE(numout,*)'~~~~~~~~~~~~~~' 259 259 ENDIF … … 314 314 ! 315 315 IF(lwp) WRITE(numout,*) 316 IF(lwp) WRITE(numout,*) 'ice_update_init : sea-ice ????'317 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~ 316 IF(lwp) WRITE(numout,*) 'ice_update_init: ???? ' 317 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~' 318 318 319 319 ! ! allocate ice_update array -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r8376 r8512 68 68 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_oce !: evap - precip over ocean [kg/m2/s] 69 69 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wndm_ice !: wind speed module at T-point [m/s] 70 INTEGER , PUBLIC :: nn_limflx !: LIM3 Multi-category heat flux formulation71 ! ! =-1 Use of per-category fluxes72 ! ! = 0 Average per-category fluxes73 ! ! = 1 Average then redistribute per-category fluxes74 ! ! = 2 Redistribute a single flux over categories75 70 #endif 76 71
Note: See TracChangeset
for help on using the changeset viewer.