00001 /* This file is part of Cloudy and is copyright (C)1978-2013 by Gary J. Ferland and 00002 * others. For conditions of distribution and use see copyright notice in license.txt */ 00003 /*IonNelem ionization balance for elements without special cases */ 00004 #include "cddefines.h" 00005 #include "trace.h" 00006 #include "dense.h" 00007 #include "ionbal.h" 00008 #include "mole.h" 00009 #include "oxy.h" 00010 #include "atmdat.h" 00011 #include "hmi.h" 00012 00014 void ion_CX( long nelem ) 00015 { 00016 DEBUG_ENTRY( "ion_CX()" ); 00017 00018 ASSERT( nelem < LIMELM); 00019 ASSERT( nelem > 1 ); 00020 00021 long limit = MIN2(nelem-NISO,dense.IonHigh[nelem]-1); 00022 00023 for( long ion=dense.IonLow[nelem]; ion <= limit; ion++ ) 00024 { 00025 /* number of bound electrons of the ion after recombination, 00026 * for an atom (ion=0) this is 00027 * equal to nelem+1, the element on the physical scale, since nelem is 00028 * on the C scale, being 5 for carbon */ 00029 00030 ionbal.CX_recomb_rate_used[nelem][ion] = 00031 /* He0 + ion charge transfer recombination */ 00032 atmdat.HeCharExcRecTo[nelem][ion]* 00033 /* following is density [cm-3] of He0 */ 00034 dense.xIonDense[ipHELIUM][0] + 00035 /* H0 + ion charge transfer recombination */ 00036 atmdat.HCharExcRecTo[nelem][ion]* 00037 /* following is density [cm-3] of H0 */ 00038 dense.xIonDense[ipHYDROGEN][0]; 00039 } 00040 00041 return; 00042 }