Kinematic1D.jl

Kinematic1D.jl is a single column, prescribed flow driver for testing microphysics schemes. It uses ClimaCore.jl operators and CloudMicrophysics.jl tendencies to create the numerical problem that is then solved using OrdinaryDiffEq.jl.

Simulation setup

The setup is based on the kinematic framework introduced by [1]: Vertical momentum flux is constant with height and varying in time. Density and temerature profiles are constant and defined by the initial condition, which is unsaturated. As the simulation progresses in time moisture is transported upwards, supersaturation grows in the upper part of the domain and precipitation is formed. In the second part of the simulation the vertical momentum flux is switched off, leaving only cloud microphysics tendencies acting to change the model state. Below figure shows an example prescribed vertical momentum as a function of time.

using Plots
include("../../src/driveKiD/helper_functions.jl")

t_range = range(0, 15 * 60, length=100)
w1 = 2.0
t1 = 600.0
plot(t_range / 60.0, [ρw_helper(t, w1, t1) for t in t_range], linewidth=3, xlabel="t [min]", ylabel="updraft momentum flux [m/s kg/m3]")
"/juliateam/.julia/packages/Kinematic1D/Ghoey/docs/build/prescribed_momentum_flux.svg"

Changes to CliMA defaults

One of the goals of Kinematic1D.jl is to test against PySDM and the particle-based implementation of the kinematic model available in PySDM-examples. As a result, some CliMA constants were changed from their default values to better match PySDM:

symboldefinitionunitsdefault valuenew value
MSLPMean sea level pressure$Pa$$101325$$10^{5}$
gravGravitational acceleration$m/s^2$$9.81$$9.80665$
gas_constantUniversal gas constant$J/mol/K$$8.3144598$$8.314462618$
kappa_dAdiabatic exponent for dry air (2/7)$-$$0.28571428571$$0.2855747338575384$
cp_vIsobaric specific heat of water vapor$J/kg/K$$1859$$1850$
molmass_dryairMolecular mass of dry air$kg/mol$$0.02897$$0.02896998$
molmass_waterMolecular mass of water$kg/mol$$0.01801528$$0.018015$
qliqthresholdCloud liquid water autoconversion threshold$kg/kg$$0.0005$$0.0001$

Comparison with PySDM

TODO