New in C10

This page summarizes all major changes and improvements to Cloudy that are included in this release. You may also view the HotFixes and KnownProblems pages, or return to the main RevisionHistory page.

The  doxygen source code documentation is available  here.


Cloudy now uses a configure script. For people using the make utility to compile Cloudy, this change will be completely transparent since the Makefile will run the script automatically for you. However, users compiling Cloudy by hand will need to run the configure script first before starting the compilation. See CompilingCloudy for further details. This script helps us deal with platform dependencies and idiosyncrasies of certain compilers.

The routines cdInp() and cdOutp() have been removed from the code. This will affect people who have their own main program that calls Cloudy as a subroutine and who use these routines to redirect I/O. Please use the much safer versions cdInput() and cdOutput() instead. See Hazy 2 for a discussion of how the new routines should be used.

The format of the continuum_mesh.ini file has changed. This file now contains the resolving power instead of the resolution. However, existing user-modified versions of this file in the old format are still recognized and can be copied into the data directory unmodified. See Hazy 2 for further details on the new format.

Strong checks have been added on the frequency mesh in Cloudy generated files. As a result, all existing binary stellar atmosphere grid files, custom-made grain opacity files, and the output files from the save transmitted continuum command will have to be recompiled in order to work with this version of Cloudy. See below for details.

Changes to command parser

The punch command has been renamed save. The C10 version continues to recognize punch but this may be removed in future versions.

The save optical depths and save opacity commands how have the every option to save results for every zone.

There is a new help command which prints basic help about which commands are available. More details will follow: try the help command to find out!

Command options starting with a letter must now follow a non-letter. This removes the (confusing) need to specify explicitly that certain options have a leading space, i.e. all the _ISM business: in essence, this is now true of all options. The code is now also stricter about checking for NO QH rather than O QH for the NO QHEAT option.

The use of commas when specifying numbers (e.g. 37,600) will now generate a warning; it is planned to remove support for this syntax in subsequent versions. Large values can be specified using exponential notation instead (e.g. 37.6e3). Multiplication * and exponentiation ^ operators are now implemented where numeric values are read (e.g. 37.6*1000 or 10^4.58).

The command previously described in Hazy as either set PunchLWidth or set punch line width must now take the second form. We have also added an alternative form set punch resolution which allows the user to enter a spectral resolution directly. A new keyword suppress has been added which completely suppresses emission lines in the saved spectral energy distribution. When combined with the keyword absorption, absorption lines will also be suppressed. The default behavior of the command has been changed to conserve the flux in absorption and emission lines by matching the spectral resolution to the resolution of the coarse Cloudy mesh. The new forms set save line width and set save resolution are of course also recognized.

The print line emergent command has been removed. Most commands that report emission-line intensities or emissivities now have optional keywords to report either intrinsic or emergent intensities. Intrinsic intensities are reported by default.

The save lines emissivity and save lines cumulative commands now have the option to report either the intrinsic or emergent line intensity. They will report the intrinsic intensity by default. If the keyword emergent appears then that emissivity is reported.

A new command save lines emissivity has been added. This saves the volume emissivity and absorption and scattering opacity at a specified frequency as a function of radius. This is useful if you want to do more specialized RT in an external code.

The functionality of the aperture command has been improved and many bugs were fixed in the process. Two new commands aperture size and aperture covering factor have been added. These allow the user to specify the slit width or the surface area of the pencil beam and a separate covering factor for the area observed through the aperture. These will be used when calculating the flux observed at the earth.

At the end of the main output blocks of quantities averaged over area have been added. These would be appropriate to compare to quantities (e.g. an [O III] temperature) derived from integrated long slit observations that run over the center of the nebula. Until now only radial and volume averages were reported.

The assert command has been renamed to monitor. This is to prevent confusion with the C assert macro, which the code uses extensively, and to better reflect the fact that the command monitors changes in the listed quantity.

The save diffuse continuum command now has a zone option to report the total line and continuous emission coefficient for every zone.

The grid <start> <end> <step> command now accepts the keyword linear which will cause the code to take equidistant steps in linear parameter space.

The save grid command now includes the grid point index in the output. This is useful to identify files when saving to separate files for each grid point (see save fits below).

When the save fits command is used in a grid run, the output will now be placed in separate files for each grid point. If the name file.out was chosen as the file name in the input script, then these files will have names grid000000000_file.out, grid000000001_file.out, etc. The meaning of the embedded grid index is defined in the output of the save grid command.

All save commands now accept the separate keyword, meaning that the output will be saved to separate files for each grid point in a grid run. The names of these files will be generated in a way that is identical to scheme used in the save fits command described above.

