00001
00002
00003
00004 #include "cddefines.h"
00005 #include "dense.h"
00006 #include "trace.h"
00007 #include "conv.h"
00008 #include "iso.h"
00009 #include "ionbal.h"
00010 #include "taulines.h"
00011
00012 void IonHelium( void )
00013 {
00014 bool lgDebugPrint=false;
00015
00016 DEBUG_ENTRY( "IonHelium()" );
00017
00018
00019 if( !dense.lgElmtOn[ipHELIUM] )
00020 {
00021 dense.xIonDense[ipHELIUM][0] = 0.;
00022 dense.xIonDense[ipHELIUM][1] = 0.;
00023 dense.xIonDense[ipHELIUM][2] = 0.;
00024 return;
00025 }
00026
00027
00028
00029 if( dense.lgSetIoniz[ipHELIUM] )
00030 {
00031 dense.xIonDense[ipHELIUM][2] = dense.SetIoniz[ipHELIUM][2]*dense.gas_phase[ipHELIUM];
00032 dense.xIonDense[ipHELIUM][1] = dense.SetIoniz[ipHELIUM][1]*dense.gas_phase[ipHELIUM];
00033 dense.xIonDense[ipHELIUM][0] = dense.SetIoniz[ipHELIUM][0]*dense.gas_phase[ipHELIUM];
00034 }
00035
00036 lgDebugPrint = false;
00037 # if 0
00038 if( nzone > 197 )
00039 lgDebugPrint = true;
00040 # endif
00041
00042
00043 ion_solver( ipHELIUM , lgDebugPrint );
00044
00045 if( trace.lgHeBug )
00046 {
00047 fprintf( ioQQQ, " %li IonHelium returns; nzone %ld He0:%.4e He+:%.4e He+2:%.4e\n",
00048 conv.nTotalIoniz ,
00049 nzone,
00050 dense.xIonDense[ipHELIUM][0]/dense.gas_phase[ipHELIUM] ,
00051 dense.xIonDense[ipHELIUM][1]/dense.gas_phase[ipHELIUM] ,
00052 dense.xIonDense[ipHELIUM][2]/dense.gas_phase[ipHELIUM] );
00053
00054 fprintf( ioQQQ, " He+ /He0:%s smp:%.4e rec:%.4e ion:%.4e rad rec:%.4e 1s Pop:%.4e\n",
00055 iso_sp[ipHE_LIKE][ipHELIUM].chTypeAtomUsed,
00056 iso_sp[ipHE_LIKE][ipHELIUM].xIonSimple,
00057 ionbal.RateRecomTot[ipHELIUM][0],
00058 ionbal.RateIonizTot(ipHELIUM,0),
00059 ionbal.RR_rate_coef_used[ipHELIUM][0],
00060 iso_sp[ipHE_LIKE][ipHELIUM].st[0].Pop() );
00061
00062 fprintf( ioQQQ, " He+2/He+:%s smp:%.4e rec:%.4e ion:%.4e rad rec:%.4e\n",
00063 iso_sp[ipH_LIKE][ipHELIUM].chTypeAtomUsed,
00064 iso_sp[ipH_LIKE][ipHELIUM].xIonSimple ,
00065 ionbal.RateRecomTot[ipHELIUM][1],
00066 ionbal.RateIonizTot(ipHELIUM,1),
00067 ionbal.RR_rate_coef_used[ipHELIUM][1] );
00068
00069 fprintf( ioQQQ, "\n" );
00070 }
00071 return;
00072 }