00001
00002
00003
00004 #include "cddefines.h"
00005 #include "trace.h"
00006 #include "dense.h"
00007 #include "ionbal.h"
00008
00009 void IonAlumi(void)
00010 {
00011 const int NDIM = ipALUMINIUM+1;
00012
00013 static const double dicoef[2][NDIM] = {
00014 {5.5e-3,6.0e-3,7.5e-3,5.6e-3,1.2e-2,1.9e-2,1.6e-2,1.7e-2,4.4e-2,1.7e-2,3.0e-1,3.4e-0,0.},
00015 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}
00016 };
00017 static const double dite[2][NDIM] = {
00018 {9.0e4,7.5e4,8.5e5,5.0e5,4.4e5,3.8e5,3.4e5,3.4e5,3.9e5,2.3e5,1.6e7,1.7e7,1e20},
00019 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}
00020 };
00021 static const double ditcrt[NDIM] = {8.0e3,7.0e3,1.2e5,7.0e4,6.5e4,5.5e4,
00022 5.5e4,5.5e4,5.8e4,4.0e4,2.9e6,5.5e6,1e20};
00023 static const double aa[NDIM] = {0.0219,0.7086,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00024 static const double bb[NDIM] = {-0.4528,-3.1083,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00025 static const double cc[NDIM] = {2.5427,7.0422,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00026 static const double dd[NDIM] = {-0.1678,0.5998,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00027 static const double ff[NDIM] = {0.2276,0.4194,0.1,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00028
00029 DEBUG_ENTRY( "IonAlumi()" );
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 if( !dense.lgElmtOn[ipALUMINIUM] )
00043 {
00044 return;
00045 }
00046
00047 ion_zero(ipALUMINIUM);
00048
00049 ion_photo(ipALUMINIUM,false);
00050
00051
00052 ion_collis(ipALUMINIUM);
00053
00054
00055 ion_recomb(false,(const double*)dicoef,(const double*)dite,ditcrt,aa,bb,cc,dd,ff,ipALUMINIUM);
00056
00057
00058 ion_solver(ipALUMINIUM,false);
00059
00060 if( trace.lgTrace && trace.lgHeavyBug )
00061 {
00062 fprintf( ioQQQ, " IonAlumi returns; frac=" );
00063 for( int i=0; i < 10; i++ )
00064 {
00065 fprintf( ioQQQ, "%10.3e", dense.xIonDense[ipALUMINIUM][i]/
00066 dense.gas_phase[ipALUMINIUM] );
00067 }
00068 fprintf( ioQQQ, "\n" );
00069 }
00070 return;
00071 }