The save fits will now implicitly assume that the keyword last was included on the command line. This is needed since it is not legal FITS to concatenate multiple spectra in one file.

The CMB command has two new options: density and time. The first sets the hydrogen density to the cosmological value at that redshift. The second adds a time dependence in the same manner as other spectral types. The usual scale factors are used unless the cosmology command appears, which then invokes the appropriate redshifting and dilution as a function of time. This command remains experimental.

The cosmology command has been added for the cosmological recombination problem, although some aspects may be more generally applicable in the future. The cosmological recombination problem is activated regardless of any additional keywords. Current keywords include omega (followed by baryon, radiation, matter, lambda, and curvature) for setting the corresponding cosmological parameters of a lambda-CDM cosmology, and hubble for setting the Hubble factor (in units of 100 km/s/Mpc, typically 0.71). This command remains experimental.

The save tegrid command has been removed since it is largely redundant. Use the save temperature history command instead.

The set nFnu add command has been added. This allows the user to add extra wavelength or frequency points to the output of the print continuum command without any hassle.

The set temperature solver and set eden solver commands have been removed since they no longer serve any purpose. These solvers have been rewritten and the old solvers have been removed. See below for further details.

The set dr, set drmin, set drmax commands now accept the keyword relative to set a stepsize that is a relative fraction of the current radius. This is useful in highly spherical models.

The set drmin, set drmax commands now accept the keyword linear.

The stop radius command has been added. It works just like the stop thickness command, except that it sets the outer radius rather than the thickness of the cloud. This is useful if you want to vary the inner radius, but want to keep the outer radius fixed. If you do so, make sure that you set an appropriate optimization range for the inner radius so that the optimizer cannot move it beyond the outer radius.

The stop continuum flux command has been added. This allows stopping the calculation when a prescribed continuum flux at an arbitrary wavelength inside the Cloudy wavelength range has been reached. This is useful for stopping calculations that go into the molecular region e.g. on a prescribed IRAS 100 micron flux. This command is very flexible in that it accepts a wide range of wavelength / frequency units, as well as flux or surface brightness units. This should largely eliminate the need for unit conversions.

The range option on the intensity, luminosity, phi(H), and Q(H) commands has been slightly modified. The numbers will now always be interpreted as typed (i.e., 0 will be interpreted as 0). If you want to use the default upper limit of the code, you can either omit the second parameter, or type a very large number. If you want to use the default lower limit, you can type a very small number (e.g., 0 if you are using linear quantities, or -10 if you are using logs). Any value outside the default Cloudy range will be reset to the appropriate limit. See Hazy for further details. This change makes it safe to use the range option in combination with the log keyword in optimizer runs.

The monitor set error 0.1 command will change the default error used in monitors. The number is the fractional error allowed before a failed monitor is declared.

The monitor Tu xx command checks the energy density temperature of the total radiation field in the last zone. The number is the temperature in K.

The monitor mpi command has been added. It monitors that the code is running in MPI mode. It has no further options and is used in the mpi test suite.

The monitor xxx grid commands now read the monitored values from an external file, the name of which needs to be supplied between double quotes on the command line. This avoids overly long command lines for larger grids.

The optimize diameter command has been added. This allows optimizing the diameter of the ionized region in arcsec (if the distance is set), or in cm. This is useful if the diameter of the source has been measured in Halpha or radio emission, but you want to model the neutral region as well (e.g., to get predictions for molecular lines or the dust emission).

The optimize continuum flux command has been added. This allows optimizing an observed continuum flux at any wavelength inside the Cloudy wavelength range. This is useful if you want to optimize dust continuum measurements and/or radio continuum detections. The syntax is very similar to the stop continuum flux command. In particular, it accepts the same wide range of units for the wavelength / frequency, and flux / surface brightness.

The distance command now accepts the keyword vary.

As a general rule, the vary option on commands now recognizes all of the keywords. There are some exceptions to this rule that are listed in Hazy 1.

The default number of optimizer iterations has been increased from 20 to 400.

The optimizer no longer has any limitation on the number of observables.

The set dielectronic recombination kludge command has been altered. Only two forms of this command are still recognized: set dielectronic recombination kludge off to disable the low-temperature DR guesstimates for elements with no good data, and set dielectronic recombination kludge noise [ dispersion ] to add gaussian noise to the DR guesstimates. All other forms of the command have been retired.

The iso sequence error generation commands now accept a pessimistic option which chooses the largest of two standard deviations for each piece of atomic data. The full command would look something like atom he-like error generation pessimistic 5 where the number is the seed for the random number generator. Without the pessimistic keyword the default optimistic values are used.

