CloudMicrophysics.jl

A package containing a library of cloud microphysics parameterizations.

Docs Build docs build
Documentation dev
GHA CI gha ci
Code Coverage codecov
Bors enabled bors

Installation and running instructions

CloudMicrophysics.jl is a Julia registered package. It depends on a couple of standard Julia packages as well as the Thermodynamics.jl and CLIMAParameters.jl (two Julia packages developed at CliMA). See the Project.toml for a full list of CloudMicrophysics.jl's dependencies.

When using the CloudMicrophysics.jl inside your own project, the easiest way to obtain the latest stable version of the package and it's dependencies is to use the Julia built-in package manager (accessed by pressing ] in the Julia REPL):

julia>]
pkg> add CloudMicrophysics
pkg> instantiate

CloudMicrophysics.jl can be updated to the latest tagged release from the package manager. The package is still under development and changes to API are very possible!

pkg> update CloudMicrophysics

When contributing to the CloudMicrophysics.jl development, the easiest way is to clone the repository and then run it using its project environment. For example, to get all the needed dependencies and then run all the tests you could try:

julia --project

julia>]

pkg> instantiate

julia> include("test/runtests.jl")

See the Pkg docs for an overview of basic package manager features.

Contributing

The CloudMicrophysics.jl package is being actively developed and welcomes contributions and feedback. There is a variety of projects big and small that are available to take up as fun research projects for interested students and other contributors. Below is a list of possible examples, but other suggestions and ideas are always welcome!

  • The CloudMicrophysics.jl package should be tested against a high-resolution model. We have chosen PySDM as our high-resolution benchmark. PySDM is a package for simulating the dynamics of population of particles and is based on the Super-Droplet algorithm. Possible tasks in this project would include testing the aerosol activation parameterization against PySDM in an adiabatic parcel setup, or testing the 1-moment microphysics parameterization against PySDM in an already implemented 1-dimensional or 2-dimensional prescribed flow setup. This could be extended further into a calibration exercise using the EnsembleKalmanProcesses.jl package. An example pipeline can be seen in the EKP.jl docs where Cloudy.jl parameters are calibrated.

  • Adding a 2-moment microphysics scheme for warm rain formation to the CloudMicrophysics.jl package. This is a priority for us and the next development goal. We already have implemented a set of different autoconversion and accretion formulations. The next step is to add tendencies for cloud and rain drop number concentrations. Contributions in coding, testing, (re)deriving the parameterization equations and discussing microphysics parameterization assumptions are welcome!

  • Adding the P3 scheme for ice phase microphysics. This is a next development goal after we implement the 2-moment scheme - and also a big task.

  • Adding an aerosol model and coupling it with the aerosol activation parameterization. This could be the aerosol model to implement. This is a big project and an opportunity for a more long term contribution.