CARMApy
CARMApy is a Python wrapper of the Community Aerosol and Radiation Model for Atmospheres (CARMA), originally developed by Turco et al. (1979), Toon et al. (1988), and Bardeen et al. (2008). CARMApy specifically wraps ExoCARMA, a version of CARMA developed by Gao et al. (2018) and Powell et al. (2018) to model clouds on exoplanets.
This code is still under development: while we believe there are no significant errors in the code, the CARMApy wrapper is still young. If you encounter any issues or bugs, please open an issue or email Wolf Cukier (wcukier@uchicago.edu).
The documentation, including detailed tutorials and installation instructions, are available here: https://carmapy.readthedocs.io
Features
- Detailed microphysical modeling including
- Homogeneous and heterogeneous nucleation
- Particle growth and evaporation
- Vertical transport including eddy diffusion, falling, and bulk winds
- Coagulation
- The ability to use user-defined condensates by specifying their physical properties
- A beginner-friendly, opinionated API that makes the code easy to learn
- Easy reading of output data and plotting of results
- Helper functions with reasonable physical assumptions to supplement input data
Installation
CARMApy is available on PyPI:
pip install carmapy
CARMApy requires Python 3.10 or newer. Pre-built wheels bundle a standalone Fortran binary, so no compiler is needed for a standard install. See the documentation for source builds and details.
Quick Start
import carmapy
# Create a simulation (the name becomes the output directory)
carma = carmapy.Carma("my_first_run")
# Set the timestep [s], output cadence, and number of steps
carma.set_stepping(dt=100, output_gap=100, n_tstep=24000)
# Load the example atmosphere (a 2000 K Sonora Diamondback profile).
# All inputs are cgs: P in barye, T in K, kzz in cm^2/s.
P_levs, T_levs, kzz_levs, mu_levs = carmapy.example.example_levels()
carma.add_P(P_levs)
carma.add_T(T_levs)
carma.add_kzz(kzz_levs)
# Surface gravity [cm/s^2] and mean molecular weight
carma.set_physical_params(surface_grav=31600, wt_mol=mu_levs[0])
carma.set_atmospheric_parameters_from_defaults("Pure H2") # H2-dominated
carma.calculate_z(mu_levs) # derive altitudes from P/T/mu
# Add cloud species: TiO2 nucleates homogeneously, Mg2SiO4 grows on it.
# The second argument is the minimum particle radius [cm].
carma.add_hom_group("TiO2", 1e-8)
carma.add_het_group("Mg2SiO4", "TiO2", 1e-8 * 2**(1/3))
# Initialize gas abundances (via FastChem) and run
carmapy.chemistry.populate_abundances_at_cloud_base(carma)
carma.run()
results = carma.read_results()
See the tutorials for complete, runnable examples.
Citation
If you use CARMApy in your work, please cite CARMApy itself along with the underlying models it is built on. At a minimum:
This work uses CARMApy (Cukier et al. 2026), which is built on the ExoCARMA (Gao et al. 2018, Powell et al. 2018) version of the CARMA model (Turco et al. 1979, Toon et al. 1988, Bardeen et al. 2008).
If you use additional features such as the 2D mode or the FastChem chemistry interface, please also cite the relevant papers. See the citation page for the complete list of references and BibTeX entries.
License
CARMApy is released under the Apache License 2.0.
Metadata
Release files for carmapy 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| carmapy-1.0.3.tar.gz | 34.9 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| carmapy-1.0.3-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| carmapy-1.0.3-py3-none-win32.whl | Python 3 | none | Windows x86-32 | Details |
| carmapy-1.0.3-py3-none-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | Python 3 | none | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| carmapy-1.0.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 | Details |
| carmapy-1.0.3-py3-none-macosx_14_0_arm64.whl | Python 3 | none | macOS 14.0+ ARM64 | Details |
Total release size: 137.6 MB
Release files / carmapy-1.0.3.tar.gz
| Download URL | carmapy-1.0.3.tar.gz |
|---|---|
| Size | 34.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e2c00bd00ad1e944173a5b34cc4bab035957b6391e17ead95c6f6a530f911665
|
|
BLAKE2b-256 checksum How to use checksums |
70a0a96106543268b97664a6a7fd4629adcf9d0d6159f122827e2908bb697d4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / carmapy-1.0.3-py3-none-win_amd64.whl
| Download URL | carmapy-1.0.3-py3-none-win_amd64.whl |
|---|---|
| Size | 20.5 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f5bdaed5fb3c34d24993f78c966271bbcb4644da55e0e9274a7a5c5267ac1a0a
|
|
BLAKE2b-256 checksum How to use checksums |
e3fc29f04d911e0c5beb45a2918dfb238c33f52ba9313fa4ecb4405420d508b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / carmapy-1.0.3-py3-none-win32.whl
| Download URL | carmapy-1.0.3-py3-none-win32.whl |
|---|---|
| Size | 20.5 MB |
| Tags | Python 3 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
7a1c77505b2fd7475a6df8b98eaf6209198d5df6311978e6f0a81f1212d0a496
|
|
BLAKE2b-256 checksum How to use checksums |
fb2fbcee31914115a729fa15050848cf85535a76cbc2c73a689e0070f1d423ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / carmapy-1.0.3-py3-none-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | carmapy-1.0.3-py3-none-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 20.5 MB |
| Tags | Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
07fa040ab5b57f2957b7b1ce6d6e25589358b4daa10b13172caf87aff80613dd
|
|
BLAKE2b-256 checksum How to use checksums |
7f8ef3c4222b52bc90ba53551adf1f21151a5d4bc23d61c73a7d4847c3810f62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / carmapy-1.0.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | carmapy-1.0.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 20.4 MB |
| Tags | Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
46e7cb758ab52d744bce98ee5babfe0608482fa6f2d1e631ab0195a24d22fc43
|
|
BLAKE2b-256 checksum How to use checksums |
2e3718b36d3a1cce664dc6ea858633b34b2b8d817a952cb74e4c0a59c8b49a9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / carmapy-1.0.3-py3-none-macosx_14_0_arm64.whl
| Download URL | carmapy-1.0.3-py3-none-macosx_14_0_arm64.whl |
|---|---|
| Size | 20.7 MB |
| Tags | Python 3 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
724cd73e7b4bf1a092157cb83b0da75ce23faec3cee05eb6193738bde48c562b
|
|
BLAKE2b-256 checksum How to use checksums |
b98febe91f77a93a7c989bcdc0890c88d81912378570b7d19f40618fe924ccdd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency log