/home66/gary/public_html/cloudy/c08_branch/source/atoms.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  t_atoms

Defines

#define N_OI_LEVELS   6
#define LIMLEVELN   20L

Functions

void AtomSeqBeryllium (double cs12, double cs13, double cs23, transition *t, double a30)
void AtomSeqBoron (transition *t21, transition *t31, transition *t41, transition *t32, transition *t42, transition *t52, double cs51, double cs43, double cs53, double cd54, double pump_rate, const char *chLabel)
void atom_level2 (transition *t)
void atom_level3 (transition *t10, transition *t21, transition *t20)
double atom_pop2 (double omega, double g1, double g2, double a21, double bltz, double abund)
double atom_pop3 (double g1, double g2, double g3, double o12, double o13, double o23, double a21, double a31, double a32, double Tex12, double Tex23, realnum *pop2, double abund, double gam2, double r12, double r13)
void atom_pop5 (double g[], double ex[], double cs12, double cs13, double cs14, double cs15, double cs23, double cs24, double cs25, double cs34, double cs35, double cs45, double a21, double a31, double a41, double a51, double a32, double a42, double a52, double a43, double a53, double a54, double p[], realnum abund)
void atom_levelN (long int nlev, realnum abund, const double g[], const double ex[], char chExUnits, double pops[], double depart[], double ***AulEscp, double ***col_str, double ***AulDest, double ***AulPump, double ***CollRate, const double create[], const double destroy[], bool lgCollRateDone, double *cooltl, double *coolder, const char *chLabel, int *nNegPop, bool *lgZeroPop, bool lgDeBug)
void atom_oi_calc (double *coloi)

Variables

EXTERN struct t_atoms atoms


Define Documentation

#define LIMLEVELN   20L

Definition at line 254 of file atoms.h.

Referenced by AtomSeqBoron(), Fe11Lev5(), Fe13Lev5(), Fe2_cooling(), Fe3Lev14(), and Fe4Lev12().

#define N_OI_LEVELS   6

number of levels in OI atom

Definition at line 221 of file atoms.h.


Function Documentation

void atom_level2 ( transition t  ) 

atom_level2 do level population and cooling for two level atom

Parameters:
t 

Definition at line 17 of file atom_level2.cpp.

References ASSERT, atoms, t_emission::Aul, t_dense::cdsqte, chIonLbl(), col12, t_transition::Coll, t_emission::ColOvTot, t_rfield::ContBoltz, t_collision::cool, CoolAdd(), t_collision::cs, t_thermal::dCooldT, DEBUG_ENTRY, dense, t_atoms::DepLTELevels, t_transition::Emis, t_transition::EnergyErg, t_transition::EnergyK, t_quantumState::g, t_thermal::halfte, t_collision::heat, t_transition::Hi, t_quantumState::IonStg, t_transition::ipCont, t_transition::Lo, t_quantumState::nelem, t_emission::ots, t_emission::Pdest, t_emission::Pelec_esc, t_emission::Pesc, t_emission::phots, phycon, t_quantumState::Pop, t_atoms::PopLevels, t_emission::PopOpc, t_emission::pump, rfield, sexp(), t_phycon::te, thermal, t_thermal::tsq1, t_transition::WLAng, t_emission::xIntensity, and t_dense::xIonDense.

Referenced by atom_level3(), AtomSeqBoron(), CoolAlum(), CoolArgo(), CoolCalc(), CoolCarb(), CoolChlo(), CoolChro(), CoolCoba(), CoolIron(), CoolMagn(), CoolMang(), CoolNeon(), CoolNick(), CoolNitr(), CoolPhos(), CoolPota(), CoolScan(), CoolSili(), CoolSodi(), CoolSulf(), CoolTita(), CoolVana(), CoolZinc(), and Fe2_cooling().

Here is the call graph for this function:

void atom_level3 ( transition t10,
transition t21,
transition t20 
)

atom_level3 compute three level atom, 10, 21, and 20 are line

Parameters:
t10 
t21 
t20 

Todo:
2 test on c checks whether collisions are possible at this temperature, should add photo excitation

Todo:
2 these pops ARE NOT defined below

Definition at line 15 of file atom_level3.cpp.

References ASSERT, atom_level2(), atoms, t_emission::Aul, cdEXIT, t_dense::cdsqte, chIonLbl(), chLineLbl(), t_transition::Coll, t_emission::ColOvTot, t_collision::cool, CoolAdd(), t_collision::cs, t_thermal::dCooldT, DEBUG_ENTRY, dense, t_atoms::DepLTELevels, t_dense::eden, t_transition::Emis, EN1RYD, t_transition::EnergyErg, t_transition::EnergyK, fp_equal(), t_quantumState::g, t_thermal::halfte, t_collision::heat, t_transition::Hi, t_quantumState::IonStg, ioQQQ, t_transition::ipCont, t_transition::Lo, MAX2, t_quantumState::nelem, t_emission::Pdest, t_emission::Pelec_esc, t_emission::Pesc, t_emission::phots, phycon, t_rfield::plsfrq, t_quantumState::Pop, t_atoms::PopLevels, t_emission::PopOpc, t_emission::pump, rfield, RT_OTS_AddLine(), ShowMe(), t_phycon::te, t_phycon::teinv, thermal, TotalInsanity(), t_thermal::tsq1, t_transition::WLAng, t_emission::xIntensity, and t_dense::xIonDense.

Referenced by CoolAlum(), CoolArgo(), CoolCalc(), CoolCarb(), CoolChlo(), CoolFluo(), CoolIron(), CoolMagn(), CoolNeon(), CoolNick(), CoolOxyg(), CoolPhos(), CoolPota(), CoolSili(), CoolSodi(), and CoolSulf().

Here is the call graph for this function:

void atom_levelN ( long int  nlev,
realnum  abund,
const double  g[],
const double  ex[],
char  chExUnits,
double  pops[],
double  depart[],
double ***  AulEscp,
double ***  col_str,
double ***  AulDest,
double ***  AulPump,
double ***  CollRate,
const double  create[],
const double  destroy[],
bool  lgCollRateDone,
double *  cooltl,
double *  coolder,
const char *  chLabel,
int *  nNegPop,
bool *  lgZeroPop,
bool  lgDeBug 
)

atom_levelN - compute populations of arbitrary n-level atom

Parameters:
nlev nlev is the number of levels to compute
abund ABUND is total abundance of species, used for nth equation
g[] G(ndim) is stat weight of levels
ex[] EX(ndim) is excitation potential of levels, either wn or deg K 0 for first one, NOT d(ENER), but energy rel to ground
chExUnits this is 'K' for above ex[] as Kelvin deg, is 'w' for wavenumbers
pops[] populations of each level as deduced here
depart[] departure coefficient derived here
AulEscp net transition rate, A * esc prob, s-1
col_str col str rom up to low
AulDest AulDest(ilo,ihi) is destruction rate, from up to low, A * dest prob, [s-1], asserts confirm that ihi,lo is zero
AulPump AulPump(lo, hi) is pumping rate, A * occ num, (hi,lo) must be zero, [s-1]
CollRate collision rates, evaluated here and returned for cooling by calling function, unless following flag is true. If true then calling function has already filled in these rates. CollRate[i][j] is rate from i to j
create this is an additional creation rate, normally zero, units cm-3 s-1
destroy[] this is an additional destruction rate to continuum, normally zero, units s-1
lgCollRateDone flag saying whether CollRate already done, or we need to do it here
cooltl total cooling, set here but nothing done with it
coolder derivative of cooling, set here but nothing done with it
chLabel string used to identify calling program in case of error
lgNegPop lgNegPop flag indicating what we have done positive if negative populations occurred zero if normal calculation done negative if too cold (for some atoms other routine will be called in this case)
lgZeroPop true if populations are zero, either due to zero abundance of very low temperature
lgDeBug option to print matrices for debugging
Postcondition:
atoms.PopLevels[n], atoms.DepLTELevels[n] are set lines added to ots array

Definition at line 13 of file atom_leveln.cpp.

References amat, ASSERT, DEBUG_ENTRY, ioQQQ, ipiv, t_trace::lgTrace, t_trace::lgTrLevN, phycon, sexp(), T1CM, t_phycon::te, t_phycon::te_wn, TotalInsanity(), and trace.

Referenced by atmol_popsolve(), AtomSeqBoron(), Fe2_cooling(), Fe4Lev12(), and H2_Level_low_matrix().

Here is the call graph for this function:

void atom_oi_calc ( double *  coloi  ) 

atom_oi drive the solution of OI level populations, Ly-beta pumping

Parameters:
coloi 

Todo:
2 this is not used, should it be?

Todo:
2 following needed to get badbugs/bug8.in to work

Todo:
2 following needed to get badbugs/bug5.in to work

Definition at line 23 of file atom_oi.cpp.

References atoms, t_emission::Aul, DEBUG_ENTRY, dense, t_transition::Emis, t_atoms::esch31, ioQQQ, ipH1s, ipH3p, ipH_LIKE, ipHYDROGEN, ipOXYGEN, ipTO1025, t_trace::lgTr8446, t_trace::lgTrace, t_atoms::pmph31, t_atoms::pmpo15, t_atoms::pmpo51, t_atoms::popoi, TauLines, trace, Transitions, and t_dense::xIonDense.

Referenced by CoolOxyg().

double atom_pop2 ( double  omega,
double  g1,
double  g2,
double  a21,
double  bltz,
double  abund 
)

atom_pop2 do level population for simple two level atom, no radiative transfer

Parameters:
omega 
g1 
g2 
a21 
bltz 
abund 

Definition at line 9 of file atom_pop2.cpp.

References ASSERT, t_dense::cdsqte, DEBUG_ENTRY, dense, phycon, and t_phycon::teinv.

Referenced by CoolArgo(), CoolChro(), CoolIron(), CoolMagn(), CoolNeon(), CoolScan(), and IonOxyge().

double atom_pop3 ( double  g1,
double  g2,
double  g3,
double  o12,
double  o13,
double  o23,
double  a21,
double  a31,
double  a32,
double  Tex12,
double  Tex23,
realnum pop2,
double  abund,
double  gam2,
double  r12,
double  r13 
)

atom_pop3 return value is population for 3-level atom, cm^-3

Parameters:
g1 statictical weights of level 1
g2 statictical weights of level 2
g3 statictical weights of level 3
o12 collision strengths between three levels
o13 collision strengths between three levels
o23 collision strengths between three levels
a21 transition probabilities between three levels
a31 transition probabilities between three levels
a32 transition probabilities between three levels
Tex12 excitation energy in Kelvin
Tex23 excitation energy in Kelvin
*pop2 returned population of level 2, cm^-3
abund incoming total abundance of ion
gam2 possible photodestruction of level 2, normally 0
r12 excitation rates (s-1) due to "other" processes
r13 excitation rates (s-1) due to "other" processes

Definition at line 10 of file atom_pop3.cpp.

References ASSERT, atoms, t_atoms::c12, t_atoms::c13, t_dense::cdsqte, DEBUG_ENTRY, dense, phycon, SMALLFLOAT, and t_phycon::te.

Referenced by CoolAlum(), CoolArgo(), CoolCalc(), CoolCarb(), CoolChlo(), CoolChro(), CoolIron(), CoolNeon(), CoolOxyg(), CoolPhos(), CoolScan(), CoolSodi(), CoolSulf(), CoolTita(), and CoolVana().

void atom_pop5 ( double  g[],
double  ex[],
double  cs12,
double  cs13,
double  cs14,
double  cs15,
double  cs23,
double  cs24,
double  cs25,
double  cs34,
double  cs35,
double  cs45,
double  a21,
double  a31,
double  a41,
double  a51,
double  a32,
double  a42,
double  a52,
double  a43,
double  a53,
double  a54,
double  p[],
realnum  abund 
)

atom_pop5 do populations and cooling for five level atom

Parameters:
g[] 
ex[] 
cs12 
cs13 
cs14 
cs15 
cs23 
cs24 
cs25 
cs34 
cs35 
cs45 
a21 
a31 
a41 
a51 
a32 
a42 
a52 
a43 
a53 
a54 
p[] 
abund 

Todo:
2 p(5) was very slightly negative (1e-40) for SII in dqher.in

