|
|
|
|
|
# Hot fixes to C06.02
|
|
|
|
|
|
------
|
|
|
|
|
|
This page lists all hot fixes to C06.02. In each case the hot fixes have been incorporated in the next patch release. That is, all hot fixes to C06.02c are included in C06.02d.
|
... | ... | @@ -10,7 +8,7 @@ This page lists all hot fixes to C06.02. In each case the hot fixes have been i |
|
|
|
|
|
## fixes to version C06.02c
|
|
|
|
|
|
An *_assert can be thrown at line 176 or 177 of cont_ffun.c*_. Remove these two asserts, which read as follows:
|
|
|
An *assert can be thrown at line 176 or 177 of cont_ffun.c*. Remove these two asserts, which read as follows:
|
|
|
|
|
|
```
|
|
|
ASSERT( y >= MIN2( rfield.tFluxLog[rfield.ipspec][i-1] , rfield.tFluxLog[rfield.ipspec][i] ));
|
... | ... | @@ -39,7 +37,7 @@ Thanks to astronerma@yahoo.com for reporting the crash, and to Peter van Hoof fo |
|
|
|
|
|
-----
|
|
|
|
|
|
The *_power law command could result in a floating point exception when the vary option was included*_. This was caused by incrementing the number of continua before the command was fully parsed. To correct, edit the file parse_powerlawcontinuum.c and move the block of code between lines 92 and 99, which reads as follows:
|
|
|
The *power-law command could result in a floating-point exception when the vary option was included*. This was caused by incrementing the number of continua before the command was fully parsed. To correct, edit the file parse_powerlawcontinuum.c and move the block of code between lines 92 and 99, which reads as follows:
|
|
|
|
|
|
```
|
|
|
++rfield.nspec;
|
... | ... | @@ -78,14 +76,14 @@ to after the block that ends at line 153. After the change the code will read a |
|
|
# endif
|
|
|
```
|
|
|
|
|
|
Many thanks to Pavel Abolmasov for reporting this crash. This change is only needed if you want to vary the options on the power law command. 06 Nov 10.
|
|
|
Many thanks to Pavel Abolmasov for reporting this crash. This change is only needed if you want to vary the options on the power-law command. 06 Nov 10.
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
## fixes to version 06.02b
|
|
|
|
|
|
The *_table stars command could cause crash on certain types of Macs*_. Edit file stars_rebinatmosphere.c and change the block starting at line 89 so that it reads as follows:
|
|
|
The *table stars command could cause crash on certain types of Macs*. Edit file stars_rebinatmosphere.c and change the block starting at line 89 so that it reads as follows:
|
|
|
|
|
|
```
|
|
|
for( j=0; j < nCont-1; j++ )
|
... | ... | @@ -98,13 +96,13 @@ for( j=0; j < nCont-1; j++ ) |
|
|
}
|
|
|
```
|
|
|
|
|
|
This need only be done if the table stars commands do not work on your Mac. If does not affect the calculations other than preventing the crash on some Macs.
|
|
|
This need only be done if the table stars commands do not work on your Mac. It does not affect the calculations other than preventing the crash on some Macs.
|
|
|
|
|
|
Many thanks to Dick Henry for uncovering the problem and to Peter van Hoof for fixing it. 2006 Aug 12.
|
|
|
|
|
|
-----
|
|
|
|
|
|
The code could *_incorrectly detect level populations insanity and end with an assert*_. Some important quantities are calculated with two independent methods, their results compared, and insanity declared if the results differ. This is a basic concept in safe programming (discussed in this link). The predicted densities of trace stages of ionization could differ by a fraction of a percent when the ionization fraction fell below one part in 1015 due to numerical imprecision. The code detected this and threw an assert around line 138 of radius_increment.c. The fix is to not do this test for ions which have extremely small fractional abundances.
|
|
|
The code could *_incorrectly detect level populations insanity and end with an assert*_. Some important quantities are calculated with two independent methods, their results compared, and insanity declared if the results differ. This is a basic concept in safe programming (discussed in this link). The predicted densities of trace stages of ionization could differ by a fraction of a percent when the ionization fraction fell below one part in 1015 due to numerical imprecision. The code detected this and threw an assert around line 138 of radius_increment.c. The fix is to not do this test for ions that have extremely small fractional abundances.
|
|
|
|
|
|
Edit the file radius_increment.c and change line 99 and add new lines so that they read as follows
|
|
|
|
... | ... | @@ -180,11 +178,11 @@ Thanks to Eric Pellegrini & Jack Baldwin for catching this problem. 2006 July 2 |
|
|
|
|
|
## fixes to version 06.02a
|
|
|
|
|
|
The *_UV FeII optical depths predicted by the large FeII model are not correct when gas becomes very cold*_. The large model trims down the number of levels it computes when gas become very cold and the populations of highly excited levels becomes very small. When this happened the code did not continue to update optical depths of lines between lower levels and these high levels that are not computed. As a result the optical depth printed for the transition is too small. The fix, which will be part of 06.02b, is to continue to update optical depths for such lines. 2006 Jun 25
|
|
|
The *UV FeII optical depths predicted by the large FeII model are not correct when gas becomes very cold*. The large model trims down the number of levels it computes when gas becomes very cold and the populations of highly excited levels become very small. When this happened the code did not continue to update optical depths of lines between lower levels and these high levels that are not computed. As a result, the optical depth printed for the transition is too small. The fix, which will be part of 06.02b, is to continue to update optical depths for such lines. 2006 Jun 25
|
|
|
|
|
|
-----
|
|
|
|
|
|
*_Thermal instabilities, followed by a thrown assert, could occur in a cosmic-ray dominated gas*_. There are two fixes needed. Edit file helike_recom.c and add the following after line 2260
|
|
|
*Thermal instabilities, followed by a thrown assert, could occur in a cosmic-ray dominated gas*. There are two fixes needed. Edit file helike_recom.c and add the following after line 2260
|
|
|
|
|
|
```
|
|
|
/* >>chng 06 jun 06, NP, assert thrown in helike_recom at T == 1e10 K, just bump the
|
... | ... | @@ -240,7 +238,7 @@ Many thanks to Jennifer West for reporting this bug. 2006 June 07. |
|
|
|
|
|
----
|
|
|
|
|
|
The *_punch FeII lines command only outputs emission from the lower levels in an optically thick cloud*_. This is because the number of FeII levels is adjusted as the calculation progresses. The number of levels considered at the end of the calculation may be small if the gas becomes cold. To fix this edit atom_feii.c and change the variable FeII.nFeIILevel to FeII.nFeIILevelAlloc at lines 1900 and 1902. After the change the lines will read as follows:
|
|
|
The *punch FeII lines command only outputs emission from the lower levels in an optically thick cloud*. This is because the number of FeII levels is adjusted as the calculation progresses. The number of levels considered at the end of the calculation may be small if the gas becomes cold. To fix this edit atom_feii.c and change the variable FeII.nFeIILevel to FeII.nFeIILevelAlloc at lines 1900 and 1902. After the change the lines will read as follows:
|
|
|
|
|
|
```
|
|
|
for( ipLo=0; ipLo < (FeII.nFeIILevelAlloc - 1); ipLo++ )
|
... | ... | @@ -253,7 +251,7 @@ The *_punch FeII lines command only outputs emission from the lower levels in an |
|
|
|
|
|
-----
|
|
|
|
|
|
The *_interpolated continuum was truncated at a certain cell number when very high resolution continua with very large numbers of points were used*_. To fix change two files. First edit edit parse_interp.c and change rfield.nupper to NCELL at line 260 and line 263. Before the fix the lines will read a
|
|
|
The *interpolated continuum was truncated at a certain cell number when very high-resolution continua with very large numbers of points were used*. To fix change two files. First edit edit parse_interp.c and change rfield.nupper to NCELL at line 260 and line 263. Before the fix the lines will read a
|
|
|
|
|
|
```
|
|
|
if( npairs + 2 < rfield.nupper )
|
... | ... | @@ -294,7 +292,7 @@ while( i< rfield.nupper && rfield.tNuRyd[rfield.ipspec][i]>0. ) |
|
|
{
|
|
|
```
|
|
|
|
|
|
after the change these lines will read as
|
|
|
after the change, these lines will read as
|
|
|
|
|
|
```
|
|
|
/*>>chng 06 may 17, upper limit of nupper fails when reading in very fine
|
... | ... | @@ -311,7 +309,7 @@ Many thanks to Christophe Morisset for discovering this problem and to Swarna K |
|
|
|
|
|
-----
|
|
|
|
|
|
The *_abundances starburst command did not work with the vary option*_. If the starburst abundances are to be varied during an optimization run then it will be necessary to change the format used for the abundances scale facror. Edit routine abund_starburst.c and change line 317 from the following:
|
|
|
The *abundances starburst command did not work with the vary option*. If the starburst abundances are to be varied during an optimization run then it will be necessary to change the format used for the abundances scale facror. Edit routine abund_starburst.c and change line 317 from the following:
|
|
|
|
|
|
```
|
|
|
strcpy( optimize.chVarFmt[optimize.nparm], "ABUNDANCES STARBURST %9.5F LOG" );
|
... | ... | @@ -327,7 +325,7 @@ That is, change %9.5F to %f. 06 May 14 |
|
|
|
|
|
-----
|
|
|
|
|
|
The *_FeII spectrum produced with the punch FeII continuum command is shifted by about 600 km/s.*_ It was initially only intended to make rough plots of the UV continuum and imprecise physical constants were used. Additionally, vacuum rather than air wavelengths are used for all wavelengths. The first problem can be fixed by editing atom_feii.c and changing the code around line 1500 to read as follows:
|
|
|
The *FeII spectrum produced with the punch FeII continuum command is shifted by about 600 km/s.* It was initially only intended to make rough plots of the UV continuum and imprecise physical constants were used. Additionally, vacuum rather than air wavelengths are used for all wavelengths. The first problem can be fixed by editing atom_feii.c and changing the code around line 1500 to read as follows:
|
|
|
|
|
|
```
|
|
|
/* convert to line energy in ergs */
|
... | ... | @@ -340,14 +338,14 @@ The *_FeII spectrum produced with the punch FeII continuum command is shifted by |
|
|
alo = 1.9864e-8f/wl2;
|
|
|
```
|
|
|
|
|
|
The next bug fix roll up with include this fix and also use air wavelengths for wl > 2000A This is a very small effect and so not done here as a hot fix. Many thanks to Yumihiko Tsuzuki for reporting this bug. 2006 April 10.
|
|
|
The next bug fix roll up with include this fix and also use air wavelengths for wl > 2000A This is a very small effect and so not done here as a hotfix. Many thanks to Yumihiko Tsuzuki for reporting this bug. 2006 April 10.
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
## fixes to version 06.02
|
|
|
|
|
|
The *_atom H2 dissociation collisions command turned off all collisions within the large H2 molecule*_. Edit routine parse_atomh2.c and add an "else" before the second if within the collisions branch at line 142. The changed code will read as follows:
|
|
|
The *atom H2 dissociation collisions command turned off all collisions within the large H2 molecule*. Edit routine parse_atomh2.c and add an "else" before the second if within the collisions branch at line 142. The changed code will read as follows:
|
|
|
|
|
|
```
|
|
|
/* option to turn collisional dissociation off or on
|
... | ... | @@ -363,7 +361,7 @@ The *_atom H2 dissociation collisions command turned off all collisions within t |
|
|
|
|
|
-----
|
|
|
|
|
|
*_Approximations to Nussbaumer & Storey DR rates could diverge for very low temperatures*_. The approximations in their published papers were not mean to be used outside certain temperature limits. These rates are still the default but are being replaced by the Badnell values. One test on the range of validity of the NS rates was left out, and the rates could strongly diverge for very low temperatures. Edit routine ion_recom.c near line 214 and add a test on the value of tefac. After the change the code will read as follows (code before and after the change is included for reference):
|
|
|
*Approximations to Nussbaumer & Storey DR rates could diverge for very low temperatures*. The approximations in their published papers were not mean to be used outside certain temperature limits. These rates are still the default but are being replaced by the Badnell values. One test on the range of validity of the NS rates was left out, and the rates could strongly diverge for very low temperatures. Edit routine ion_recom.c near line 214 and add a test on the value of tefac. After the change the code will read as follows (code before and after the change is included for reference):
|
|
|
|
|
|
```
|
|
|
if( ff[ion] != 0. && nelem!=ipIRON )
|
... | ... | @@ -388,7 +386,7 @@ The *_atom H2 dissociation collisions command turned off all collisions within t |
|
|
|
|
|
-----
|
|
|
|
|
|
The *_wavelength used to identify the continuum bands*_ (given in bands_continuum.dat and entered into the emission line printout) *_gave the wavelength in Angstroms when it should have been in microns*_. Edit routine cont_createpointers.c and add the following code to line1809 (code before and after the change is also shown)
|
|
|
The *wavelength used to identify the continuum bands* (given in bands_continuum.dat and entered into the emission line printout) *gave the wavelength in Angstroms when it should have been in microns*. Edit routine cont_createpointers.c and add the following code to line1809 (code before and after the change is also shown)
|
|
|
|
|
|
```
|
|
|
continuum.ContBandWavelength[k] = (float)FFmtRead(chLine,&i,INPUT_LINE_LENGTH,&lgEOL);
|
... | ... | @@ -406,7 +404,7 @@ The *_wavelength used to identify the continuum bands*_ (given in bands_continuu |
|
|
|
|
|
-----
|
|
|
|
|
|
*_FeII may fail with insanity under some conditions when more than one iteration is performed*_. To fix this edit routine atom_feii.c and add two lines, defining and setting the variable nFeII_old, and another line testing its value. After these changes the code between lines 1203 and 1222 will read as follows (snippet begins and ends with neighboring lines of code to place in context):
|
|
|
*FeII may fail with insanity under some conditions when more than one iteration is performed*. To fix this edit routine atom_feii.c and add two lines, defining and setting the variablenFeII_old, and another line testing its value. After these changes the code between lines 1203 and 1222 will read as follows (snippet begins and ends with neighboring lines of code to place in context):
|
|
|
|
|
|
```
|
|
|
long int ipTemp,
|
... | ... | @@ -443,7 +441,7 @@ The *_wavelength used to identify the continuum bands*_ (given in bands_continuu |
|
|
|
|
|
-----
|
|
|
|
|
|
The code will generate a *_bogus warning when the density is set by an external function, such as fabden or dlaw*_. It will complain that the density is changing by too much, even when it is constant. The warning is benign and can simply be ignored. To fix the code, edit routine pressure_change.c and change the code near line 572 to read as follows:
|
|
|
The code will generate a *bogus warning when the density is set by an external function, such as fabden or dlaw*. It will complain that the density is changing by too much, even when it is constant. The warning is benign and can simply be ignored. To fix the code, edit routine pressure_change.c and change the code near line 572 to read as follows:
|
|
|
|
|
|
```
|
|
|
pressure.PresTotlCorrect = pressure.PresTotlCurr*pressure_change_factor;
|
... | ... | @@ -459,8 +457,8 @@ Many thanks to Valentina Luridiana for finding this problem. 2006 Feb 23. |
|
|
|
|
|
-----
|
|
|
|
|
|
Return to HotFixes main page
|
|
|
Return to [HotFixes](HotFixes) main page
|
|
|
|
|
|
Return to the StepByStep instructions
|
|
|
Return to the [StepByStep](StepByStep) instructions or go [home](home)
|
|
|
|
|
|
----- |