The atom H-like lyman lines pumping scale xx command now has the log option to force interpretation of the number as the log of the scale factor. If the log keyword does not appear it will be interpreted as a log if it is less than or equal to zero. This is a change in functionality since 0 is now interpreted as the log of 1.

The following commands now accept a log option to force interpretation of the number as a log: blackbody (for the energy density parameter), brems, constant temperature, coronal, energy density, power law (for the cutoff temperatures), print line faint, and set floor temperature.

The turbulence command has been slightly modified. If you want to supply an F-parameter in conjunction with the equipartition option, it is no longer necessary to add a bogus turbulent velocity in front of the F-parameter. Several bugs in the parsing of the command have been fixed, meaning that erroneous forms of the command that used to pass will now generate errors. See Hazy 1 for further details.

The atom H-like lyman lines pumping scale xx command now has the vary option.

Predictions from collapsed levels of the iso sequences are not predicted by default. The new print line iso collapsed command will print these predictions.

There is now a trace option on the coronal, time, and wind commands, to turn on trace printout to follow time dependent calculation.

The save line pressure will identify all significant contributors to the line radiation pressure for each zone.

A range option was added to the save XSPEC command. The energies must be in keV. The units option is not recognized.

There are new Case A and Case C commands. They have the same options as the Case B command but set the La optical depth to a small value, 10-5, by default.

The print every command has been renamed to print zone. The old command will still be recognized.

The keywords 0n341, 0n682 of the compile grains command have been renamed to c15, c120, resp.

An abundances Crab Nebula command has been added. This uses the filament composition deduced in model M1 of Pequignot & Dennefeld, 1983, A&A, 120, 249. Grains, which are known to exist in Crab Nebula filaments, are not included with this command and must be added separately.

Many of the built-in composition sets that are accessed with the abundances command have very small numbers for elements with no known abundances. The abundances command will now turn off these elements to avoid computing their ionization, opacity, heating, and cooling.

The fireball command is removed. Use the CMB command instead.

The blackbody command now has a disk option to easily specify a multicolor disk (as in Mitsuda et al. 1984). Two numbers must be specified, the inner and outer temperatures. These can be in either order. The higher temperature will automatically be regarded as the inner temperature.

The element XXX ionization command now forces particle conservation. Previously you could enter any set of ionization fractions. If they did not add up to unity the effect was to change the abundance of an element. The command now renormalizes the ionization fractions to unity to insure particle conservation.

MPI support has been added

MPI support for parallel grid or optimizer runs has been added. Support for parallel execution of grid runs is completely new, while support for parallel optimizer runs only existed for shared-memory machines running some variant of UNIX/Linux. The new code can be run on any distributed memory cluster or shared memory machine that supports MPI 2. This exiting new development allows large grids to be calculated on massively parallel systems, while the capabilities of the parallel optimizer have been enhanced. Parallel optimizer runs are only supported with the optimize phymir command.

New version of

The script for running the test suite on multi-core systems has been rewritten. It no longer depends on the "make" utility to run Cloudy in parallel on multiple CPUs, but now has its own built-in routines to do that. This enabled us to add limited support for doing parallel runs on distributed memory clusters. If you know beforehand what machines you will be using (i.e. when there is no batch system) you can supply the machine names in a file and type: <executable> static

where the first parameter has its usual meaning. The machines should be set up for passwordless ssh. If you have a batch system, you can submit a job that contains the following: <executable> bcx

This executes code that is specifically set up for our IBM xSeries cluster running Moab+Slurm. It will likely not work for you, but you may be able to modify the perl script to run on your cluster using the bcx code as a template.

Grain code

Two new refractive index files ph2n.rfi and ph2c.rfi have been added. These produce the opacities of neutral and charged PAHs, resp., following the prescription of Li, A., & Draine, B.T. 2001 ApJ, 554, 778. These files are temporary and will eventually be replaced by a single file that self-consistently determines the opacity from the actual charge of the PAH during execution. This however requires substantial changes to the code that are not yet complete. To produce opacity files from these refractive index files, you can e.g. use:

compile grains "ph2n.rfi" "ab08.szd" 10
compile grains "ph2c.rfi" "ab08.szd" 10

when inside the Cloudy data directory.

A new type of size distribution file for specifying the number of carbon atoms in a PAH has been added. Two example files called c15.szd and c120.szd are included in the data directory. They should be trivial to modify to suit your needs. To create opacity files for single-sized PAHs, you could e.g. use (assuming you created a file called c40.szd for a PAH with 40 carbon atoms):

compile grains pah "c40.szd"