Definition at line 12 of file atom_pop5.cpp.

References amat, cdEXIT, t_dense::cdsqte, DEBUG_ENTRY, dense, getrf_wrapper(), getrs_wrapper(), ioQQQ, ipiv, MAX2, phycon, sexp(), T1CM, and t_phycon::te.

Referenced by CoolArgo(), CoolCalc(), CoolChlo(), and CoolSulf().

Here is the call graph for this function:

void AtomSeqBeryllium ( double  cs12,
double  cs13,
double  cs23,
transition t,
double  a30 
)

AtomSeqBeryllium compute level populations and emissivity for Be-sequence ions

Parameters:
cs12 
cs13 
cs23 
t 
a30 

Definition at line 13 of file atom_seq_beryllium.cpp.

References amat, ASSERT, atoms, t_emission::Aul, cdEXIT, t_dense::cdsqte, chIonLbl(), t_transition::Coll, t_emission::ColOvTot, t_collision::cool, CoolAdd(), t_collision::cs, t_thermal::dCooldT, DEBUG_ENTRY, dense, t_atoms::DepLTELevels, t_transition::Emis, t_transition::EnergyErg, t_transition::EnergyK, t_quantumState::g, getrf_wrapper(), getrs_wrapper(), t_thermal::halfte, t_collision::heat, t_transition::Hi, t_quantumState::IonStg, ioQQQ, ipiv, t_transition::Lo, t_quantumState::nelem, t_emission::Pdest, t_emission::Pelec_esc, t_emission::Pesc, t_emission::phots, phycon, t_quantumState::Pop, t_atoms::PopLevels, t_emission::PopOpc, t_emission::pump, t_phycon::te, thermal, t_thermal::tsq1, t_transition::WLAng, t_emission::xIntensity, and t_dense::xIonDense.

Referenced by CoolAlum(), CoolIron(), and CoolNeon().

Here is the call graph for this function:

void AtomSeqBoron ( transition t21,
transition t31,
transition t41,
transition t32,
transition t42,
transition t52,
double  cs51,
double  cs43,
double  cs53,
double  cd54,
double  pump_rate,
const char *  chLabel 
)

AtomSeqBoron compute cooling from 5-level boron sequence model atom

Parameters:
t21 
t31 
t41 
t32 
t42 
t52 
cs51 
cs43 
cs53 
cd54 
pump_rate pump rate due to UV permitted lines
chLabel string used to identify calling program in case of error

Todo:
2 use TransitionZero here

Definition at line 10 of file atom_seq_boron.cpp.

References ASSERT, atom_level2(), atom_levelN(), atoms, t_emission::Aul, t_transition::Coll, t_emission::ColOvTot, t_collision::cool, CoolAdd(), t_collision::cs, t_thermal::dCooldT, DEBUG_ENTRY, dense, t_atoms::DepLTELevels, t_transition::Emis, t_transition::EnergyErg, t_transition::EnergyK, t_quantumState::g, t_thermal::halfte, t_collision::heat, t_transition::Hi, t_quantumState::IonStg, LIMLEVELN, t_transition::Lo, MALLOC, N_SEQ_BORON, t_quantumState::nelem, t_emission::Pdest, t_emission::Pelec_esc, t_emission::Pesc, t_emission::phots, t_quantumState::Pop, t_atoms::PopLevels, t_emission::PopOpc, t_emission::pump, thermal, t_thermal::tsq1, t_transition::WLAng, t_emission::xIntensity, and t_dense::xIonDense.

Here is the call graph for this function:


Variable Documentation

EXTERN struct t_atoms atoms

Referenced by atom_level2(), atom_level3(), atom_oi_calc(), atom_pop3(), AtomSeqBeryllium(), AtomSeqBoron(), CoolAlum(), CoolCarb(), CoolIron(), CoolMagn(), CoolNeon(), CoolOxyg(), Fe11Lev5(), Fe13Lev5(), Fe2_cooling(), Fe3Lev14(), Fe4Lev12(), IonMagne(), IonNitro(), lines_lv1_li_ne(), oi_level_pops(), and PrtComment().


Generated on Mon Feb 16 12:02:11 2009 for cloudy by  doxygen 1.4.7