wiki:HotFixes_08

Hot fixes to C08


Hot fixes to version C08.01

If you use the set line precision command to increase the precision of the printed wavelengths, the code will abort. This problem is specific to C08.01 and does not occur in C08.00. To fix this, change lines 94 and 122 of the file prt_lines_general.cpp as follows:

	lindst(hbetac,4861,"TOTL",
 		Transitions[ipH_LIKE][nelem][ipHi][ipH2s].ipCont,'i',false,
 		   " H I Balmer beta predicted by model atom " );

and

	lindst(hlalph,1216,"TOTL",
 		Transitions[ipH_LIKE][nelem][ipHi][ipLo].ipCont,'i',false ,
 		" H I Lya predicted from model atom ");

Hot fixes to version C08.00

Bugs in the 11.x series of the Intel C++ compiler disabled the Badnell recombination rate coefficients, seriously affecting many predictions. Testing has shown that the 11.x series of the Intel C++ compiler does not compile the code correctly. C08 was tested extensively with the icc 10.x compilers, which worked properly, before it was released. We have only recently tested C08 with icc 11.1 in preparation for the release of C08.01.

The workaround for the icc bug is to delete lines 717-719 and 723-725 of zero.cpp. After this change the code will read as follows:

    /* turn on Badnell DR by default */
    ionbal.lgDR_recom_Badnell_use = true;

    /* turn on Badnell RR by default */
    ionbal.lgRR_recom_Badnell_use = true;

The code was correct as written. This change is only needed to work around a serious bug in Intel 11.x C++.

This compiler bug underscores the importance of validating your compiled version of the code by running the test suite. The test suite, including the smoke test, announced many failures due to this bug. 2010 Oct 01.


Simulations with very high densities could crash with an assert in atom_level3.cpp at line number 381. This was caused when pressure lowering of the continuum affects the IR fine structure files. To fix edit routine rt_line_one.cpp and change 559, 560, and 561 to read as follows:

	t->Emis->Pesc = SMALLFLOAT;
	t->Emis->Pdest = SMALLFLOAT;
	t->Emis->pump = SMALLFLOAT;

That is, replace 0 with SMALLFLOAT. This bug had no effect other than to cause the crash, and the repair is only needed if very high densities, nH > 1017 cm-3, are needed. Thanks to Zhixing Ling for finding and reporting the problem. 2009 July 03.


The punch transmitted continuum / table read pair could have some continuum cells with incident flux in error. To fix edit routine cont_ipoint.cpp and add the following code immediately after line 45

			if( ipoint_v < rfield.nflux-2 && ipoint_v>2 )
			{
				// possible will need to adjust index if cells have been fiddled with
				if( energy_ryd > rfield.anu[ipoint_v-1]+rfield.widflx[ipoint_v-1]/2. )
					++ipoint_v;
				if( energy_ryd < rfield.anu[ipoint_v-1]-rfield.widflx[ipoint_v-1]/2. )
					--ipoint_v;
			}

After the change the block of code will appear as follows:

			ipoint_v = MIN2( rfield.nupper , ipoint_v );
			if( ipoint_v < rfield.nflux-2 && ipoint_v>2 )
			{
				// possible will need to adjust index if cells have been fiddled with
				if( energy_ryd > rfield.anu[ipoint_v-1]+rfield.widflx[ipoint_v-1]/2. )
					++ipoint_v;
				if( energy_ryd < rfield.anu[ipoint_v-1]-rfield.widflx[ipoint_v-1]/2. )
					--ipoint_v;
			}
			return ipoint_v;

Thanks to Drew Clausen for documenting this problem. 2010 July 30.


Return to HotFixes main page

Return to the StepByStep instructions

Return to main wiki page

Return to nublado.org


Last modified 7 years ago Last modified on 2011-01-15T09:30:31Z