They can of course also be combined with the Li & Draine refractive index files.

The data files for single-sized small and large PAHs have been renamed. The old names were pah1_0n341.opc and pah1_0n682.opc. The new names are pah1_c15.opc and pah1_c120.opc, resp.

The behavior of the PAHs defined by pah1.rfi (the Volk PAHs) has been modified. For grain radii larger than 50 A there will be a gradual change from PAH-like to graphite-like behavior, using a slightly altered version of Eqs. 2 & 3 of Li & Draine, 2001, ApJ, 554, 778. The Martin & Rouleau (1991) prescription of graphite is used. All opacity files in the data directory that were derived from pah1.rfi have been updated to the new prescription.

The format of the grain opacity files has been modified to enable more stringent checking of the frequency mesh used in the files. The new format is incompatible with the old one, and the code will issue an error message if you try to use an old opacity file. Hence all custom-made grain opacity files will have to be recompiled. All standard grain opacity files in the distribution are of course already up-to-date.

Stellar grids

The rules for setting up user-defined grids have been relaxed. This allows you to include a far wider range of data in Cloudy, e.g. a grid of combined Starburst99 or PopStar runs with different metallicities, enabling you to interpolate simultaneously in age and metallicity. The changes have no implications for existing grids, they will work exactly the same as before. Thanks to Christophe Morisset for suggesting this change.

Support has been added for merged Tlusty OSTAR2002/BSTAR2006 grids. These combined grids have a temperature coverage between 15 and 55 kK. See the StellarAtmospheres page for further details.

The format of the binary stellar grids has been modified to enable more stringent checking of the frequency mesh used in the files. The new format is incompatible with the old one, and the code will issue an error message if you try to use an old binary grid. Hence all binary stellar grid files will have to be recompiled. The procedure is described on the StellarAtmospheres page.

Improved physics and numerical methods

The  LAMDA molecular database is now included.

Atomic data for O updated. Transition probabilities are from Froese Fischer, C. & Tachiev, G., 2004, At. Data Nucl. Data Tables, 87:1–184 for [O II] and [O III]. These values should be definitive. The set atomic data ion oxygen 2 As command is redundant and is deleted. The [O II] collision strengths have been updated to Kisielius, R.; Storey, P. J.; Ferland, G. J.; Keenan, F. P. 2009, 2009MNRAS.397..903K

Atomic data for N updated. [N II] transition probabilities are from Froese Fischer, C. & Tachiev, G., 2004, At. Data Nucl. Data Tables, 87:1–184 and the collision strengths have been updated to Hudson, C.E. & Bell, K.L. 2004, MNRAS, 348, 1275 and A&A, 430, 725

Atomic data for Ne updated. Transition probabilities are from Froese Fischer, C. & Tachiev, G., 2004, At. Data Nucl. Data Tables, 87:1–184 for [Ne III]. The [Ne III] collision strengths have been updated to McLaughlin, B. M., & Bell, K. L. 2000, Journal of Physics B Atomic Molecular Physics, 33, 597

Atomic data for S updated. Transition probabilities are from Podobedova, L.I., Kelleher, D.E., & Wiese, W.L. 2009, JPCRD, 38, 171 for [S II] and[S III]. The [S II] collision strengths have been updated to Ramsbottom, C.A., Bell, K.L., Stafford, R.P. 1996, At. Data Nucl. Data Tables, 63, 57 while the [S III] collision strengths have been updated to Tayal, S.S., and Gupta, G.P. 1999 ApJ 526, 544

The atomic data for several Fe XVII level 2 lines have been updated. They are now based on CHIANTI and NIST data. The [Fe XVII] 17.1 A M2 line has been added as a level 1 line.

The phymir method is now the default optimizer. This used to be the Subplex method. But since the phymir method has built-in support for parallel optimization runs (either using MPI or UNIX system calls), and Subplex does not, it makes more sense to make phymir the default.

The H2 - H2 collision rates have been updated to Lee et al. (2008). Lee, T.-G.; Balakrishnan, N.; Forrey, R. C.; Stancil, P. C.; Shaw, G.; Schultz, D. R.; Ferland, G. J. 2008, ApJ, 689, 1105 available  here.

Several solvers for the physical state of the gas have been improved. The temperature and electron density solvers have been completely rewritten. They are now based on the van Wijngaarden-Dekker-Brent method. This should improve the quality of the solution. The method for converging the line optical depths when iterating to convergence has also been rewritten and now uses bracketing and bisection search. This should lead to improved convergence when the optical depths are oscillating, which can happen in high-density models.

