00001
00002
00003
00004 #include "cddefines.h"
00005 #include "trace.h"
00006 #include "dense.h"
00007 #include "ionbal.h"
00008
00009 void IonSodiu(void)
00010 {
00011 const int NDIM = ipSODIUM+1;
00012
00013 static const double dicoef[2][NDIM] = {
00014 {1.0e-3,2.6e-3,6.0e-3,1.1e-2,8.0e-3,1.0e-2,3.2e-2,1.2e-2,2.2e-1,1.8e-1,0.},
00015 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}
00016 };
00017 static const double dite[2][NDIM] = {
00018 {3.6e5,3.8e5,3.4e5,3.0e5,2.7e5,2.8e5,3.2e5,1.9e5,1.2e7,1.3e7,0.},
00019 {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}
00020 };
00021 static const double ditcrt[NDIM] = {0.,1.3e5,4.4e5,7.2e4,2.8e5,4.0e5,
00022 1.3e6,1.6e6,1.9e6,3.4e4,0.};
00023 static const double aa[NDIM] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00024 static const double bb[NDIM] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00025 static const double cc[NDIM] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00026 static const double dd[NDIM] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00027 static const double ff[NDIM] = {0.1,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
00028
00029 DEBUG_ENTRY( "IonSodiu()" );
00030
00031
00032
00033
00034
00035
00036
00037
00038 if( !dense.lgElmtOn[ipSODIUM] )
00039 {
00040 return;
00041 }
00042
00043 ion_zero(ipSODIUM);
00044
00045 ion_photo(ipSODIUM,false);
00046
00047
00048 ion_collis(ipSODIUM);
00049
00050
00051 ion_recomb(false,(const double*)dicoef,(const double*)dite,ditcrt,aa,bb,cc,dd,ff,ipSODIUM);
00052
00053
00054 ion_solver(ipSODIUM,false);
00055
00056 if( trace.lgTrace && trace.lgHeavyBug )
00057 {
00058 fprintf( ioQQQ, " IonSodiu returns; frac=" );
00059 for( int i=0; i < 10; i++ )
00060 {
00061 fprintf( ioQQQ, "%10.3e", dense.xIonDense[ipSODIUM][i]/
00062 dense.gas_phase[ipSODIUM] );
00063 }
00064 fprintf( ioQQQ, "\n" );
00065 }
00066 return;
00067 }