130 REAL,
PARAMETER,
PRIVATE ::
z_=-huge(0.0)
202 SUBROUTINE flake_radflux(depth_w,albedo,opticpar_water,opticpar_ice,opticpar_snow)
260 REAL,
INTENT(IN) :: &
273 REAL(KIND=JPRB) :: ZHOOK_HANDLE
279 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_RADFLUX',0,zhook_handle)
284 DO i=1, opticpar_snow%nband_optic
286 opticpar_snow%frac_optic(i)*exp(-opticpar_snow%extincoef_optic(i)*
h_snow_p_flk)
294 DO i=1, opticpar_ice%nband_optic
296 opticpar_ice%frac_optic(i)*exp(-opticpar_ice%extincoef_optic(i)*
h_ice_p_flk)
307 DO i=1, opticpar_water%nband_optic
309 opticpar_water%frac_optic(i)*exp(-opticpar_water%extincoef_optic(i)*
h_ml_p_flk)
317 DO i=1, opticpar_water%nband_optic
319 opticpar_water%frac_optic(i)*exp(-opticpar_water%extincoef_optic(i)*depth_w)
325 DO i=1, opticpar_water%nband_optic
327 opticpar_water%frac_optic(i)/opticpar_water%extincoef_optic(i)* &
328 (1. - exp(-opticpar_water%extincoef_optic(i)*
h_ml_p_flk))
337 DO i=1, opticpar_water%nband_optic
339 opticpar_water%frac_optic(i)/opticpar_water%extincoef_optic(i)* &
340 ( exp(-opticpar_water%extincoef_optic(i)*
h_ml_p_flk) &
341 - exp(-opticpar_water%extincoef_optic(i)*depth_w) )
347 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_RADFLUX',1,zhook_handle)
364 SUBROUTINE flake_driver ( depth_w, depth_bs, T_bs, par_Coriolis, &
365 extincoef_water_typ, &
366 del_time, T_sfc_p, T_sfc_n )
429 REAL,
INTENT(IN) :: &
435 extincoef_water_typ , &
443 REAL,
INTENT(OUT) :: &
485 REAL(KIND=JPRB) :: ZHOOK_HANDLE
503 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_DRIVER',0,zhook_handle)
589 l_ice_create = .false.
590 l_ice_meltabove = .false.
595 IF(l_ice_create)
THEN 619 IF(l_snow_exists)
THEN 621 IF(flk_str_1.GE.0.)
THEN 622 l_ice_meltabove = .true.
628 IF(flk_str_1.GE.0.)
THEN 629 l_ice_meltabove = .true.
634 IF(l_ice_meltabove)
THEN 643 no_melting:
IF(.NOT.l_ice_meltabove)
THEN 648 flk_str_1 = flk_str_1/(1.-flk_str_1)
662 h_ice_threshold = sqrt(h_ice_threshold*del_time)
668 IF(l_snow_exists)
THEN 685 IF(l_snow_exists)
THEN 698 r_tstar_icesnow = r_tstar_icesnow*r_ti_icesnow
709 r_tstar_icesnow = r_tstar_icesnow*r_ti_icesnow
715 * (1.-r_tstar_icesnow)
716 d_t_ice_dt = d_t_ice_dt - r_tstar_icesnow*
q_w_flk 717 d_t_ice_dt = d_t_ice_dt + flk_str_2
719 d_t_ice_dt = d_t_ice_dt/flk_str_1
755 l_ice_create = .false.
784 IF(l_ice_create)
THEN 820 IF(flk_str_1.LT.0.)
THEN 833 IF(conv_equil_h_scale.GT.0. .AND. conv_equil_h_scale.LT.1. &
835 conv_equil_h_scale = sqrt(6.*conv_equil_h_scale) &
836 + 2.*conv_equil_h_scale/(1.-conv_equil_h_scale)
837 conv_equil_h_scale = min(depth_w, conv_equil_h_scale/extincoef_water_typ)
839 conv_equil_h_scale = 0.
845 n_t_mean = sqrt(n_t_mean/(depth_w-
h_ml_p_flk))
856 d_c_t_dt = min(d_c_t_dt,0.01/del_time)
864 mixing_regime:
IF(flk_str_1.LT.0.)
THEN 882 r_rho_c_icesnow = r_h_icesnow-1.
884 r_tstar_icesnow = (r_ti_icesnow/2.-1.)*r_rho_c_icesnow + 1.
888 d_h_ml_dt = d_h_ml_dt + flk_str_2
892 d_h_ml_dt = d_h_ml_dt + flk_str_2
895 d_h_ml_dt = d_h_ml_dt/flk_str_2
928 zm_h_scale = zm_h_scale + flk_str_1/
c_sbl_zm_s 930 zm_h_scale = d_h_ml_dt**3/zm_h_scale
932 zm_h_scale = max(zm_h_scale, conv_equil_h_scale)
942 d_h_ml_dt =
c_relax_h*d_h_ml_dt/zm_h_scale*del_time
964 r_rho_c_icesnow = 1.-r_h_icesnow
967 r_ti_icesnow = (1.-
c_t_p_flk*r_rho_c_icesnow)/r_ti_icesnow
971 d_t_bot_dt = d_t_bot_dt*r_tstar_icesnow/depth_w
975 d_t_bot_dt = d_t_bot_dt + flk_str_2
979 d_t_bot_dt = d_t_bot_dt + flk_str_2
1021 h_ice_threshold = sqrt(flk_str_1)
1022 h_ice_threshold = min(0.9*depth_bs, h_ice_threshold)
1032 d_h_b1_dt = flk_str_1/d_h_b1_dt
1035 d_t_b1_dt = flk_str_2*d_h_b1_dt
1047 IF(l_snow_exists)
THEN 1066 IF(flk_str_2.LT.0.)
THEN 1089 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_DRIVER',1,zhook_handle)
1159 REAL ,
INTENT(IN) :: &
1165 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1173 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_BUOYPAR',0,zhook_handle)
1174 flake_buoypar =
tpl_grav*tpl_a_t*(t_water-tpl_t_r)
1175 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_BUOYPAR',1,zhook_handle)
1245 REAL ,
INTENT(IN) :: &
1251 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1260 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_SNOWDENSITY',0,zhook_handle)
1261 flake_snowdensity = max( c_small_flk, (1. - h_snow*tpl_gamma_rho_s/
tpl_rho_w_r) )
1262 flake_snowdensity = min( tpl_rho_s_max, tpl_rho_s_min/flake_snowdensity )
1263 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_SNOWDENSITY',1,zhook_handle)
1332 REAL ,
INTENT(IN) :: &
1337 flake_snowheatconduct
1338 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1346 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_SNOWHEATCONDUCT',0,zhook_handle)
1348 flake_snowheatconduct = min( tpl_kappa_s_max, tpl_kappa_s_min &
1349 + h_snow*tpl_gamma_kappa_s*flake_snowheatconduct/
tpl_rho_w_r )
1350 IF (
lhook)
CALL dr_hook(
'FLAKE:FLAKE_SNOWHEATCONDUCT',1,zhook_handle)
real, parameter h_ml_max_flk
real, parameter phi_i_pr0_lin
real, parameter tpl_gamma_rho_s
subroutine flake_radflux(depth_w, albedo, opticpar_water, opticpar_ice, opticpar_snow)
subroutine flake_driver(depth_w, depth_bs, T_bs, par_Coriolis, extincoef_water_typ, del_time, T_sfc_p, T_sfc_n)
real, parameter tpl_rho_i
real, parameter phi_t_pr0_2
real, parameter c_sbl_zm_s
real, parameter, private z_
real, parameter h_ice_min_flk
real, parameter tpl_rho_s_max
real, parameter phi_b1_pr0
real, parameter c_sbl_zm_i
real, parameter h_snow_min_flk
real, parameter tpl_kappa_w
real function flake_buoypar(T_water)
real, parameter tpl_rho_s_min
real, parameter tpl_kappa_i
real, parameter c_sbl_zm_n
real, parameter phi_i_ast_mr
real function flake_snowdensity(h_snow)
real function flake_snowheatconduct(h_snow)
real, parameter phi_t_pr0_1
real, parameter h_ice_max
real, parameter h_b1_min_flk
real, parameter phi_s_pr0_lin
real, parameter tpl_rho_w_r
real, parameter c_relax_h
real, parameter u_star_min_flk
real, parameter c_small_flk
real, parameter phi_i_pr1_lin
real, parameter h_ml_min_flk
real, parameter c_relax_c