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

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.2
File Size Uploaded
carmapy-1.0.2.tar.gz 36.1 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for carmapy 1.0.2
File
carmapy-1.0.2-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
carmapy-1.0.2-py3-none-win32.whl Python 3 none Windows x86-32 Details
carmapy-1.0.2-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.2-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
carmapy-1.0.2-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.2.tar.gz

Download URL carmapy-1.0.2.tar.gz
Size 36.1 MB
Tags Source
SHA-256 checksum
How to use checksums
c2e14ab1fa46a94453782f8a7b7601a93c16301f6176dd20ee27faba0b7439a7
BLAKE2b-256 checksum
How to use checksums
484f92741fddc55487dcf476335df0141d4293343341d47ca4e68a97fd359b68
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 Sep 10, 2026.

Transparency log

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

Download URL carmapy-1.0.2-py3-none-win_amd64.whl
Size 21.6 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
5cd0ebdff026146f4f5d9a23bcc21e2454bf08df0f8f10bdffe0aabd4998779a
BLAKE2b-256 checksum
How to use checksums
8ba83f497111f3ebf8829b668b0fd2f6d3e46c57b80b26c46e67777cc3022825
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 Sep 10, 2026.

Transparency log

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

Download URL carmapy-1.0.2-py3-none-win32.whl
Size 21.6 MB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
ca8e83ecb300b00956ade211bbf59e741b0a2de9b2e0861533407409a5ba0dd7
BLAKE2b-256 checksum
How to use checksums
47f42bad1828ca0cd160fa0d335bba3809a96cfce5f4102192c6081da9a24a72
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 Sep 10, 2026.

Transparency log

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

Download URL carmapy-1.0.2-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
350f564238d90232ff8060f75ea2c1a666d12e50b8a2718ee41b57358bd3aa52
BLAKE2b-256 checksum
How to use checksums
d29c181df0336d1ddb5d7efccca8d1a7ad7301192c99b27116215b7c0717bf3e
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 Sep 10, 2026.

Transparency log

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

Download URL carmapy-1.0.2-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
b29c5f311878ce105f89ec528024ee8f83e99b7d1c8444a409aff2a1abbea7f1
BLAKE2b-256 checksum
How to use checksums
62978a0c454bae0e4ebb07632c6dfb0762ca92900b7f9223c0ebb09462ece3e3
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 Sep 10, 2026.

Transparency log

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

Download URL carmapy-1.0.2-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
55a0d0897ec6b66cc0f51f332737cade7a2a2e8fd0609325bb3b4b4db0dce2d8
BLAKE2b-256 checksum
How to use checksums
18f9d6fb6605e472252d4cf025bfe7c6686f13742edb7205abe30b2d4ce6a9d5
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 Sep 10, 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