cloudy
trunk
|
00001 /* This file is part of Cloudy and is copyright (C)1978-2008 by Gary J. Ferland and 00002 * others. For conditions of distribution and use see copyright notice in license.txt */ 00003 /*IonPhosi derive ionization balance for phosphorus */ 00004 #include "cddefines.h" 00005 #include "dense.h" 00006 #include "ionbal.h" 00007 00008 void IonPhosi(void) 00009 { 00010 const int NDIM = ipPHOSPHORUS+1; 00011 00012 static const double dicoef[2][NDIM] = { 00013 {1.62e-3,1.09e-2,3.35e-2,3.14e-2,1.27e-2,1.47e-2,1.34e-2,2.38e-2, 00014 3.19e-2,7.13e-2,.08,.0796,.0134,.402,0.}, 00015 {0.,1.20e-2,6.59e-2,6.89e-2,.187,.129,1.04,1.12,1.40,1.00,.555, 00016 1.63,.304,.298,0.} 00017 }; 00018 static const double dite[2][NDIM] = { 00019 {1.25e5,1.92e5,1.89e5,1.68e5,1.38e5,1.80e6,6.90e5,5.84e5,5.17e5, 00020 6.66e5,6.00e5,5.09e5,2.91e5,2.41e7,0.}, 00021 {0.,1.80e4,1.59e5,8.04e4,1.71e5,1.75e6,2.15e6,2.59e6,2.91e6,2.32e6, 00022 2.41e6,6.37e6,1.04e6,4.67e6,0.} 00023 }; 00024 static const double aa[NDIM] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}; 00025 static const double bb[NDIM] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}; 00026 static const double cc[NDIM] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}; 00027 static const double dd[NDIM] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}; 00028 static const double ff[NDIM] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.}; 00029 static const double ditcrt[NDIM] = {2.2e4,1.2e4,1.4e4,1.5e4,1.4e4,2.9e5, 00030 1.3e5,1.1e5,9.0e4,9.0e4,9.0e4,8.3e4,6.0e4,5.0e6,1e20}; 00031 00032 DEBUG_ENTRY( "IonPhosi()" ); 00033 00034 /* phosphorus nelem=15 00035 * data from sulphus 00036 * 00037 * rec from +13 14 15 from Arnauld et al 85 */ 00038 /* Pequignot and Aldrovandi Ast Ap 161, 169. */ 00039 00040 if( !dense.lgElmtOn[ipPHOSPHORUS] ) 00041 { 00042 return; 00043 } 00044 00045 ion_zero(ipPHOSPHORUS); 00046 00047 ion_photo(ipPHOSPHORUS,false); 00048 00049 /* find collisional ionization rates */ 00050 ion_collis(ipPHOSPHORUS); 00051 00052 /* get recombination coefficients */ 00053 ion_recomb(false,(const double*)dicoef,(const double*)dite,ditcrt,aa,bb,cc,dd,ff,ipPHOSPHORUS); 00054 00055 /* solve for ionization balance */ 00056 ion_solver(ipPHOSPHORUS,false); 00057 return; 00058 }