Dust evolution in protoplanetary disks
Comprehensive set of physical constants in CGS units, defined in Fortran for consistency across Python and compiled extensions. All constants are available at module level and designed for use in astrophysical calculations.
Core physical constants used throughout DustPy calculations.
from dustpy import constants as c
# Gravitational constant
G: float # 6.674e-8 [cm³/g/s²]
# Boltzmann constant
k_B: float # 1.381e-16 [erg/K]
# Proton mass
m_p: float # 1.673e-24 [g]
# Stefan-Boltzmann constant
sigma_sb: float # 5.670e-5 [erg/cm²/K⁴/s]
# Pi
pi: float # 3.14159...Constants specific to astronomical and planetary science applications.
# Distance units
au: float # 1.496e13 [cm] - Astronomical unit
# Solar properties
M_sun: float # 1.989e33 [g] - Solar mass
R_sun: float # 6.960e10 [cm] - Solar radius
# Planetary masses
M_earth: float # 5.972e27 [g] - Earth mass
M_jup: float # 1.898e30 [g] - Jupiter massTime conversion factors for astrophysical calculations.
# Time units
year: float # 3.156e7 [s] - Year in secondsConstants related to molecular properties and gas physics.
# Hydrogen molecule cross-section
sigma_H2: float # 2.000e-15 [cm²] - Geometrical cross-section of H₂import dustpy.constants as c
# Distance conversions
distance_au = 10.0 # 10 AU
distance_cm = distance_au * c.au # Convert to cm
print(f"10 AU = {distance_cm:.2e} cm")
# Mass conversions
stellar_mass = 0.5 * c.M_sun # Half solar mass
earth_masses = stellar_mass / c.M_earth
print(f"0.5 solar masses = {earth_masses:.0f} Earth masses")# Calculate orbital periods
orbital_radius = 5.2 * c.au # Jupiter's orbit
orbital_period = 2 * c.pi * (orbital_radius**3 / (c.G * c.M_sun))**0.5
period_years = orbital_period / c.year
print(f"Orbital period at 5.2 AU: {period_years:.1f} years")# Set up disk parameters using constants
disk_mass = 0.01 * c.M_sun # 1% of solar mass
inner_radius = 0.1 * c.au # 0.1 AU
outer_radius = 300 * c.au # 300 AU
# Temperature calculation
stellar_luminosity = 1.0 * c.R_sun**2 * c.sigma_sb * 5778**4 # Solar values
temperature_1au = (stellar_luminosity / (16 * c.pi * c.sigma_sb * c.au**2))**0.25
print(f"Temperature at 1 AU: {temperature_1au:.0f} K")# Calculate gas scale height
temperature = 150.0 # K
mean_molecular_weight = 2.34 * c.m_p # For H₂/He mixture
stellar_mass = 1.0 * c.M_sun
radius = 1.0 * c.au
sound_speed = (c.k_B * temperature / mean_molecular_weight)**0.5
omega_k = (c.G * stellar_mass / radius**3)**0.5
scale_height = sound_speed / omega_k
print(f"Gas scale height at 1 AU: {scale_height/c.au:.3f} AU")# Calculate mean free path
gas_density = 1e-9 # g/cm³
number_density = gas_density / (2.34 * c.m_p) # H₂/He mixture
mean_free_path = 1.0 / (number_density * c.sigma_H2)
print(f"Mean free path: {mean_free_path:.2e} cm")# Calculate Stokes drag for dust particles
particle_size = 0.01 # 100 micron particles [cm]
gas_density = 1e-9 # g/cm³
sound_speed = 1e5 # cm/s
mean_free_path = 1e4 # cm
# Drag coefficient depends on Knudsen number
knudsen = particle_size / mean_free_path
if knudsen > 1:
# Epstein regime
drag_coeff = 8.0/3.0 * gas_density * sound_speed / particle_size
else:
# Stokes regime
drag_coeff = 6.0 * c.pi * gas_density * sound_speed * particle_size / mean_free_path
print(f"Drag coefficient: {drag_coeff:.2e} g/cm²/s")# All constants accessible via dustpy.constants
import dustpy.constants as c
# Fundamental physics
c.G # Gravitational constant [cm³/g/s²]
c.k_B # Boltzmann constant [erg/K]
c.m_p # Proton mass [g]
c.sigma_sb # Stefan-Boltzmann constant [erg/cm²/K⁴/s]
c.pi # Pi
# Astronomical units and masses
c.au # Astronomical unit [cm]
c.M_sun # Solar mass [g]
c.M_earth # Earth mass [g]
c.M_jup # Jupiter mass [g]
c.R_sun # Solar radius [cm]
# Time
c.year # Year [s]
# Molecular
c.sigma_H2 # H₂ cross-section [cm²]All constants are provided in CGS (centimeter-gram-second) units:
from dustpy import Simulation, constants as c
sim = Simulation()
# Use constants in initial conditions
sim.ini.gas.Mdisk = 0.05 * c.M_sun # Disk mass
sim.ini.grid.rmin = 0.1 * c.au # Inner radius
sim.ini.grid.rmax = 500 * c.au # Outer radius
sim.ini.star.M = 1.0 * c.M_sun # Stellar mass
# Constants are automatically available in std functions
sim.makegrids()
sim.initialize()Install with Tessl CLI
npx tessl i tessl/pypi-dustpy