Skip to main content

Rapid rotator model of ice sublimation for comet nuclei

Project description

comet_ice_sublimation

Based on "Vaporization of Comet Nuclei: Light Curves and Life Times", Cowan & A'Hearn, 1979, DOI: 10.1007/BF00897085 Modular rewrite based on https://github.com/Small-Bodies-Node/ice-sublimation for easy inclusion in other projects.

This module uses the rapid rotator model of ice sublimation for comet nuclei where parallels of latitude are isothermal. Used for estimating molecular sublimation rate per unit area of various ices. It integrates the energy balance equation to find equilibrium temperatures, then computes sublimation rates as a function of latitude, and reports the total molecular sublimation rate.

Comet Ice Sublimation Model — Argument Parser


  • Supports multiple molecular ice species (H₂O, CO₂, CO, mixed ices, etc.).
  • Configurable visual and infrared albedos.
  • Adjustable latitude grid resolution.
  • Optional initial temperature override.
  • Returns average sublimation rate or full latitude profiles.
  • Output in CSV or JSON format.
  • Command-line and Python API usage.

End-user CLI usage

Manual Installation via Poetry

Clone the repository and install dependencies:

git clone https://github.com/sjoset/comet-ice-sublimation.git
cd comet-ice-sublimation
poetry install

Manual installation via pip

pip install comet_ice_sublimation

Command-line Arguments

Argument Required Description Default
species Ice species to consider (choices: see MolecularSpecies.all_species()).
--Av Visual albedo (0.0–1.0).
--Air Infrared albedo (0.0–1.0).
--rh Heliocentric distance (AU).
--ssl Sub-solar latitude (degrees, -90 to +90).
--nlat Number of latitude steps. 181
--temp Initial temperature (K). If omitted, uses species defaults: H₂O=190, H₂O–CH₄=190, CO₂=100, CO=60. None
--profiles Return temperatures & sublimation rates as a function of latitude. False
-o Output filename for results. None
--format Output format (json or csv). json
-v, --verbosity Verbosity level (0 = final result only, 1 = include logs). 0

Example Commands

Run a sublimation calculation for water ice at 1 AU:

comet_ice.py H2O --Av 0.04 --Air 0.5 --rh 1.0 --ssl 0

Return full latitude profiles, saving results to CSV:

comet_ice.py CO2 --Av 0.06 --Air 0.5 --rh 2.0 --ssl 20 --profiles True -o results.csv --format csv

Module Integration

You can also import this module and use it in your own projects.

Construct a SublimationModelInput

To run the sublimation model we need to specify some details of the comet:

  • Molecular species of ice
  • Visual and infrared albedos (note: not emissivity!) of the surface
  • Heliocentric distance
  • The sub-solar latitude: For +90, the north pole is pointed at the sun. For 0, the north pole is perpendicular to the comet-sun axis.
  • The number of latitudes to use for integration over the comet surface.
  • The initial 'guess' for the temperature of the surface. Adjust if model fails to converge.

For example, if we wanted a water ice model with visual albedo of 0.05 and infrared albedo of 0.0:

from comet_ice_sublimation.model_input import SublimationModelInput
from comet_ice_sublimation.molecular_species import MolecularSpecies

def make_sublimation_model_input(
    rh_au: float, sub_solar_latitude: float
) -> SublimationModelInput:

    return SublimationModelInput(
        species=MolecularSpecies.h2o,
        visual_albedo=0.05,
        infrared_albedo=0.0,
        rh_au=abs(rh_au),
        sub_solar_latitude=sub_solar_latitude,
        num_latitude_gridpoints=1001,
        t_init_K=180,
    )

Estimate the comet's active area by running the model

If we know the production rate of the given species q in molecules/second, we can compute the active area required to exhibit that level of production. This function will take the relevant values specified as an astropy Quantity:

import astropy.units as u

from comet_ice_sublimation.model_output import SublimationModelResult
from comet_ice_sublimation.model_runner import run_sublimation_model

def estimate_active_area(
    q: u.Quantity, rh: u.Quantity, sub_solar_latitude: u.Quantity
) -> u.Quantity:

    smi = make_sublimation_model_input(
        rh_au=rh.to_value(u.AU),
        sub_solar_latitude=sub_solar_latitude.to_value(u.degree),
    )

    smr: SublimationModelResult = run_sublimation_model(smi=smi)

    # output z_bar is in mol/cm^2/sec, so we return a quantity in units of area
    return q / (smr.z_bar / (u.cm**2 * u.s))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

comet_ice_sublimation-1.0.0.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

comet_ice_sublimation-1.0.0-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file comet_ice_sublimation-1.0.0.tar.gz.

File metadata

  • Download URL: comet_ice_sublimation-1.0.0.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.9 Darwin/24.5.0

File hashes

Hashes for comet_ice_sublimation-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2a63a88baca818549c45aa14c1570d4f9a937e3d98434711e5f22a2c2d187dc8
MD5 77ba0e2f10fad3e858d9ac4888609a1b
BLAKE2b-256 9be6bd9703898c02162af0a692aec66ac414bbed2064c524b91993c546e1ed08

See more details on using hashes here.

File details

Details for the file comet_ice_sublimation-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for comet_ice_sublimation-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 60a73e074cb5c2cb4055ea82cfcdc462e26a2d72fa5dca818be18e9103ccb56f
MD5 62ac2aef820b235af17ebeafa7aae1ef
BLAKE2b-256 2d24e60b724279ff7e5a6e2e2d4e8e0db3aa5a5659c9277cb8d365d9f4f559f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page