6. RADMC-3D integration
The fld.radmc_helper module provides a bridge between pyFLD and the RADMC-3D radiative transfer code. It allows you to export pyFLD grids, stars, and data to RADMC-3D format, and import RADMC-3D results back.
Overview
RADMC-3D (Dullemond et al., 2012) is a full radiative transfer solver that computes detailed spectral energy distributions and images using a Monte Carlo approach. pyFLD provides fast temperature calculations via FLD, but if you need full radiative transfer results, you can:
Use
pyFLDto compute initial temperature estimates or even just a density structureExport the model to RADMC-3D format files
Run RADMC-3D (
mctherm/image/sedcommands)Import results back into Python with
pyFLD(usingradmc3dPyunder the hood)
radmc3dPy is a Python package included with RADMC-3D that provides tools for reading RADMC-3D output files. The fld.radmc_helper module uses it to facilitate the import of RADMC-3D results.
Workflow
import pyFLD as fld
import numpy as np
from astropy import units as u
# Step 1: Set up a pyFLD model (see examples)
grid = fld.grid.Grid(...)
star = fld.star.Star(...)
dust = fld.fluids.Dust(grid=grid, star=star, ...)
# ... configure dust, set density/temperature, enroll functions ...
dust.setup()
# ... run FLD to get temperature structure ... (optional)
# Step 2: Create RADMC3D-compatible versions
rmc_grid = fld.radmc_helper.Grid()
rmc_grid.setup_from(grid)
rmc_star = fld.radmc_helper.Star()
rmc_star.setup_from(star)
# Step 3: Write model files
rmc_grid.write() # defaults to 'amr_grid.inp'
rmc_star.write() # defaults to 'stars.inp'
fld.radmc_helper.write_wavelength_array(star.wl) # 'wavelength_micron.inp'
fld.radmc_helper.write_density_array([dust.rho[grid.active]]) # 'dust_density.binp'
fld.radmc_helper.write_temperature_array(dust.tmp[grid.active]) # 'dust_temperature.bdat' (optional)
fld.radmc_helper.write_opacity_handle(['mydust']) # 'dustopac.inp', expects 'dustkappa_mydust.inp' for opacities
fld.radmc_helper.write_control_file() # 'radmc3d.inp'
# Step 4: Run RADMC-3D from shell
# radmc3d mctherm
# Step 5: Read and analyze results (requires radmc3dPy)
rmc_rho, rmc_tmp = fld.radmc_helper.read_and_format_radmc_data()
Notes
RADMC3D only supports spherical geometry; Cartesian and cylindrical grids must be converted
Ghost cells are automatically stripped because RADMC3D uses only active cells
Wavelengths must match between
Starand opacity data for frequency-dependent calculationsRequires
radmc3dPypackage to read RADMC3D outputSee best practices for recommendations on wavelength resolution
See Also
Dullemond et al. (2012): RADMC-3D code paper