RADMC-3D: A multi-purpose radiative transfer tool
I have built a Monte Carlo radiative transfer code called RADMC-3D. It is the 3-D version of the RADMC code. Or better: it is a complete bottom-up rewrite of RADMC. It is written in Fortran 90 (as opposed to F77 for RADMC), it can treat 1-D, 2-D and 3-D geometries in cartesian or spherical coordinates, it has various options for gridding including grid refinement (AMR). And it has a Graphical User Interface for rendering images from a model (an IDL version as well as a Qt version is available). It has a number of example model setups, including one for a protoplanetary disk model (also with a GUI). Recently also Python support was added.
This code benefitted from financial support by the German Science Foundation (DFG) under the SPP-programme "Interstellar Medium".
Capabilities and planned capabilities
- Dust continuum radiative transfer:
- Computation of dust temperature and scattering [DONE]
- Any number of dust species, each having its own spatial distribution [DONE]
- Anisotropic scattering (several methods to deal with large data volume) [DONE]
- Polarized scattering, Stokes vectors [DONE/BETA]
- Modified Random Walk (MRW) method for very high optical depths [DONE/BETA]
- Gas line transfer: [DONE]
- LTE or local optically thin non-LTE populations [DONE]
- LVG (Sobolev approximation) mode for level populations [DONE]
- "Doppler catching method" for dealing with models with large velocity gradients [DONE]
- Full non-LTE ALI radiative transfer [planned for 2013/2014]
- Cartesian coordinates (3D) [DONE]
- Spherical coordinates (1D spherical symmetry, 2D axial symmetry or fully 3D) [DONE]
- Adaptive Mesh Refinement (oct tree or patch-based, works in both cartesian and spherical coordinates) [DONE]
- Both ascii and binary I/O (choice by user) [DONE]
- Images and spectra rendered by ray-tracing [DONE]
- Adaptive-resolution ray-tracing (for ensuring flux conservation) [DONE]
- Image ray-tracing in near-field (for public outreach) or far-field (for science) [DONE]
- Movie-generation features [DONE]
- Interfacing with other codes:
- FLASH code [DONE]
- RAMSES code [DONE: available upon request]
- PLUTO code [DONE: available upon request]
- ZEUS code [DONE: available upon request]
- Flexible post-processing widget-based user interface (see screen shot):
- for imaging [DONE]
- Zoom-in options by drawing a box on the image with the mouse [DONE]
- Rotation by dragging with the mouse [DONE]
- Monochromatic or RGB (three wavelength) images [DONE]
- Linear or log colors [DONE]
- Line selection tools [DONE]
- for SEDs [DONE]
- for imaging [DONE]
- VTK support for 3-D visualization with Paraview [DONE for 3-D cartesian grids]
- OpenMP Parallellization for thermal Monte Carlo [DONE/BETA]
- OpenMP Parallellization for scattering Monte Carlo [DONE/BETA]
- Python support [DONE]
A beta version of the code is now available for direct download by clicking one of the below:
- radmc-3d_v0.27_13.12.11.zip (a reasonably stable version)
- radmc-3d_v0.29_01.03.12.zip (an improved version: much faster LVG!!)
- radmc-3d_v0.30_14.03.12.zip (introduced a proper binary format, no longer using f77-records; Also added VTK-support)
- radmc-3d_v0.31_20.05.12.zip (several bugfixes, better VTK)
- radmc-3d_v0.33_02.07.12.zip (added escape probability to LVG mode)
- radmc-3d_v0.35_04.02.13.zip (added polarized scattering, full phase function; added MRW)
- radmc-3d_v0.38_17.06.14.zip (added OpenMP-parallellization for thermal MC, added stand-alone viewimage widget, Python support as alternative to IDL, fixed major bug in aperture mode; thanks to Adriana Pohl, Farzin Sereshti and Attila Juhasz for their contributions) [NOTE: I had forgotten the examples directory; now fixed]
- radmc-3d_v0.39_17.03.15.zip (improved OpenMP-parallellization and bugfixes)
Though not obligatory, I strongly recommend you to register to the RADMC-3D web forum. In this way you will receive about twice a year an email about a new release of the code. And more importantly, you will have access to the forum itself in which RADMC-3D-users discuss code-related issues, bugs, new features, as well as model setups, tips and tricks etc. And if you like you can participate (but you do not have to), and you can (if you like) subscribe to subformums or threads to be alerted to news (by default this is switched off). This forum is only readable if you are registered. So your posts are not spread over the www but remain within the RADMC3D-community.
If you first want to get an impression of what the code can do, you can download a recent version of the RADMC-3D Manual (belonging to version 0.35).
Note: The old, but well-tested predecessor code (RADMC) remains available for direct downloading here.
Example 1: A simple hydro model of gravitational collapse of a GMCIn the below figure you see the graphical user interface for making images of a model as seen in 3 color bands, creating an RGB image. The model was made with 3-D self-gravitating hydrodynamics.
Example 2: A random cloudlet model of obscuring AGN torusThe unification principle of active galactic nuclei (AGN) says that the difference between type 1 and type 2 AGN is simply a viewing-angle issue. Some viewing angles allow direct sight of the central engine, while others have this central engine obscured by the dust and gas in the circumnuclear environment. One simple model of this circumnuclear material is the clumpy torus model. Below are two movies of such a model, made with RADMC-3D, as seen at 10 micron. The clumps are fuzzy dusty blobs put onto the grid at random positions, but the size of these blobs are proportional to their distance to the central engine. The two movies shown here show the 10 micron emission from the blobs, but not the emission from the central engine itself. Click on the images to download the MPEG movies.
Example 3: Synthetic observations from an AMR hydro simulation with FLASHNow we can import models made with the FLASH code, which is a sophisticated Adaptive Mesh Refinement magneto-hydrodynamics code. The model shown here shows the formation of a binary star (model kindly provided by Bernd Voelkl, ITA Heidelberg).
As of version 0.38 of RADMC-3D there is also a stand-alone (i.e. IDL-independent) version of the viewimage tool, programmed by Farzin Sereshti. A snapshot is shown below:
Example 4: Volume rendering with a user-defined transfer function.This enables you to analyze your 3-D models with volume rendering, and you can determine entirely yourself how the opacities and emissivities depend on density, temperature, magnetic field, velocity etc. The primary envisaged use of this mode is to allow you to render your 3-D models for your own analysis, i.e. not for producing observation-realistic images. It is in that sense like ordinary 3-D rendering tools (such as VisIt) but it gives you more control over the opacities and emissivities, it works for all the grid-types of RADMC-3D and in second-order-integration mode it gives smoother images. Below you see four renderings of a 3-D MHD protoplanetary disk model with magnetorotational turbulence by Mario Flock from the MPIA in Heidelberg. This is a pie-piece of a snapshot of his model. Shown is the magnetic pressure. Artificial opacity is used to give a 3-D feel to it, and to show the depth stratification of the model. The four snapshots are for decreasing opacity.
Also it allows local perspective with fish-eye projection, useful for Planetarium Dome (OMNIMAX) projections. The same disk, again the magnetic pressure, is shown below in such a dome projection (hence the distortion). The star is not shown. Click on the image to see the corresponding movie.
Note that this is in AVI format and you may need some codecs for that.
The 3-D MHD model was done by Mario Flock, MPIA Heidelberg using the PLUTO code. The rendering with fish-eye local-observer projection was also done by Mario Flock, using RADMC-3D.
This software has been developed between 2007 and 2010 at the Max Planck Institute for Astronomy in Heidelberg, and is continued to be developed as of 2011 at the Institute for Theoretical Astrophysics of the University of Heidelberg.
- C.P. Dullemond (main author)
- A. Juhasz (contributor of IDL-based disk-GUI, Python Support)
- A. Pohl (contributor of the OpenMP-parallellization of the thermal MC)
- F. Sereshti (contributor of the Qt-based viewimage tool, improvement of OpenMP-parallellization)
- R. Shetty (contributor of LVG method)
- T. Peters (contributor of gas continuum and certain line modes)
- B. Commercon (contributor of RAMSES to RADMC-3D interface)
- M. Flock (contributor of the PLUTO to RADMC-3D interface)
- R. Rolffs
- L. Szucs
- S. Perez
- A. Isella
- Seokho Lee