Skip to main content

Tests Documentation Status PyPI version Python versions License

CARMApy

CARMApy logo

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.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for carmapy 1.0.1
File Size Uploaded
carmapy-1.0.1.tar.gz 36.1 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for carmapy 1.0.1
File
carmapy-1.0.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
carmapy-1.0.1-py3-none-win32.whl Python 3 none Windows x86-32 Details
carmapy-1.0.1-py3-none-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 Details
carmapy-1.0.1-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.1-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details

Total release size: 144.2 MB

Release files / carmapy-1.0.1.tar.gz

Download URL carmapy-1.0.1.tar.gz
Size 36.1 MB
Tags Source
SHA-256 checksum
How to use checksums
9537c8491932a0d30fc94c227fa82a9ce3ce8564fc8dc907747358ad208b6b68
BLAKE2b-256 checksum
How to use checksums
393a45832f77fd515e72c68927dfeda64011938a6ff1dfe6c7fdd264ec13b908
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 22, 2026.

Transparency log

Release files / carmapy-1.0.1-py3-none-win_amd64.whl

Download URL carmapy-1.0.1-py3-none-win_amd64.whl
Size 21.6 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
f1a83a62a23229b19b98fdd1bdd076ad23ff8db94fcce3785ecd01a5a873f0ed
BLAKE2b-256 checksum
How to use checksums
a6b0cd21a79c4a3f9fe356dc925f4f2f2f81040f6a59601a6eb003743198b365
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 22, 2026.

Transparency log

Release files / carmapy-1.0.1-py3-none-win32.whl

Download URL carmapy-1.0.1-py3-none-win32.whl
Size 21.6 MB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
99f064ca351e615bb97f59331fdd0bdca7f2da80f1d756109a361f8cd27122b4
BLAKE2b-256 checksum
How to use checksums
316acc63da7c24404c0efc1f9ac67197e47294e8991915f0c3cd79aa0730b75a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 22, 2026.

Transparency log

Release files / carmapy-1.0.1-py3-none-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL carmapy-1.0.1-py3-none-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 21.6 MB
Tags Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
3465b38c2f6e65b1a28026f01d0a884dd27f06dcdb46fd72c976e8b9cd478d61
BLAKE2b-256 checksum
How to use checksums
6ef4262df6098273de29c38fef1fd38f5a9e0b76148cb608b6361aba90a009b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 22, 2026.

Transparency log

Release files / carmapy-1.0.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL carmapy-1.0.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 21.5 MB
Tags Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
fc73aa3b086ed67bb5f57343fdd4cde281deb4ca85cf17ba610b8afb94c39853
BLAKE2b-256 checksum
How to use checksums
700abc1304ba64b4f5a9d65b3e4b0f2e682d3c0661140ee32d6ca259157a3dc5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 22, 2026.

Transparency log

Release files / carmapy-1.0.1-py3-none-macosx_14_0_arm64.whl

Download URL carmapy-1.0.1-py3-none-macosx_14_0_arm64.whl
Size 21.7 MB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
4c3f7d3700dd5338edeb1bb04220bbd1eadd5432b320660da396997bf6c44367
BLAKE2b-256 checksum
How to use checksums
ba6c73d813c2eef5b79055ee7f96cd5b66cce6b070730c4e78706706deb34a3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 22, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page