C96 improvements over C94

C94 improvements over C90:

bulletMuch of the code is now double precision.  As a result the code will work for a broader range of densities than before.  Densities well below 10-6 cm-3 or above 1017 cm-3 can be computed without under/over flow.  In particular, very low density IGM models should now have no problem with underflow.
bulletTwo additional sets of stellar atmospheres are available - the CoStar windy O-star  grids, and the Rauch low-metallicity grid.
bulletAll hydrogenic species, the thirty ions from HII through Zn XXXI, are treated with a common model atom that uses a single code base.  This atom reproduces accurate hydrogenic emissivity to within the uncertainties in the atomic data.  The 30 hydrogenic ions can have up to 400 levels, limited mainly by the processor speed and amount of memory available. Most of the differences between predictions of C90 and C94 are due to the improved He+ ion.
bulletThe continuum now extends down to 1E-8 Ryd.  This is needed because the continuum must extend to the energy of the 400 - 399 transition of hydrogen.  If the continuum entered does not also extend down to 1E-8 Ryd the code will complain but still compute the model with the intensity of the unspecified portion set to zero.
bulletPrevious versions used simple approximations for the hydrogenic ionization and level balance for temperatures too low to compute a NLTE departure coefficient.  The new version determines level populations for low temperatures rather than departure coefficients, so low temperature predictions are as valid as high temperature results.
bulletThe recombination continua of all stages of ionization of the first 30 elements are now included in the output produced by the punch continuum command.  These were included in the calculation but not in the punch output in previous versions.
bulletThe code is now strict ANSI/ISO 89 C.  As a result Cloudy is now exceptionally GNU gcc and Linux friendly. After this version is released the development version will move to C++ as gcc evolves onto the ANSI/ISO C++ standard and the C++ standard template library matures.  C94 is "clean C", meaning that it has been compiled and tested as a C++ code by renaming the *.c files as *.cpp.  My notes on converting a large Fortran program into C are here.
bulletAll large storage items are dynamically allocated at run time, taking only the needed memory.  As a result, in its default state, C94 actually takes less memory than C90, but C94 can bring any machine to its knees by making the hydrogenic sequence of atoms very large.
bulletThe ionization/thermal kernel has been totally rewritten to incorporate all the lessons learned from known convergence problems.  As a result C94 is more stable than C90, with far better convergence properties. 
bulletC94 is slightly faster than C90, although it does more work, because the kernel is cleaner and convergence more efficient.  This is the first time in the history of Cloudy that the code has not gotten vastly slower with a major new release.   All previous releases were about three times slower than its predecessor.  
bulletAll previous versions only considered ionization stages that could be produced by the incident continuum.  This limit has been lifted, so collisional or coronal equilibrium models can be computed with very soft incident continua.  It is no longer necessary to specify a very hard but faint continuum to get the code to behave as expected in the collisional ionization limit.
bulletThe assert command has been introduced.  This tells the code to verify that its predictions agree (within a stated  uncertainty) with a known result, and will cause the code to terminate with an error condition if it does not.  The test cases make extensive use of this feature, which provides an automatic way to validate the code.  Today, the entire test suite of standard models is recomputed and verified every single night.

Hit Counter
Last changed 04/01/03.
Return to the Cloudy Home Page.
Copyright 1978-2003 Gary J. Ferland