The Badnell unresolved transition array (UTA) line data have been included. This is a vast set of UTA line data that treats K, L1, as well as L2 inner shell excitation for all elements of all iso-electronic sequences upto and including the Mg-sequence. UTA lines have an autoionizing upper level, which can notably enhance the ionization rate of the ion. Currently only UTA lines from the ground level are included. Since this set completely supersedes the Behar & Netzer (2002) data set, the latter has been removed. These changes will affect all sims with a hard input spectrum, such as AGN and hot PN models. The changes will be most notable for ions that did not have UTA line data before (e.g. the lower ionization stages of Mg and Si).

The average dielectronic recombination (DR) rates have been updated. For ions for which no good low-temperature DR rates exist, we use the logarithmic average of the Badnell DR rates for other elements of the same ionization stage as a guesstimate. The old procedure for calculating that average produced large discontinuities as a function of temperature. This was an artifact of the algorithm. We now altered the algorithm so that the data are always continuous. Typically the rates below 1000K will be substantially lower now (by 1-2 dex or more below 100K), while the new rates are somewhat higher in X-ray plasmas (by factors up to 3-10). Moderate changes to high-temperature simulations are expected. Low-temperature simulations will see only very small changes since DR is not an important process at these temperatures.

Despite claims to the contrary in Hazy, the Ali et al. (1991) low-temperature DR guesstimates were still in effect in C08. They have now been removed from the code. So now the average Badnell DR rates will be used for all ions for which no good DR rates exist (unless the recombination is from a closed shell to an alkali-like ion, in which case the rate is set to zero). This change will have a moderate effect on the predictions for lower stages of ionization (typically upto 4+), most notably for iron.

Manual Bautista updated the transition probabilities used for the lower 16 levels of FeII. Manual writes I input the A-values of Quinet et al. for the lowest 16 levels. The previous file used Quinet et al. SST results for some transitions, some "fudged" numbers for other transitions, and a lower limit 1.e-5 where A-values had not been provided. Here I chose the Quinet et al. HFR results instead because it is a superior atomic method and the results actually agree better with those of Nussbaumer & Storey. I discussed some of the inconsistencies in the Quinet et al. SST results in Bautista & Pradhan (1998; 1998ApJ...492..650B). The lower bound assigned to the A-values is now 1.e-6.

Yago Ascasibar added (self-) gravity to the constant pressure command. This is described in Ascasibar and Diaz MNRAS in press (2009).

Ye Wang added the SS option to the hextra command, to add heating due to an alpha model Shakura Sunyaev (A&A, 24, 337) accretion disk.

Enhancements for time-dependent cases

The stop temperature command now has a time option. This sets the lowest or highest temperature to allow before stopping time steps. Since each iteration is a time step this has the effect of limiting the number of iterations to be performed. The pair of commands

iteration 1000
stop temperature 10000K time

in a time-dependent simulation would tell the code to keep doing time steps until 1000 iterations were performed or the temperature in the last zone fell below 10000K.

print line cumulative will print the time integrated emission-line spectrum in addition to the spectrum computed for each iteration.

Other changes

The routine cdLine now accepts a new optional last parameter which indicates whether to report intrinsic (the default) or emergent intensities. The other routines which are modeled on cdLine also have this option.

The format of the save transmitted continuum output has been modified to enable more stringent checking of the frequency mesh used in the files. The new format is incompatible with the old one, and the code will issue an error message if you try to use an old file. Hence all these files will have to be generated again.

The coronal command no longer specifies a very faint brems continuum. It now uses a faint laser near the high energy limit of the radiation field. This will not appear in normal emission plots and should not interact with even low-density matter.

Chris Richardson, Jack Baldwin, & Ed Loh added following filters in support of Spitzer observations:

# Spitzer MIPS bands at 24, 70, and 160 microns. 
# The documentation can be found here:
# See Rieke et al. 2004, ApJS, 154, 25.
MIPS  24m  20.8m  26.1m
MIPS  70m  61.0m  80.0m
MIPS 160m 140.0m 174.0m
# Spitzer IRAC bands 1, 2, 3, and 4 at 3.6, 4.5, 5.8, and 8.0 microns. 
# The documentation can be found here:
# See Hora et al. 2008, PASP, 120, 1233.
IRAC 3.6m 3.16m 3.92m
IRAC 4.5m 4.00m 5.02m
IRAC 5.8m 5.00m 6.40m
IRAC 8.0m 6.50m 9.30m

The integrated energy over the wavelength band indicated by the last pair of numbers will be entered into the emission line predictions with the line label given by the first four characters and the line wavelength given by the first number.

Return to the RevisionHistory page.

Return to the StepByStep instructions.

Return to main wiki page

Return to