CLUBB includes an effect of 'splatting' of eddies near the surface and for stratocumulus inversions. This terms looks like
wp2_splat_term \propto -wp2 * turbulent_timescale * (d/dz(sqrt(wp2)))**2
there is a similar term for wp3
This term is then removed from wp2 and half is put to up2 and half to vp2
the relevant code for wp2 is
d_sqrt_wp2_dz = ddzt( sqrt( wp2_zt ) )
! The splatting term is clipped so that the incremental change doesn't exceed 5 times the
! value of wp2 itself. This prevents spikes in wp2 from being propagated to up2 and vp2.
! However, it does introduce undesired dependence on the time step.
! Someday we may wish to treat this term using a semi-implicit discretization.
wp2_splat = - wp2 * min( five/dt, C_wp2_splat * tau_zm * d_sqrt_wp2_dz**2 )
The code is identical for wp3_splat except the leading term is wp3. In this code block, tau_zm is the turbulent time scale on layer boundaries. This is a simple interpolation in most cases, it appears that they use a linear extrapolation at model top and they have a modification for the surface boundary condition, which is below
if ( wpthlp_sfc > zero ) then
usp2_sfc = four * ustar**2 + 0.3_core_rknd * wstar**2
vsp2_sfc = 1.75_core_rknd * ustar**2 + 0.3_core_rknd * wstar**2
else
usp2_sfc = four * ustar**2
vsp2_sfc = 1.75_core_rknd * ustar**2
endif
! Add effect of vertical compression of eddies on horizontal gustiness.
! First, ensure that wp2_sfc does not make the correlation
! of (w,thl) or (w,rt) outside (-1,1).
! Perhaps in the future we should also ensure that the correlations
! of (w,u) and (w,v) are not outside (-1,1).
min_wp2_sfc_val &
= max( w_tol_sqd, &
wprtp_sfc**2 / ( rtp2_sfc * max_mag_correlation_flux**2 ), &
wpthlp_sfc**2 / ( thlp2_sfc * max_mag_correlation_flux**2 ) )
if ( wp2_sfc + tau_zm_sfc * wp2_splat_sfc < min_wp2_sfc_val ) then
! splatting correction drives wp2_sfc to overly small value
wp2_splat_sfc_correction = -wp2_sfc + min_wp2_sfc_val
wp2_sfc = min_wp2_sfc_val
else
wp2_splat_sfc_correction = tau_zm_sfc * wp2_splat_sfc
wp2_sfc = wp2_sfc + wp2_splat_sfc_correction
end if
usp2_sfc = usp2_sfc - 0.5_core_rknd * wp2_splat_sfc_correction
vsp2_sfc = vsp2_sfc - 0.5_core_rknd * wp2_splat_sfc_correction
At the top note they use something similar to what is proposed and appears to be straight from Andre et al 1978. There is another non-Andre et al version
! Surface friction velocity following Andre et al. 1978
uf = sqrt( ustar2 + 0.3_core_rknd * wstar * wstar )
uf = max( ufmin, uf )
! Compute estimate for surface second order moments
wp2_sfc = a_const * uf**2
up2_sfc = up2_vp2_factor * a_const * uf**2 ! From Andre, et al. 1978
vp2_sfc = up2_vp2_factor * a_const * uf**2 ! " "
! Notes: 1) With "a" having a value of 1.8, the surface correlations of
! both w & rt and w & thl have a value of about 0.878.
! 2) The surface correlation of rt & thl is 0.5.
! Brian Griffin; February 2, 2008.
thlp2_sfc = 0.4_core_rknd * a_const * ( wpthlp_sfc / uf )**2
thlp2_sfc = max( thl_tol**2, thlp2_sfc )
rtp2_sfc = 0.4_core_rknd * a_const * ( wprtp_sfc / uf )**2
rtp2_sfc = max( rt_tol**2, rtp2_sfc )
rtpthlp_sfc = 0.2_core_rknd * a_const &
* ( wpthlp_sfc / uf ) * ( wprtp_sfc / uf )
! Add effect of vertical compression of eddies on horizontal gustiness.
! First, ensure that wp2_sfc does not make the correlation
! of (w,thl) or (w,rt) outside (-1,1).
! Perhaps in the future we should also ensure that the correlations
! of (w,u) and (w,v) are not outside (-1,1).
min_wp2_sfc_val &
= max( w_tol_sqd, &
wprtp_sfc**2 / ( rtp2_sfc * max_mag_correlation_flux**2 ), &
wpthlp_sfc**2 / ( thlp2_sfc * max_mag_correlation_flux**2 ) )
if ( wp2_sfc + tau_zm_sfc * wp2_splat_sfc < min_wp2_sfc_val ) then
! splatting correction drives wp2_sfc to overly small values
wp2_splat_sfc_correction = -wp2_sfc + min_wp2_sfc_val
wp2_sfc = min_wp2_sfc_val
else
wp2_splat_sfc_correction = tau_zm_sfc * wp2_splat_sfc
wp2_sfc = wp2_sfc + wp2_splat_sfc_correction
end if
up2_sfc = up2_sfc - 0.5_core_rknd * wp2_splat_sfc_correction
vp2_sfc = vp2_sfc - 0.5_core_rknd * wp2_splat_sfc_correction
staring at this it looks a bit like the prior splatting code but using MOST for the near surface. I'm honestly a bit surprised that the atmosphere model has a wp2_sfc when that value lives on the surface, I would expect wp2=0
I think it would be useful to try this. It should add the sfc up2/vp2 and also potentially near the OSBL base.
Thoughts?
CLUBB includes an effect of 'splatting' of eddies near the surface and for stratocumulus inversions. This terms looks like
there is a similar term for wp3
This term is then removed from wp2 and half is put to up2 and half to vp2
the relevant code for wp2 is
The code is identical for
wp3_splatexcept the leading term is wp3. In this code block, tau_zm is the turbulent time scale on layer boundaries. This is a simple interpolation in most cases, it appears that they use a linear extrapolation at model top and they have a modification for the surface boundary condition, which is belowAt the top note they use something similar to what is proposed and appears to be straight from Andre et al 1978. There is another non-Andre et al version
staring at this it looks a bit like the prior splatting code but using MOST for the near surface. I'm honestly a bit surprised that the atmosphere model has a wp2_sfc when that value lives on the surface, I would expect wp2=0
I think it would be useful to try this. It should add the sfc up2/vp2 and also potentially near the OSBL base.
Thoughts?