|
|
|
|
These are small changes that will be incorporated in the next revision of the code, or ways to work around problems in the current version. These only apply to the current version of the code stored on this site. In the following, the corrections that should be made are indicated by line numbers within specific files. These corrections where not present when the output from the downloaded test suite was created. The tests should be run before these are applied.
C96.01The code will crash on older systems running Linux if the cpu does not support SSE extensions. To fix this download a new version of cdinit.c in unix format here. This fix is probably only needed for older Athlon processors running Linux. 05 June 03.
The documentation for the stop line command is wrong. Here is the correct version. Thanks to Joaquin Bohigas for finding the problem. 05 May 22.
The punch line populations command gives the density of the upper and lower levels relative to the density of the next higher ion for lines in the H-like and He-like iso sequences. They should have been true densities, and will be corrected in the next release. Thanks to John Everett for discovering the problem. 05 May 08.
The recombination line contribution to [N II] 5755 is incorrect, missing a factor of density squared. Edit file lines_lv1_li_ne.c and add the following code after line 357: Hbeta *= dense.eden * dense.xIonDense[ipHYDROGEN][1]; Thanks to Marcelo Castellanos for uncovering this problem, and to Stefano Bianchi for correcting the typo. 05 Mar 17, 05 Apr 27
punch element hydrogen throws an assert. Delete line 901 of parse_punch.c. it reads as follows: ASSERT( nelem>0 ); Thanks to Marcelo Castellanos for uncovering this problem. 05 Feb 08
The fluctuations abundances and table element commands do not change the abundances of the elements. To fix this, comment out the test at line 143 of pressurechange.c After the correction the source should read as follows: /* if convergence is OK at present state, so no change reqd, simply return * >>chng 05 feb 04, cannot do this test here since variable abundances, test has * not been done, so variable abundances did not work, * caught by Marcelo Castellanos and David Valls-Gabaud if( conv.lgConvPres ) return FALSE;*/ Thanks to Marcelo Castellanos and David Valls-Gabaud for finding this problem. 05 Feb 04.
The punch abundances command will crash with an fpe if some of the elements are turned off. To use this command, edit punch_do.c and change line 196 to protect the log10 function for non-positive abundances. the changed lines should read as follows: /* >>chng 05 feb 03,
protect against non-positive abundances, Many thanks for Marcelo Castellanos for finding this problem. 05 Feb 03
The log of the line luminosity is not printed correctly when the print line sort wavelength range command is used. If this command is needed, then edit prt_final.c and add a definition of the variable xLog_line_lumin after line 1044. The code will read as follows: sclsav[j] = sclsav[i]; chSTyp[j] = chSTyp[i]; strcpy( chSLab[j], chSLab[i] ); wavelength[j] = wavelength[i]; /* >>chng 05 feb 03, add this, had been left out, * thanks to Marcus Copetti for discovering the bug */ xLog_line_lumin[j] = xLog_line_lumin[i]; Thanks to Marcus Copetti for discovering this problem. 05 Feb 03.
The code had never been tested in the limit where there is no incident radiation but an external heat source causes heating and ionization. When this is done the routines that decide the upper bound to the number of ion stages to consider made a mistake - only low ion stages were considered. To fix this two changes are required. First, edit routine conv_base.c, change line 188 from the old version, /* only do this one time per zone since up and down cycle can occur */
if( !conv.nPres2Ioniz || conv.lgSearch )
{
to read as follows: /* >>chng 05 jan 15, increasing temperature above default first conditions, also
* no trim during search - this fixed major logical error when sim is
* totally mechanically heated to coronal temperatures -
* problem id'd by Ronnie Hoogerwerf */
if( !conv.nPres2Ioniz && !conv.lgSearch /*|| conv.lgSearch*/ )
{
ie, only execute the block if conv.lgSearch is false. Next, edit routine conv_init_solution.c, add code after line 487. The old code read as phycon.te = phycon.te * factor; add the following, so that it reads as phycon.te = phycon.te * factor;
tfidle(TRUE);
/* >>chng 05 jan 15, increasing temperature above default first conditions, also
* reset highest ionization stages - this fixed major logical error when sim is
* totally mechanically heated to coronal temperatures
* problem id'd by Ronnie Hoogerwerf */
if( factor > 1. )
{
for( nelem=ipHYDROGEN; nelem < LIMELM; nelem++ )
{
if( dense.lgElmtOn[nelem] )
{
dense.IonHigh[nelem] = nelem + 1;
}
}
}
A test case, coll_heat_only.in, has been added to the test suite to validate the code in this limit in the future. Many thanks for Ronnie Hoogerwerf for finding this problem. 05 Jan 16.
C96The illuminate command will stop with dr too small. Edit file radius_next.c. and change lines 949 and 953 to read as follows: if( nzone < 5 )
{
/* >>chng 96 nov 11, had been 4 * drad up to 11, change to following
* to be similar to c90.01, max of 1.3 between 5 and 11
* >>chng 04 oct 29 geometry.AngleIllum was ioncorrect applied to this factor */
drmax = 4.*radius.drad;
}
else
{
drmax = 1.3*radius.drad;
}
ie - remove two factors of geometry.AngleIllum .04 Oct 29,
Hot fixes to C96 beta 5The He-like collision strength routine could detect insanity for some models. Edit routine helike_cs.c and delete lines 105 through 116 so that the source reads if( (bestfactor = MIN3(factor1,factor2,factor3)) > 100.)
{
/* this calculates the TOTAL collision strength from nl to nl+/-1. Use as last resort. */
/* equation 44 of PS64 */
/* NB - this only works for helium-like ions, the nelem in pow2 is the residual nuclear charge */
Dul = POW2( ChargIncoming / (nelem) ) * 6. * POW2( (double)iso.quant_desig[ipHE_LIKE][nelem][ipLo].n ) *
( POW2((double)iso.quant_desig[ipHE_LIKE][nelem][ipLo].n) -
POW2((double)iso.quant_desig[ipHE_LIKE][nelem][ipLo].l) - iso.quant_desig[ipHE_LIKE][nelem][ipLo].l - 1);
bestfactor = (11.54 + log10( phycon.te / Dul / reduced_mass_2_emass ) );
}
Many thanks to Christian Bridge for uncovering this problem. 2003 Aug 15
Hot fixes to C96 beta 4A loop variable was misset and would cause the the punch gammas command to throw an exception. Edit file punchdo.c, and change the code around line 1001 to read for( j=0; j < yield.nyield[nelem][ion][ns]; j++ ){ fprintf( punch.ipPnunit[i], "%5.2f", yield.vyield[nelem][ion][ns][j] ); } Be careful! There are three changes of i into j on the line beginning with "for", and only one change on the line starting with "fprintf". Change the last i, but not the first, on this line. Thanks to Antonella Natta for pointing out this problem. 2002 June 12.
The print line sum command cannot be used in a grid or optimization run. This will be fixed in the next release. Thanks to Melekh Bohdan for finding this problem. 2003 Jan 23
The code can stop due to a negative hydrogen molecule abundance for some models. An updated version of hmole.c is available here. Replace the version in the distribution with this file. Thanks to Andrey Kravtsov for discovering this problem. 2002 June 9.
The code can throw a false assert for some predominantly molecular models. Edit routine prtcomment.c and delete line 1555, which reads
Thanks to Andrey Kravtsov for discovering this problem. 2002 June 10.
Hot Fixes to C96 beta 3crash in cddrive.c on SunsThe code can crash on a Sun. Several edits are required, and the repaired source for this routine is available here. Replace the original copy of this routine with the altered copy if you are using a Sun. Thanks to Peter van Hoof for solving this problem. 2002 May 16.
NOTE: The version of the source posted on 2002 March 14 has the following changes included. Downloads after that date do not need to have these changes included, only those proceeding this notice.
crash in rtmakestat.c on SunsThe code can crash on a Sun due to the order in which certain terms in the photon pumping rate were calculated. The solution is to force a particular order by imposing parenthesis. Several edits are required, and the repaired source for this routine is available here (unix eol). Replace the original copy of this routine with the altered copy if you are using a Sun. Thanks to Kevin Volk for discovering the problem, and to Peter van Hoof for its solution. 2002 March 14.
botched asserts in atomseqboron.c with gccThe test for the values of some floating point numbers was too stringent, and could fail under some circumstances. Edit atomseqboron.c and change lines 299 - 310 to read as follows:
That is, change all occurrences of FLT_MIN
to Thanks to Bohdan Melekh for discovering the problem, and to Peter van Hoof for its solution. 2002 March 11. This fix is included in source downloaded after 14 March 2002.
FeII atom could divide by zero for some modelsIn routine pop371.c, change line 943 to read as follows: /* ratio
of collisional (new) to pumped excitations */
/* >>chng
02 mar 04, add test MAX2 to prevent div by zero */
Thanks to Yumihiko Tsuzuki, Kevin Volk for finding this problem. 2002 March 07
Code to check that gcc 2.96 is not being used.This version of gcc is broken and must not be used. The following code was added following line 176 of cdinit.c: /* check that we ARE NOT being compiled by
gcc version 2.96 */
__GNUC__ == 2 && __GNUC_MINOR__ == 96
This is already included in all downloads after 2002 Feb 27. This code, provided by Peter van Hoof, checks that version 2.96 of gcc is not being used. This version of gcc cannot compile the Linux kernel or Cloudy, but is included in many Linux distributions. If you have version 2.96 of gcc then you probably also have the "kernel compiler", kgcc, which is an older version of gcc. Use that instead. This is discussed on the compiling Cloudy page of this web site.
Hot Fixes to C96 beta 2Space allocated for grains was not returned when cdNoExec was used in a large grid of calculations. The result is that the code will eventually use all memory in the system and fail. This only happened when the code is used as a subroutine, and cdNoExec is called to test the grid without computing. To fix, change line 105 of cloudy.c from if( noexec.lgNoExec ) to /* this is an option to stop after printing header only */ Thanks to Kirk Korista for discovering the problem, and to Peter van Hoof for fixing it. 2001 May 08.
|