cloudy  trunk
ionbal.h
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2013 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 
4 #ifndef IONBAL_H_
5 #define IONBAL_H_
6 
7 #include "dense.h"
8 
9 bool lgOH_ChargeTransferDominant( void );
10 
13 void ion_recom_calculate( void );
14 
18 void ion_trim(
19  long int nelem );
20 
22 void ion_zero(long int nelem);
23 
27 void ion_collis(
28  long nelem);
29 
34 void ion_solver(long int nelem, bool lgPrintIt);
35 
36 #if 0
37 
42 void ion_solver(long int nelem1, long int nelem2, bool lgPrintIt);
43 #endif
44 
49 void ion_photo(
50  long int nelem ,
51  bool lgPrintIt );
52 
54 void ion_CX(long nelem );
55 
57 void ion_recomb(bool,long);
58 
60 void ion_recombAGN( FILE * io );
61 
63 void ion_wrapper( long nelem );
64 
68 void Badnell_rec_init( void );
69 
70 /* routines to do heavy element ionization balance */
71 void IonNelem(bool lgPrintIt, long int nelem);
72 void IonHelium( void );
73 
75 #define NSHELLS 7
76 
78 class t_ionbal
79 {
80 public:
88  double trimhi,
89 
93 
95  bool lgTrimhiOn;
96 
97  /* ==============================================================
98  * all following deals with ionization processes */
99 
111  double ****PhotoRate_Shell;
112 
117 
121 
124 
128 
132 
135 
139 
142 
143  /* ==============================================================
144  * following deal with Compton recoil ionization of bound electrons */
145 
150 
153 
155  long int **ipCompRecoil;
156 
159 
162 
165 
168 
170  double **UTA_ionize_rate;
172  double **UTA_heat_rate;
173 
181 
184  double ***RateIoniz;
185 
189 
191  /* ==============================================================
192  * end Compton recoil ionization of bound electrons */
193 
194  /* ==============================================================
195  * all following deals with recombination */
196 
198  double **RateRecomTot;
199 
201  double **RateRecomIso;
202 
207 
210 
213 
216 
221 
225 
226  int
229 
232 
235  bool lgSupDie[2];
236 
239  bool lgNoCota;
240 
243 
245  long int ilt,
250 
252 
253  // find the total ionization rate (including multiple-electron processes)
254  double RateIonizTot( long nelem, long ion )
255  {
256  double sum = 0.;
257 
258  for( long ion_to=ion+1; ion_to<=dense.IonHigh[nelem]; ion_to++ )
259  sum += RateIoniz[nelem][ion][ion_to];
260 
261  return sum;
262  }
263 };
264 
265 #if 0
266 double t_ionbal::RateIonizTot(long nelem, long ion)
267 {
268  double sum = 0.;
269 
270  for( long ion_to=ion+1; ion_to<=dense.IonHigh[nelem]; ion_to++ )
271  sum += t_ionbal::RateIoniz[nelem][ion][ion_to];
272 
273  return sum;
274 }
275 #endif
276 
277 extern t_ionbal ionbal;
278 
279 #endif /* IONBAL_H_ */
t_ionbal::ilthn
long int ilthn
Definition: ionbal.h:247
t_ionbal::lgCompRecoil
bool lgCompRecoil
Definition: ionbal.h:149
t_ionbal::CompRecoilHeatRateSave
double ** CompRecoilHeatRateSave
Definition: ionbal.h:167
t_ionbal::PhotoRate_Shell
double **** PhotoRate_Shell
Definition: ionbal.h:111
t_ionbal::PairProducPhotoRate
double PairProducPhotoRate[3]
Definition: ionbal.h:141
t_ionbal::trimlo
double trimlo
Definition: ionbal.h:92
dense
t_dense dense
Definition: dense.cpp:24
IonHelium
void IonHelium(void)
Definition: ion_helium.cpp:12
t_ionbal::CotaRate
realnum CotaRate[LIMELM]
Definition: ionbal.h:242
t_ionbal::CompHeating_Max
double CompHeating_Max
Definition: ionbal.h:190
ion_recom_calculate
void ion_recom_calculate(void)
Definition: ion_recomb_Badnell.cpp:1202
realnum
float realnum
Definition: cddefines.h:103
t_ionbal::RateRecomTot
double ** RateRecomTot
Definition: ionbal.h:198
t_ionbal::CosRayHeatThermalElectrons
double CosRayHeatThermalElectrons
Definition: ionbal.h:131
t_ionbal::lgSupDie
bool lgSupDie[2]
Definition: ionbal.h:235
t_ionbal::GrainDestr
realnum ** GrainDestr
Definition: ionbal.h:224
t_ionbal::RR_rate_coef_used
double ** RR_rate_coef_used
Definition: ionbal.h:212
t_ionbal::xNeutronHeatRate
double xNeutronHeatRate
Definition: ionbal.h:138
ion_collis
void ion_collis(long nelem)
t_ionbal::RR_Badnell_rate_coef
double ** RR_Badnell_rate_coef
Definition: ionbal.h:204
t_ionbal::UTA_heat_rate
double ** UTA_heat_rate
Definition: ionbal.h:172
t_ionbal
Definition: ionbal.h:78
ion_solver
void ion_solver(long int nelem, bool lgPrintIt)
Definition: ion_solver.cpp:62
t_ionbal::lgTrimhiOn
bool lgTrimhiOn
Definition: ionbal.h:95
t_ionbal::UTA_ionize_rate
double ** UTA_ionize_rate
Definition: ionbal.h:170
t_ionbal::GrainCreat
realnum ** GrainCreat
Definition: ionbal.h:223
t_ionbal::ilt
long int ilt
Definition: ionbal.h:245
t_ionbal::DR_Badnell_rate_coef
double ** DR_Badnell_rate_coef
Definition: ionbal.h:205
t_ionbal::guess_noise
realnum guess_noise
Definition: ionbal.h:231
t_ionbal::CompRecoilIonRateSave
double ** CompRecoilIonRateSave
Definition: ionbal.h:161
dense.h
t_ionbal::elecsrc
double elecsrc[LIMELM]
Definition: ionbal.h:251
ion_trim
void ion_trim(long int nelem)
Definition: ion_trim.cpp:21
t_ionbal::RR_Verner_rate_coef
double ** RR_Verner_rate_coef
Definition: ionbal.h:215
t_ionbal::trimhi
double trimhi
Definition: ionbal.h:88
ionbal
t_ionbal ionbal
Definition: ionbal.cpp:5
t_ionbal::ifail
long int ifail
Definition: ionbal.h:249
ion_wrapper
void ion_wrapper(long nelem)
Definition: ion_solver.cpp:1498
ion_recomb
void ion_recomb(bool, long)
t_ionbal::lgRecom_Badnell_print
bool lgRecom_Badnell_print
Definition: ionbal.h:209
t_ionbal::CosRayHeatNeutralParticles
double CosRayHeatNeutralParticles
Definition: ionbal.h:127
ion_CX
void ion_CX(long nelem)
Definition: ion_cx.cpp:14
t_ionbal::RateRecomIso
double ** RateRecomIso
Definition: ionbal.h:201
t_ionbal::CompRecoilHeatLocal
double CompRecoilHeatLocal
Definition: ionbal.h:152
LIMELM
const int LIMELM
Definition: cddefines.h:258
Badnell_rec_init
void Badnell_rec_init(void)
Definition: ion_recomb_Badnell.cpp:462
t_dense::IonHigh
long int IonHigh[LIMELM+1]
Definition: dense.h:120
t_ionbal::lgNoCota
bool lgNoCota
Definition: ionbal.h:239
ion_zero
void ion_zero(long int nelem)
Definition: ion_zero.cpp:8
t_ionbal::iltln
long int iltln
Definition: ionbal.h:246
t_ionbal::ExtraHeatRate
double ExtraHeatRate
Definition: ionbal.h:134
t_ionbal::lgInnerShell_Kisielius
bool lgInnerShell_Kisielius
Definition: ionbal.h:177
lgOH_ChargeTransferDominant
bool lgOH_ChargeTransferDominant(void)
Definition: ion_solver.cpp:370
t_ionbal::lgInnerShellLine_on
bool lgInnerShellLine_on
Definition: ionbal.h:175
t_ionbal::lgInnerShell_Gu06
bool lgInnerShell_Gu06
Definition: ionbal.h:180
t_ionbal::RateIonizTot
double RateIonizTot(long nelem, long ion)
Definition: ionbal.h:254
t_ionbal::ihthn
long int ihthn
Definition: ionbal.h:248
t_ionbal::CompRecoilIonRate
double ** CompRecoilIonRate
Definition: ionbal.h:158
t_ionbal::CollIonRate_Ground
double *** CollIonRate_Ground
Definition: ionbal.h:120
t_ionbal::nCompRecoilElec
long int nCompRecoilElec[LIMELM]
Definition: ionbal.h:188
t_ionbal::ipCompRecoil
long int ** ipCompRecoil
Definition: ionbal.h:155
t_ionbal::CX_recomb_rate_used
double ** CX_recomb_rate_used
Definition: ionbal.h:206
ion_recombAGN
void ion_recombAGN(FILE *io)
Definition: ion_recomb.cpp:218
ion_photo
void ion_photo(long int nelem, bool lgPrintIt)
Definition: ion_photo.cpp:26
t_ionbal::lgGrainIonRecom
int lgGrainIonRecom
Definition: ionbal.h:228
t_ionbal::DR_mean_scale
double DR_mean_scale[LIMELM]
Definition: ionbal.h:220
t_ionbal::lgPhotoIoniz_On
bool lgPhotoIoniz_On
Definition: ionbal.h:116
t_ionbal::CosRayIonRate
double CosRayIonRate
Definition: ionbal.h:123
t_ionbal::elecsnk
double elecsnk[LIMELM]
Definition: ionbal.h:251
t_ionbal::RateIoniz
double *** RateIoniz
Definition: ionbal.h:184
IonNelem
void IonNelem(bool lgPrintIt, long int nelem)
Definition: ion_nelem.cpp:12
t_ionbal::CompRecoilHeatRate
double ** CompRecoilHeatRate
Definition: ionbal.h:164