Large-scale condensation
Large-scale condensation in an atmospheric general circulation represents the micro-physics that kick in when an air parcel reaches saturation. Subsequently, the water vapor inside it condenses, forms droplets around condensation nuclei, which grow, become heavy and eventually fall out as precipitation. This process is never actually representable at the resolution of global (or even regional) atmospheric models as typical cloud droplets have a size of micrometers. Atmospheric models therefore rely on large-scale quantities such as specific humidity, pressure and temperature within a given grid cell, even though there might be considerable variability of these quantities within the area covered by that grid cell. Higher resolution would use more grid cells within the same area, resolving more variability that averaged out at lower resolution.
Condensation implementations
Currently implemented are
using SpeedyWeather
subtypes(SpeedyWeather.AbstractCondensation)1-element Vector{Any}:
ImplicitCondensationwhich are described in the following.
Explicit large-scale condensation
We parameterize this process of large-scale condensation when relative humidity in a grid cell reaches saturation and remove the excess humidity quickly (given time integration constraints, see below) and with an implicit (in the time integration sense) latent heat release. Vertically integrating the tendency of specific humidity due to this process is then the large-scale precipitation.
Immediate condensation of humidity
This condensation is explicit in the time integration sense, meaning that we only use quantities at time step
Implicit large-scale condensation
Ideally, one would want to condense towards the new saturation humidity
Now we make a linear approximation to the derivative and drop the
And solving for
meaning that the implicit immediate condensation can be formulated as (see also [^Frierson2006])
With Euler forward time stepping this is great, but with our leapfrog timestepping + RAW filter this is very dispersive (see #445) although the implicit formulation is already much better. We therefore introduce a time step
For
The above implied that condensation takes place at 100% relative humidity as we are directly comparing the specific humidity to the saturation specific humidity in
Re-evaporation
Reevaporation is a process that requires to compute the downward rain water flux
When rainfall is created in one layer but falls through a drier (and often warmer) layer below then the rain water can re-evaporate, effectively causing a humidity flux into lower layers, and reducing the amount of rain that reaches the ground. We parameterize this effect proportional to the difference of humidity
So
The reevaportation in ImplicitCondensation is controlled by reevaporation (dimensionless), the proportionality constant
spectral_grid = SpectralGrid()
large_scale_condensation = ImplicitCondensation(spectral_grid, reevaporation=0)ImplicitCondensation{Float32} <: SpeedyWeather.AbstractCondensation
├ relative_humidity_threshold::Float32 = 0.95
├ reevaporation::Float32 = 0.0
├ snow::Bool = true
├ freezing_threshold::Float32 = 263.0
├ melting_threshold::Float32 = 278.0
└ time_scale::Float32 = 3.0would disable reevaporation reevaporation = 30 instead would be roughly equivalent to immediate evaporation at 30˚C and zero ambient humidity near surface.
Snow fall
We parameterize snow fall if large-scale condensation occurs below a freezing temperature model.large_scale_condensation for that. Freezing of rain water to snow occurs immediately, so we move the rain water flux to the snow flux
with latent heat of fusion
Like rain water can reevaporate in the layer so can snow melt in the layer below and turn into rain again. Precipitation often occurs in layers high up in the atmosphere where water may be subject to freezing but if the atmopshere below is warm then there is enough energy available to melt the snow before it reaches the ground. We want to parameterize this effect (otherwise it can easily snow in the tropics).
The available energy
We can convert this to a maximum melt rate, i.e. the amount of snow that this energy is able to melt in one time step. Note that for rate we use units of rain water height (or depth) in meters per second what we also use for the snow and rain water fluxes
We cap this to
But note that we do not add
We calculate the melting of a downward snow flux before Re-evaporation. This is such that melting snow becomes rain water and is subject to reevaporation within one layer. This is effectively equivalent to allowing sublimation of snow to water vapor.
Snow can be enabled/disabled with the snow keyword argument, and
spectral_grid = SpectralGrid()
large_scale_condensation = ImplicitCondensation(spectral_grid, snow=true, freezing_threshold=263)ImplicitCondensation{Float32} <: SpeedyWeather.AbstractCondensation
├ relative_humidity_threshold::Float32 = 0.95
├ reevaporation::Float32 = 30.0
├ snow::Bool = true
├ freezing_threshold::Float32 = 263.0
├ melting_threshold::Float32 = 278.0
└ time_scale::Float32 = 3.0Large-scale precipitation
The tendencies
with gravity
While the above equation to diagnose large-scale precipitation holds, this would include the total precipitation from both rain water and snow water (make sure not to add
A schematic of the large-scale precipitation parameterization is illustrated below:
References
[^Frierson2006]: Frierson, D. M. W., I. M. Held, and P. Zurita-Gotor, 2006: A Gray-Radiation Aquaplanet Moist GCM. Part I: Static Stability and Eddy Scale. J. Atmos. Sci., 63, 2548-2566, DOI:10.1175/JAS3753.1.