Changeset 14072 for NEMO/trunk/src/ICE/ice.F90
- Timestamp:
- 2020-12-04T08:48:38+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/ICE/ice.F90
r14006 r14072 64 64 !! sv_i | - | Sea ice salt content | pss.m | 65 65 !! oa_i | - | Sea ice areal age content | s | 66 !! e_i | | Ice enthalpy | J/m2 | 67 !! | e_i_1d | Ice enthalpy per unit vol. | J/m3 | 68 !! e_s | | Snow enthalpy | J/m2 | 69 !! | e_s_1d | Snow enthalpy per unit vol. | J/m3 | 66 !! e_i | | Ice enthalpy | J/m2 | 67 !! | e_i_1d | Ice enthalpy per unit vol. | J/m3 | 68 !! e_s | | Snow enthalpy | J/m2 | 69 !! | e_s_1d | Snow enthalpy per unit vol. | J/m3 | 70 70 !! a_ip | - | Ice pond concentration | | 71 71 !! v_ip | - | Ice pond volume per unit area| m | … … 108 108 !! tm_i | - | Mean sea ice temperature | K | 109 109 !! tm_s | - | Mean snow temperature | K | 110 !! et_i | - | Total ice enthalpy | J/m2 | 111 !! et_s | - | Total snow enthalpy | J/m2 | 112 !! bv_i | - | relative brine volume | ??? | 110 !! et_i | - | Total ice enthalpy | J/m2 | 111 !! et_s | - | Total snow enthalpy | J/m2 | 112 !! bv_i | - | relative brine volume | ??? | 113 113 !! at_ip | - | Total ice pond concentration | | 114 114 !! hm_ip | - | Mean ice pond depth | m | … … 122 122 !!---------------------------------------------------------------------- 123 123 ! !!** ice-generic parameters namelist (nampar) ** 124 INTEGER , PUBLIC :: jpl !: number of ice categories 125 INTEGER , PUBLIC :: nlay_i !: number of ice layers 126 INTEGER , PUBLIC :: nlay_s !: number of snow layers 124 INTEGER , PUBLIC :: jpl !: number of ice categories 125 INTEGER , PUBLIC :: nlay_i !: number of ice layers 126 INTEGER , PUBLIC :: nlay_s !: number of snow layers 127 127 LOGICAL , PUBLIC :: ln_virtual_itd !: virtual ITD mono-category parameterization (T) or not (F) 128 128 LOGICAL , PUBLIC :: ln_icedyn !: flag for ice dynamics (T) or not (F) … … 137 137 ! !!** ice-itd namelist (namitd) ** 138 138 REAL(wp), PUBLIC :: rn_himin !: minimum ice thickness 139 139 140 140 ! !!** ice-dynamics namelist (namdyn) ** 141 141 REAL(wp), PUBLIC :: rn_ishlat !: lateral boundary condition for sea-ice 142 LOGICAL , PUBLIC :: ln_landfast_L16 !: landfast ice parameterizationfrom lemieux2016 142 LOGICAL , PUBLIC :: ln_landfast_L16 !: landfast ice parameterizationfrom lemieux2016 143 143 REAL(wp), PUBLIC :: rn_lf_depfra !: fraction of ocean depth that ice must reach to initiate landfast ice 144 REAL(wp), PUBLIC :: rn_lf_bfr !: maximum bottom stress per unit area of contact (lemieux2016) or per unit volume (home) 144 REAL(wp), PUBLIC :: rn_lf_bfr !: maximum bottom stress per unit area of contact (lemieux2016) or per unit volume (home) 145 145 REAL(wp), PUBLIC :: rn_lf_relax !: relaxation time scale (s-1) to reach static friction 146 146 REAL(wp), PUBLIC :: rn_lf_tensile !: isotropic tensile strength … … 153 153 LOGICAL , PUBLIC :: ln_rhg_EVP ! EVP rheology switch, used for rdgrft and rheology 154 154 LOGICAL , PUBLIC :: ln_rhg_EAP ! EAP rheology switch, used for rdgrft and rheology 155 LOGICAL , PUBLIC :: ln_aEVP !: using adaptive EVP (T or F) 155 LOGICAL , PUBLIC :: ln_aEVP !: using adaptive EVP (T or F) 156 156 REAL(wp), PUBLIC :: rn_creepl !: creep limit (has to be low enough, circa 10-9 m/s, depending on rheology) 157 157 REAL(wp), PUBLIC :: rn_ecc !: eccentricity of the elliptical yield curve 158 158 INTEGER , PUBLIC :: nn_nevp !: number of iterations for subcycling 159 REAL(wp), PUBLIC :: rn_relast !: ratio => telast/rDt_ice (1/3 or 1/9 depending on nb of subcycling nevp) 160 INTEGER , PUBLIC :: nn_rhg_chkcvg !: check ice rheology convergence 159 REAL(wp), PUBLIC :: rn_relast !: ratio => telast/rDt_ice (1/3 or 1/9 depending on nb of subcycling nevp) 160 INTEGER , PUBLIC :: nn_rhg_chkcvg !: check ice rheology convergence 161 161 ! -- vp 162 162 LOGICAL , PUBLIC :: ln_rhg_VP !: VP rheology … … 181 181 INTEGER , PUBLIC :: nn_flxdist !: Redistribute heat flux over ice categories 182 182 ! ! =-1 Do nothing (needs N(cat) fluxes) 183 ! ! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice 183 ! ! = 0 Average N(cat) fluxes then apply the average over the N(cat) ice 184 184 ! ! = 1 Average N(cat) fluxes then redistribute over the N(cat) ice using T-ice and albedo sensitivity 185 185 ! ! = 2 Redistribute a single flux over categories 186 186 ! -- icethd_zdf -- ! 187 LOGICAL , PUBLIC :: ln_cndflx !: use conduction flux as surface boundary condition (instead of qsr and qns) 188 LOGICAL , PUBLIC :: ln_cndemulate !: emulate conduction flux (if not provided) 187 LOGICAL , PUBLIC :: ln_cndflx !: use conduction flux as surface boundary condition (instead of qsr and qns) 188 LOGICAL , PUBLIC :: ln_cndemulate !: emulate conduction flux (if not provided) 189 189 ! ! Conduction flux as surface forcing or not 190 190 INTEGER, PUBLIC, PARAMETER :: np_cnd_OFF = 0 !: no forcing from conduction flux (ice thermodynamics forced via qsr and qns) … … 192 192 INTEGER, PUBLIC, PARAMETER :: np_cnd_EMU = 2 !: emulate conduction flux via icethd_zdf.F90 (BL99) (1st round compute qcn and qsr_tr, 2nd round use it) 193 193 INTEGER, PUBLIC :: nn_qtrice !: Solar flux transmitted thru the surface scattering layer: 194 ! ! = 0 Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow) 194 ! ! = 0 Grenfell and Maykut 1977 (depends on cloudiness and is 0 when there is snow) 195 195 ! ! = 1 Lebrun 2019 (equals 0.3 anytime with different melting/dry snw conductivities) 196 196 ! … … 198 198 LOGICAL , PUBLIC :: ln_cndi_U64 !: thermal conductivity: Untersteiner (1964) 199 199 LOGICAL , PUBLIC :: ln_cndi_P07 !: thermal conductivity: Pringle et al (2007) 200 REAL(wp), PUBLIC :: rn_cnd_s !: thermal conductivity of the snow [W/m/K] 200 REAL(wp), PUBLIC :: rn_cnd_s !: thermal conductivity of the snow [W/m/K] 201 201 REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation in sea ice, Grenfell et al. (2006) [1/m] 202 202 REAL(wp), PUBLIC :: rn_kappa_s !: coef. for the extinction of radiation in snw (nn_qtrice=0) [1/m] … … 236 236 INTEGER , PUBLIC :: jiceprt !: debug j-point 237 237 238 ! !!** some other parameters 238 ! !!** some other parameters 239 239 INTEGER , PUBLIC :: kt_ice !: iteration number 240 240 REAL(wp), PUBLIC :: rDt_ice !: ice time step 241 241 REAL(wp), PUBLIC :: r1_Dt_ice !: = 1. / rDt_ice 242 242 REAL(wp), PUBLIC :: r1_nlay_i !: 1 / nlay_i 243 REAL(wp), PUBLIC :: r1_nlay_s !: 1 / nlay_s 243 REAL(wp), PUBLIC :: r1_nlay_s !: 1 / nlay_s 244 244 REAL(wp), PUBLIC :: rswitch !: switch for the presence of ice (1) or not (0) 245 245 REAL(wp), PUBLIC :: rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft !: conservation diagnostics 246 REAL(wp), PUBLIC, PARAMETER :: epsi06 = 1.e-06_wp !: small number 247 REAL(wp), PUBLIC, PARAMETER :: epsi10 = 1.e-10_wp !: small number 248 REAL(wp), PUBLIC, PARAMETER :: epsi20 = 1.e-20_wp !: small number 246 REAL(wp), PUBLIC, PARAMETER :: epsi06 = 1.e-06_wp !: small number 247 REAL(wp), PUBLIC, PARAMETER :: epsi10 = 1.e-10_wp !: small number 248 REAL(wp), PUBLIC, PARAMETER :: epsi20 = 1.e-20_wp !: small number 249 249 250 250 ! !!** define arrays … … 259 259 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rdg_conv 260 260 ! 261 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: t_bo !: Sea-Ice bottom temperature [Kelvin] 261 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: t_bo !: Sea-Ice bottom temperature [Kelvin] 262 262 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qlead !: heat balance of the lead (or of the open ocean) 263 263 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qsb_ice_bot !: net downward heat flux from the ice to the ocean … … 306 306 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qt_atm_oi !: heat flux at the interface atm-[oce+ice] [W.m-2] 307 307 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qt_oce_ai !: heat flux at the interface oce-[atm+ice] [W.m-2] 308 308 309 309 ! heat flux associated with ice-atmosphere mass exchange 310 310 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_sub !: heat flux for sublimation [W.m-2] … … 389 389 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: u_ice_b, v_ice_b !: ice velocity 390 390 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: at_i_b !: ice concentration (total) 391 391 392 392 !!---------------------------------------------------------------------- 393 393 !! * Ice thickness distribution variables 394 394 !!---------------------------------------------------------------------- 395 395 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hi_max !: Boundary of ice thickness categories in thickness space 396 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hi_mean !: Mean ice thickness in catgories 396 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hi_mean !: Mean ice thickness in catgories 397 397 ! 398 398 !!---------------------------------------------------------------------- … … 405 405 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_trp_sv !: transport of salt content 406 406 ! 407 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_heat !: snw/ice heat content variation [W/m2] 408 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_sice !: ice salt content variation [] 409 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vice !: ice volume variation [m/s] 410 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vsnw !: snw volume variation [m/s] 411 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_aice !: ice conc. variation [s-1] 412 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vpnd !: pond volume variation [m/s] 407 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_heat !: snw/ice heat content variation [W/m2] 408 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_sice !: ice salt content variation [] 409 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vice !: ice volume variation [m/s] 410 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vsnw !: snw volume variation [m/s] 411 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_aice !: ice conc. variation [s-1] 412 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vpnd !: pond volume variation [m/s] 413 413 ! 414 414 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_adv_mass !: advection of mass (kg/m2/s) … … 430 430 !!---------------------------------------------------------------------- 431 431 ! Extra sea ice diagnostics to address the data request 432 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t_si !: Temperature at Snow-ice interface (K) 433 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_si !: mean temperature at the snow-ice interface (K) 432 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t_si !: Temperature at Snow-ice interface (K) 433 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_si !: mean temperature at the snow-ice interface (K) 434 434 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_bot !: Bottom conduction flux (W/m2) 435 435 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_top !: Surface conduction flux (W/m2) … … 469 469 & sfx_res (jpi,jpj) , sfx_bri (jpi,jpj) , sfx_dyn(jpi,jpj) , sfx_sub(jpi,jpj) , sfx_lam(jpi,jpj) , & 470 470 & sfx_bog (jpi,jpj) , sfx_bom (jpi,jpj) , sfx_sum(jpi,jpj) , sfx_sni(jpi,jpj) , sfx_opw(jpi,jpj) , & 471 & hfx_res (jpi,jpj) , hfx_snw (jpi,jpj) , hfx_sub(jpi,jpj) , & 471 & hfx_res (jpi,jpj) , hfx_snw (jpi,jpj) , hfx_sub(jpi,jpj) , & 472 472 & qt_atm_oi (jpi,jpj) , qt_oce_ai (jpi,jpj) , fhld (jpi,jpj) , & 473 473 & hfx_sum (jpi,jpj) , hfx_bom (jpi,jpj) , hfx_bog(jpi,jpj) , hfx_dif(jpi,jpj) , & … … 513 513 ii = ii + 1 514 514 ALLOCATE( u_ice_b(jpi,jpj) , v_ice_b(jpi,jpj) , at_i_b(jpi,jpj) , STAT=ierr(ii) ) 515 515 516 516 ! * Ice thickness distribution variables 517 517 ii = ii + 1 … … 520 520 ! * Ice diagnostics 521 521 ii = ii + 1 522 ALLOCATE( diag_trp_vi(jpi,jpj) , diag_trp_vs (jpi,jpj) , diag_trp_ei(jpi,jpj), & 522 ALLOCATE( diag_trp_vi(jpi,jpj) , diag_trp_vs (jpi,jpj) , diag_trp_ei(jpi,jpj), & 523 523 & diag_trp_es(jpi,jpj) , diag_trp_sv (jpi,jpj) , diag_heat (jpi,jpj), & 524 524 & diag_sice (jpi,jpj) , diag_vice (jpi,jpj) , diag_vsnw (jpi,jpj), diag_aice(jpi,jpj), diag_vpnd(jpi,jpj), & … … 527 527 ! * Ice conservation 528 528 ii = ii + 1 529 ALLOCATE( diag_v (jpi,jpj) , diag_s (jpi,jpj) , diag_t (jpi,jpj), & 529 ALLOCATE( diag_v (jpi,jpj) , diag_s (jpi,jpj) , diag_t (jpi,jpj), & 530 530 & diag_fv(jpi,jpj) , diag_fs(jpi,jpj) , diag_ft(jpi,jpj), STAT=ierr(ii) ) 531 531 532 532 ! * SIMIP diagnostics 533 533 ii = ii + 1
Note: See TracChangeset
for help on using the changeset viewer.