/*ChkSumCon sanity check confirms summed continua reflect contents of individuals */ #include "cddefines.h" #include "rfield.h" #include "linelabl.h" #include "insane.h" #include "chksumcon.h" void ChkSumCon(long int ipPnt) { long int i; float phisig; # ifdef DEBUG_FUN fputs( "<+>ChkSumCon()\n", debug_fp ); # endif /* this entire sub is a sanity check *begin sanity check */ for( i=0; i < rfield.nflux; i++ ) { phisig = rfield.otscon[i] + rfield.otslin[i] + rfield.outcon[i] + rfield.outlin[i]; if( phisig > 0. ) { if( fabs(rfield.SummedDif[i]/phisig-1.) > 1e-3 ) { insane(); fprintf( ioQQQ, " ChkSumCon insane SummedDif at energy%12.5e error=%10.2e i=%4ld\n", rfield.anu[i], rfield.SummedDif[i]/phisig - 1., i ); fprintf( ioQQQ, " SummedDif, sum are%11.4e%11.4e\n", rfield.SummedDif[i], phisig ); fprintf( ioQQQ, " otscon otslin outcon outlin are%11.4e%11.4e%11.4e%11.4e\n", rfield.otscon[i], rfield.otslin[i], rfield.outcon[i], rfield.outlin[i] ); fprintf( ioQQQ, " line continuum here are %4.4s %4.4s\n", LineLabl.chLineLabel[i], LineLabl.chContLabel[i] ); } } phisig += rfield.flux[i]; if( phisig > 0. ) { if( fabs(rfield.SummedCon[i]/phisig-1.) > 1e-3 ) { insane(); fprintf( ioQQQ, " ChkSumCon%3ld, insane SummedCon at energy%12.5e error=%10.2e i=%4ld\n", ipPnt, rfield.anu[i], rfield.SummedCon[i]/phisig - 1., i ); fprintf( ioQQQ, " SummedCon, sum are%11.4e%11.4e\n", rfield.SummedCon[i], phisig ); fprintf( ioQQQ, " otscon otslin outcon outlin flux are%11.4e%11.4e%11.4e%11.4e%11.4e\n", rfield.otscon[i], rfield.otslin[i], rfield.outcon[i], rfield.outlin[i], rfield.flux[i] ); fprintf( ioQQQ, " line continuum here are %4.4s %4.4s\n", LineLabl.chLineLabel[i], LineLabl.chContLabel[i] ); } } } # ifdef DEBUG_FUN fputs( " <->ChkSumCon()\n", debug_fp ); # endif return; }