Documentation | |
DOI | |
Docs Build | |
GHA CI | |
Code Coverage |
TurbulenceConvection (Single Column Atmospheric Model in Julia) provides a framework for testing parameterizations of clouds and turbulence. It is particularly designed to support eddy-diffusivity mass-flux modeling frameworks.
Information about the EDMF parameterization implemented in TurbulenceConvection can be found in:
Tan, Z., Kaul, C. M., Pressel, K. G., Cohen, Y., Schneider, T., and Teixeira, J. (2018) An extended eddy-diffusivity mass-flux scheme for unified representation of subgrid-scale turbulence and convection. Journal of Advances in Modeling Earth Systems. doi
Cohen, Y., Lopez-Gomez, I., Jaruga, A., He, J., Kaul, C., and Schneider, T. (2020) Unified entrainment and detrainment closures for extended eddy-diffusivity mass-flux schemes. Journal of Advances in Modeling Earth Systems, 12, e2020MS002162. doi
Lopez-Gomez, I., Cohen, Y., He, J., Jaruga, A., Schneider, T. (2020) A generalized mixing length closure for eddy-diffusivity mass-flux schemes of turbulence and convection. Journal of Advances in Modeling Earth Systems, 12, e2020MS002161. doi
He, J., Cohen, Y., Lopez-Gomez, I., Jaruga, A., Schneider, T. (2021) An improved perturbation pressure closure for eddy-diffusivity mass-flux schemes. preprint
The code is written in Julia, and was translated from SCAMPy for the commit 496dad0c2438235684823511cacbf5761d6a237c.
Code Contributors (alphabetical): Yair Cohen (Caltech), Jia He (Caltech), Anna Jaruga (Caltech), Colleen Kaul (PNNL) --initial/primary developer of SCAMPy, Charles Kawczynski (Caltech), Ignacio Lopez-Gomez (Caltech), Kyle Pressel (PNNL),
Additional Acknowledgements: Tapio Schneider (Caltech), Joao Teixeira (JPL).
Installation is easy:
(@v1.6) pkg> add TurbulenceConvection
TurbulenceConvection.jl requires Julia 1.6 or higher. If you plan to develop TurbulenceConvection.jl, you may want to clone it instead:
git clone https://github.com/CliMA/TurbulenceConvection.jl
cd TurbulenceConvection.jl
julia --project=integration_tests
julia> ]
pkg> instantiate
ClimaCore.jl, a dependency of TC.jl, will by default attempt to run code on a GPU device if available. TC.jl is not compatible with GPUs, and the following environmental variable needs to be exported to prevent GPU attempts:
export CLIMACOMMS_DEVICE=CPU
$ cd TurbulenceConvection.jl
TurbulenceConvection.jl can be run in the same way that SCAMPy used to, given one of the following cases:
with, for example:
julia --project=integration_tests driver/generate_namelist.jl Soares
julia --project=integration_tests driver/main.jl Soares
or by calling our integraion test driver,
julia --project=integration_tests integration_tests/driver.jl --case Soares
or, interactively, with
julia --project=integration_tests
julia> case_name = "Soares" # default is "Bomex"
julia> include(joinpath("integration_tests", "driver.jl"))
Upon running a particular experiment (described above), comparison plots (against SCAMPy) are automatically generated in, for example, Output.Bomex.01/stats/comparison/
.
Variable | Grid-mean | Environment | Updrafts |
---|---|---|---|
u |
[✓] | [x] | [x] |
v |
[✓] | [x] | [x] |
w |
[-] | [x] | [✓] |
θ_liq_ice |
[✓] | [x] | [✓] |
q_tot |
[✓] | [x] | [✓] |
a |
[-] | [x] | [✓] |
tke |
[x] | [✓] | [-] |
θ′θ′ |
[x] | [✓] | [-] |
q_tot′q_tot′ |
[x] | [✓] | [-] |
θ′q_tot′ |
[x] | [✓] | [-] |