Cloudy
Spectral Synthesis Code for Astrophysics
Loading...
Searching...
No Matches
ionbal.h
Go to the documentation of this file.
1/* This file is part of Cloudy and is copyright (C)1978-2025 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 "module.h"
8#include "container_classes.h"
9
10class dense;
11
14void ion_recom_calculate( void );
15
17void ion_zero(long int nelem);
18
23 long nelem);
24
29void ion_solver(long int nelem, bool lgPrintIt);
30
35void ion_photo(
36 long int nelem ,
37 bool lgPrintIt );
38
40void ion_CX(long nelem );
41
43void ion_recomb(bool,long);
44
46void ion_recombAGN( FILE * io );
47
49void ion_wrapper( long nelem );
50
54void Badnell_rec_init( void );
55
56/* routines to do heavy element ionization balance */
57void IonNelem(bool lgPrintIt, long int nelem);
58void IonHelium( void );
59
61static const int NSHELLS = 7;
62
64class t_ionbal : public module
65{
66public:
67 void alloc();
68
69 const char* chName() const
70 {
71 return "ionbal";
72 }
73 void zero();
74 void comment(t_warnings&);
75
83 double trimhi,
84
88
91
94
97
98 /* ==============================================================
99 * all following deals with ionization processes */
100
113
118
122
125
128
132
136
139
143
146
147 /* ==============================================================
148 * following deal with Compton recoil ionization of bound electrons */
149
154
157
160
163
166
169
172
177
181
185
187 /* ==============================================================
188 * end Compton recoil ionization of bound electrons */
189
190 /* ==============================================================
191 * all following deals with recombination */
192
195
198
203
205
208
211
214
219
220 int
223
226
229
233
236
238 long int ilt,
243
245
246 // find the total ionization rate (including multiple-electron processes)
247 double RateIonizTot( long nelem, long ion ) const;
248
250 {
251 /* number of electrons in valence shell that can Compton recoil ionize */
252 static const long int nCom[LIMELM] = {
253 1 , 2 , /* K 1s shell */
254 1 , 2 , /* L 2s shell */
255 1 , 2 , 3 , 4 , 5 , 6 , /* L 2p shell */
256 1 , 2 , /* M 3s shell */
257 1 , 2 , 3 , 4 , 5 , 6 , /* M 3p shell */
258 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , /* M 3d shell */
259 1 , 2 , /* N 4s shell */
260 1 , 2 /* N 4p shell */
261 };
262
263 for( int nelem=ipHYDROGEN; nelem < LIMELM; ++nelem )
264 {
265 nCompRecoilElec[nelem] = nCom[nelem];
266 }
267 }
268};
269
270extern t_ionbal ionbal;
271
272#endif /* IONBAL_H_ */
const int LIMELM
Definition cddefines.h:318
float realnum
Definition cddefines.h:127
const int ipHYDROGEN
Definition cddefines.h:359
module()
Definition module.h:29
Definition container_classes.h:916
Definition ionbal.h:65
multi_arr< double, 2 > RateRecomIso
Definition ionbal.h:197
bool lgCompRecoil
Definition ionbal.h:153
double elecsrc[LIMELM]
Definition ionbal.h:244
double CompHeating_Max
Definition ionbal.h:186
multi_arr< double, 2 > CX_recomb_rate_used
Definition ionbal.h:202
bool lgRecom_Badnell_print
Definition ionbal.h:207
double CompRecoilHeatLocal
Definition ionbal.h:156
long int ilthn
Definition ionbal.h:240
realnum guess_noise
Definition ionbal.h:225
realnum CotaRate[LIMELM]
Definition ionbal.h:235
void zero()
Definition ionbal.cpp:79
bool lgTrimhiOn
Definition ionbal.h:90
bool lgNoCota
Definition ionbal.h:232
multi_arr< double, 2 > RR_Badnell_rate_coef
Definition ionbal.h:200
multi_arr< double, 2 > UTA_heat_rate
Definition ionbal.h:176
void alloc()
Definition ionbal.cpp:10
multi_arr< double, 3 > CollIonRate_Ground
Definition ionbal.h:121
multi_arr< double, 2 > DR_Badnell_suppress_fact
Definition ionbal.h:204
bool lgTrimloOn
Definition ionbal.h:93
multi_arr< double, 2 > RateRecomTot
Definition ionbal.h:194
void comment(t_warnings &)
Definition ionbal.cpp:122
long int ifail
Definition ionbal.h:242
double CosRayHeatThermalElectrons
Definition ionbal.h:135
multi_arr< double, 2 > CompRecoilIonRateSave
Definition ionbal.h:165
double ExtraHeatRate
Definition ionbal.h:138
double trimhi
Definition ionbal.h:83
multi_arr< double, 2 > DR_Badnell_rate_coef
Definition ionbal.h:201
t_ionbal()
Definition ionbal.h:249
double xNeutronHeatRate
Definition ionbal.h:142
bool lgPhotoIoniz_On
Definition ionbal.h:117
double elecsnk[LIMELM]
Definition ionbal.h:244
const char * chName() const
Definition ionbal.h:69
multi_arr< double, 2 > ExcitationGround
Definition ionbal.h:124
bool lgDRsup
Definition ionbal.h:228
long int ihthn
Definition ionbal.h:241
long int iltln
Definition ionbal.h:239
int lgGrainIonRecom
Definition ionbal.h:222
double trimlo
Definition ionbal.h:87
multi_arr< double, 2 > RR_rate_coef_used
Definition ionbal.h:210
long int ilt
Definition ionbal.h:238
double PairProducPhotoRate[3]
Definition ionbal.h:145
multi_arr< double, 3 > RateIoniz
Definition ionbal.h:180
multi_arr< double, 2 > UTA_ionize_rate
Definition ionbal.h:174
long int nCompRecoilElec[LIMELM]
Definition ionbal.h:184
bool lgNewTrim
Definition ionbal.h:96
multi_arr< double, 2 > CompRecoilHeatRateSave
Definition ionbal.h:171
multi_arr< long, 2 > ipCompRecoil
Definition ionbal.h:159
multi_arr< double, 2 > CompRecoilIonRate
Definition ionbal.h:162
double CosRayIonRate
Definition ionbal.h:127
double RateIonizTot(long nelem, long ion) const
Definition ionbal.cpp:156
double DR_mean_scale[LIMELM]
Definition ionbal.h:218
multi_arr< double, 2 > RR_Verner_rate_coef
Definition ionbal.h:213
multi_arr< double, 2 > CompRecoilHeatRate
Definition ionbal.h:168
double CosRayHeatNeutralParticles
Definition ionbal.h:131
multi_arr< double, 4 > PhotoRate_Shell
Definition ionbal.h:112
Definition warnings.h:11
t_dense dense
Definition global.cpp:15
t_ionbal ionbal
Definition ionbal.cpp:8
void ion_recombAGN(FILE *io)
Definition ion_recomb.cpp:216
void Badnell_rec_init(void)
Definition ion_recomb_Badnell.cpp:598
void ion_recom_calculate(void)
Definition ion_recomb_Badnell.cpp:1309
static const int NSHELLS
Definition ionbal.h:61
void ion_solver(long int nelem, bool lgPrintIt)
Definition ion_solver.cpp:59
void ion_CX(long nelem)
Definition ion_cx.cpp:11
void ion_recomb(bool, long)
void ion_zero(long int nelem)
Definition ion_zero.cpp:8
void ion_collis(long nelem)
void IonHelium(void)
Definition ion_helium.cpp:11
void IonNelem(bool lgPrintIt, long int nelem)
Definition ion_nelem.cpp:9
void ion_wrapper(long nelem)
Definition ion_solver.cpp:1367
void ion_photo(long int nelem, bool lgPrintIt)
Definition ion_photo.cpp:28