Cloudy
Spectral Synthesis Code for Astrophysics
Loading...
Searching...
No Matches
iso.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 ISO_H_
5#define ISO_H_
6
8#include "module.h"
9#include "transition.h"
10#include "container_classes.h"
11
12class two_photon;
13class freeBound;
14
15extern long int max_num_levels;
16
19#define KILL_BELOW_PLASMA(E_) ( (rfield.lgPlasNu && ((E_)<rfield.plsfrq) ) ? 0.:1. )
20
22#define N_(A_) (iso_sp[ipISO][nelem].st[A_].n())
23#define L_(A_) (iso_sp[ipISO][nelem].st[A_].l())
24#define S_(A_) (iso_sp[ipISO][nelem].st[A_].S())
25#define J_(A_) (iso_sp[ipISO][nelem].st[A_].j())
26
28
29const int ipH1s = 0;
30const int ipH2s = 1;
31const int ipH2p = 2;
32const int ipH3s = 3;
33const int ipH3p = 4;
34const int ipH3d = 5;
35const int ipH4s = 6;
36const int ipH4p = 7;
37const int ipH4d = 8;
38const int ipH4f = 9;
39
41
42/* level 1 */
43const int ipHe1s1S = 0;
44
45/* level 2 */
46const int ipHe2s3S = 1;
47const int ipHe2s1S = 2;
48const int ipHe2p3P0 = 3;
49const int ipHe2p3P1 = 4;
50const int ipHe2p3P2 = 5;
51const int ipHe2p1P = 6;
52
53/* level 3 */
54const int ipHe3s3S = 7;
55const int ipHe3s1S = 8;
56const int ipHe3p3P = 9;
57const int ipHe3d3D = 10;
58const int ipHe3d1D = 11;
59const int ipHe3p1P = 12;
60
64const int ipH_LIKE = 0;
65const int ipHE_LIKE = 1;
66const int ipLI_LIKE = 2;
67const int ipBE_LIKE = 3;
68const int ipB_LIKE = 4;
69const int ipC_LIKE = 5;
70const int ipN_LIKE = 6;
71const int ipO_LIKE = 7;
72const int ipF_LIKE = 8;
73const int ipNE_LIKE = 9;
74const int ipNA_LIKE = 10;
75const int ipMG_LIKE = 11;
76const int ipAL_LIKE = 12;
77const int ipSI_LIKE = 13;
78const int ipP_LIKE = 14;
79const int ipS_LIKE = 15;
80const int ipCL_LIKE = 16;
81const int ipAR_LIKE = 17;
82
83enum {
86};
87
88const int IPRAD = 0;
89const int IPCOLLIS = 1;
90/*const int IPENERGY = 2;*/
91
92/* following two macros used to define recombination coef arrays */
93/* Max n desired in RRCoef file. */
96/* Hydrogen and helium atoms will have precompiled recombination coefficients up to these maximum n. */
97const int RREC_MAXN = 40;
98
100inline int LIKE_RREC_MAXN(int nelem) { return ( nelem == ipHELIUM ) ? 40 : 20; }
101
102const int N_ISO_TE_RECOMB = 41;
103
106const int SumUpToThisN = 1000;
108const int RECOMBMAGIC = 130216;
110const int ENERGIESMAGIC = 20190102;
111
112typedef uint64 QNPack;
113
114inline QNPack QN2ind(long n, long l, long s, long g = -1)
115{
116 // Index routine for the iso sequences
117 // Quantum physics guarantees 0 <= l < n and 0 <= j <= n, while s = 1, 2, or 3
118 // In many cases g = 2*j+1 will be -1 to state that the level is not j-resolved
119
120 // first check arguments
121 ASSERT( n > 0 );
122 l = max(l, -1);
123 s = max(s, -1);
124 g = max(g, -1);
125
126 // make sure g value is resolved where possible, this avoids ambiguity in matches
127 if( (l == 0 || s == 1) && g < 0 )
128 g = max(2*l+1, s);
129
130 // make sure that n, l, s, g can be extracted unambiguously from QNPack
131 ASSERT( MAX4(n,l,s,g) < 0xffffL );
132
133 uint64 nn = uint64(n&0xffff);
134 uint64 ll = uint64(l&0xffff);
135 uint64 ss = uint64(s&0xffff);
136 uint64 gg = uint64(g&0xffff);
137 return (nn<<48) | (ll<<32) | (ss<<16) | gg;
138}
139
140struct QNPair
141{
144 bool operator< (const QNPair& q2) const
145 {
146 return ( hi < q2.hi ) || (hi == q2.hi && lo < q2.lo);
147 }
148 QNPair(int nhi, int lhi, int shi, int ghi, int nlo, int llo, int slo, int glo)
149 {
150 hi = QN2ind(nhi, lhi, shi, ghi);
151 lo = QN2ind(nlo, llo, slo, glo);
152 }
153};
154
155inline QNPair QN2ind(int nhi, int lhi, int shi, int ghi, int nlo, int llo, int slo, int glo)
156{
157 return QNPair(nhi, lhi, shi, ghi, nlo, llo, slo, glo);
158}
159
160int getL(char l);
161
166void iso_cascade( long ipISO, long nelem );
167
170void iso_charge_transfer_update( long nelem );
171
176void iso_collide( long ipISO, long nelem );
177
182void iso_collisional_ionization( long ipISO, long nelem );
183
188void iso_continuum_lower( long ipISO , long nelem );
189
194void iso_cool( long ipISO , long nelem );
195
202void iso_setRedisFun (long ipISO, long nelem, long ipLo, long ipHi);
203
210void iso_setOpacity (long ipISO, long nelem, long ipLo, long ipHi);
211
214void iso_create( void );
215
225double iso_cross_section( double ERyd , double EthRyd, long n, long l, long S, long globalZ, long globalISO );
226
231void iso_departure_coefficients( long ipISO, long nelem );
232
238double iso_dielec_recomb_rate( long ipISO, long nelem, long ipLo );
239
244void iso_error_generation( long ipISO, long nelem );
245
251long iso_get_total_num_levels( long ipISO, long nmaxResolved, long numCollapsed );
252
255void IonHydro( );
256
261void iso_ionize_recombine( long ipISO , long nelem );
262
268void iso_level( const long ipISO, const long nelem, double& renorm );
269
274void iso_photo( long ipISO , long nelem );
275
281void iso_prt_pops( long ipISO, long nelem, bool lgPrtDeparCoef );
282
292void iso_put_error(long ipISO,long nelem,long ipHi,long ipLo,long whichData,realnum errorOpt,realnum errorPess);
293
303void iso_put_error(long ipISO,long nelem,QNPack inHi,QNPack inLo,long whichData,realnum errorOpt,realnum errorPess);
304
309void iso_radiative_recomb( long ipISO, long nelem );
310
315void iso_radiative_recomb_effective( long ipISO, long nelem );
316
324double iso_recomb_check( long ipISO, long nelem, long level, double temperature );
325
329
332void iso_recomb_alloc();
333
337void iso_recomb_setup( long ipISO );
338
345double iso_RRCoef_Te( long ipISO, long nelem, double temp, long n );
346
349void iso_satellite_update( long nelem );
350
351/* calculate radiative lifetime of an individual iso state
352\param ipISO
353\param nelem
354\param n
355\param l
356*/
357double iso_state_lifetime( long ipISO, long nelem, long n, long l );
358
362void iso_solve( long ipISO, long nelem, double &maxerr );
363
368void iso_suprathermal( long ipISO, long nelem );
369
374void iso_update_num_levels( long ipISO, long nelem );
375
378void iso_update_rates( void );
379
385long int iso_Max_Emitting_Level(long nelem, long ipISO, bool lgPrnIsoCollapsed);
386
387void iso_init_energies();
388
389double hydro_energy(long nelem, long n, long l, long s, long g);
390
391void iso_collapsed_update( void );
392
393void iso_set_ion_rates( long ipISO, long nelem);
394
395void iso_init();
396
397class t_isoCTRL : public module
398{
399public:
400 void zero();
402
403 const char *chName() const
404 {
405 return "iso_ctrl";
406 }
407
409
410 const char *chISO[NISO];
411
414 long int nLyman[NISO],
419
424
428
431
434
437
439
443
447
448 /* option to disable continuum lowering due to stark broadening, particle packing, etc. */
450
454
457
460
466
469
472
475
480
498 int nCS_new[NISO];//vals are 0, 1, and 2
499
502
506
508
510
512
514
516 {
517 chISO[ipH_LIKE] = "H-like ";
518 chISO[ipHE_LIKE] = "He-like";
519 /* This is 1/10 of Athena's resolution in eV. */
520 Resolution = 0.25;
521 }
522};
523
524extern t_isoCTRL iso_ctrl;
525
527{
528public:
530 double pestrk;
531 double pestrk_up;
532
533 /* NB NB NB --- Error and ErrorFactor need one more slot than all the rest of these! */
534 /* and the last dimension can just be hardwired to 3 */
535
537 /* first dimension is upper level,
538 * second is lower level,
539 * third is for radiative, collisional, or energy errors.
540 * MACROS are used for the last dimension: IPRAD, IPCOLLIS, and IPENERGY. */
542
546
549};
550
552{
553 map<QNPack, long> QNPack2Index;
554
555public:
556 TransitionProxy trans( const long ipHi, const long ipLo )
557 {
558 return (*tr)[ ipTrans[ipHi][ipLo] ];
559 }
564 vector<freeBound> fb;
566 qList stJ05; /* stJ05 should only be used for H iso-sequence, otherwise need to change iso_assign_quantum_numbers() routine in is_create.cpp */
569
571 long QN2Index(QNPack ind);
572 long QN2Index(long n, long l, long s, long g = -1)
573 {
574 QNPack ind = QN2ind(n, l, s, g);
575 return QN2Index(ind);
576 }
577
579 map<QNPack, double> Energy;
580
582 double IonPot;
583
585 double energy(long n, long l, long s, long g = -1) const
586 {
587 QNPack ind = QN2ind(n, l, s, g);
588 auto p = Energy.find(ind);
589 if( p != Energy.end() )
590 return p->second;
591 else
592 return -1.;
593 }
594
596 double energy_ioniz(long n, long l, long s, long g = -1) const
597 {
598 double ERelToground = energy(n, l, s, g);
599 if( ERelToground >= 0. && ERelToground < IonPot )
600 return IonPot - ERelToground;
601 else
602 return -1.;
603 }
604
606 map<QNPair, double> CachedAs;
607
611
614
617
620
623
627
628 /* flag that says we must reevaluate everything about this ion */
630
631 /* set true if "element ionization" forces rescaling of pops */
633
637
642
647
651
656
659
662
666
669
672
675
677 double coll_ion;
678
681
684
686 double dLTot;
687
690
692 double cBal_cool;
693
696
698 double cLya_cool;
699
702
705
709
711 double qTot2S;
712
713 void Reset();
714 vector<two_photon> TwoNu;
715
716 vector<double> HighestLevelOpacStack;
717
722};
723
724extern t_iso_sp iso_sp[NISO][LIMELM];
725
727void iso_renorm( long nelem, long ipISO, double& renorm );
728
730void iso_multiplet_opacities( void );
731
732/* iso_comment_tran_levels - prepare comment string for entry to the line stack.
733 * The comment has the form 'H-like, 1 3, 1^2S - 2^2P', where '1 3' are the energy
734 * level indices, 1 being ground.
735 *
736 * \param ipISO iso-sequence index
737 * \param nelem element index
738 * \param ipLo, ipHi lower and upper level indices
739 * \return comment string
740 */
741string iso_comment_tran_levels( long ipISO, long nelem, long ipLo, long ipHi );
742
744
745inline bool lgIsLymanLine(const TransitionProxy &t)
746{
747 long ipISO = t.Lo()->nelem() - t.Lo()->IonStg();
748 long nelem = t.Lo()->nelem() - 1;
749 return (ipISO == ipH_LIKE && t.Lo()->n() == 1 && (t.Hi()->n() > iso_sp[ipISO][nelem].n_HighestResolved_local || t.Hi()->l() == 1));
750}
751
752inline bool lgIsLymanLineResolved(const TransitionProxy &t, const TransitionProxy &tJ05, const TransitionProxy &tJ15)
753{
754 double Ediff = tJ15.Hi()->energy().get("eV") - tJ05.Hi()->energy().get("eV");
755 long nelem = t.Lo()->nelem() - 1;
756 return (lgIsLymanLine(t) && Ediff > iso_ctrl.Resolution && nelem > ipHELIUM);
757}
758
760{
761 return (lgIsLymanLine(t) && t.Hi()->g() == 6);
762}
763
764inline bool lgIsM1Line(const TransitionProxy &t)
765{
766 long ipISO = t.Lo()->nelem() - t.Lo()->IonStg();
767 return (ipISO == ipH_LIKE && t.Hi()->n() == 2 && t.Lo()->n() == 1 && t.Hi()->l() == 0);
768}
769#endif /* ISO_H_ */
#define ASSERT(exp)
Definition cddefines.h:637
const int LIMELM
Definition cddefines.h:318
const int NISO
Definition cddefines.h:321
const int ipHELIUM
Definition cddefines.h:360
float realnum
Definition cddefines.h:127
long max(int a, long b)
Definition cddefines.h:821
#define MAX4(a, b, c, d)
Definition cddefines.h:838
double get(const char *unit) const
Definition energy.cpp:137
Definition transition.h:288
Definition transition.h:24
qList::iterator Lo() const
Definition transition.h:410
qList::iterator Hi() const
Definition transition.h:414
Definition iso.h:527
double SigmaCascadeProb
Definition iso.h:548
realnum Error[3]
Definition iso.h:541
double pestrk_up
Definition iso.h:531
realnum ErrorFactor[3]
Definition iso.h:545
double pestrk
Definition iso.h:530
Definition freebound.h:10
module()
Definition module.h:29
Definition container_classes.h:916
Definition quantumstate.h:36
realnum & g() const
Definition quantumstate.h:202
long & l() const
Definition quantumstate.h:256
int & IonStg() const
Definition quantumstate.h:228
int & nelem() const
Definition quantumstate.h:233
long & n() const
Definition quantumstate.h:252
Energy & energy() const
Definition quantumstate.h:197
Definition iso.h:552
double RecomInducCool_Rate
Definition iso.h:701
double coll_ion
Definition iso.h:677
double RadRec_effec
Definition iso.h:665
double energy_ioniz(long n, long l, long s, long g=-1) const
Definition iso.h:596
long int numLevels_max
Definition iso.h:641
multi_arr< extra_tr, 2 > ex
Definition iso.h:561
bool lgErrGenDone
Definition iso.h:708
bool lgPrtNCrit
Definition iso.h:616
double cLyrest_cool
Definition iso.h:695
map< QNPack, long > QNPack2Index
Definition iso.h:553
bool lgPrtMatrix
Definition iso.h:719
qList stJ15
Definition iso.h:567
vector< freeBound > fb
Definition iso.h:564
multi_arr< double, 2 > BranchRatio
Definition iso.h:563
double qTot2S
Definition iso.h:711
TransitionProxy trans(const long ipHi, const long ipLo)
Definition iso.h:556
bool lgImgMatrix
Definition iso.h:721
double dLTot
Definition iso.h:686
double cLya_cool
Definition iso.h:698
long int numLevels_local
Definition iso.h:646
void Reset()
Definition iso.cpp:123
long QN2Index(long n, long l, long s, long g=-1)
Definition iso.h:572
double RadRec_caseB
Definition iso.h:661
bool lgPopsRescaled
Definition iso.h:632
long int n_HighestResolved_local
Definition iso.h:655
bool lgPopLTE_OK
Definition iso.h:671
double cBal_cool
Definition iso.h:692
bool lgLevelsLowered
Definition iso.h:622
bool lgPrtDepartCoef
Definition iso.h:613
char chTypeAtomUsed[10]
Definition iso.h:704
double cRest_cool
Definition iso.h:680
long int n_HighestResolved_max
Definition iso.h:653
long int nCollapsed_max
Definition iso.h:635
double xLineTotCool
Definition iso.h:683
vector< double > HighestLevelOpacStack
Definition iso.h:716
vector< two_photon > TwoNu
Definition iso.h:714
map< QNPack, double > Energy
Definition iso.h:579
multi_arr< double, 2 > CascadeProb
Definition iso.h:562
qList stJ05
Definition iso.h:566
qList st
Definition iso.h:565
multi_arr< long, 2 > ipTrans
Definition iso.h:560
double RecomCollisFrac
Definition iso.h:668
double xIonSimple
Definition iso.h:610
double IonPot
Definition iso.h:582
long int numLevels_alloc
Definition iso.h:650
double energy(long n, long l, long s, long g=-1) const
Definition iso.h:585
double RadRecCool
Definition iso.h:689
bool lgMustReeval
Definition iso.h:629
bool lgPrtLevelPops
Definition iso.h:619
map< QNPair, double > CachedAs
Definition iso.h:606
double FreeBnd_net_Cool_Rate
Definition iso.h:674
long QN2Index(QNPack ind)
Definition iso.cpp:142
long int nCollapsed_local
Definition iso.h:636
bool lgLevelsEverLowered
Definition iso.h:626
TransitionList * tr
Definition iso.h:568
realnum CaseBCheck
Definition iso.h:658
Definition iso.h:398
bool lgDielRecom[NISO]
Definition iso.h:456
bool lgCS_therm_ave[NISO]
Definition iso.h:496
bool lgCS_VOS12QM[NISO]
Definition iso.h:495
bool lgColl_ionize[NISO]
Definition iso.h:436
bool lgKeepFS
Definition iso.h:509
bool lgCS_None[NISO]
Definition iso.h:486
bool lgCollStrenThermAver
Definition iso.h:442
bool lgNoMaser[NISO][LIMELM]
Definition iso.h:459
bool lgContinuumLoweringEnabled[NISO]
Definition iso.h:449
bool lgCS_vrgm[NISO]
Definition iso.h:485
int ipLyaRedist[NISO]
Definition iso.h:468
bool lgCS_VOS_thermal[NISO]
Definition iso.h:497
bool lgCS_VOS12[NISO]
Definition iso.h:494
bool lgNoRecombInterp[NISO]
Definition iso.h:479
int ipSubRedist[NISO]
Definition iso.h:468
bool lgLTE_levels[NISO]
Definition iso.h:438
bool lgColl_l_mixing[NISO]
Definition iso.h:430
long int nLyman_max[NISO]
Definition iso.h:416
t_isoCTRL()
Definition iso.h:515
int nLyaLevel[NISO]
Definition iso.h:471
bool lgCritDensLMix[NISO]
Definition iso.h:501
bool lgCS_Lebedev[NISO]
Definition iso.h:483
bool lgCS_PSdeg[NISO]
Definition iso.h:489
bool lgCS_PS64[NISO]
Definition iso.h:491
int ipResoRedist[NISO]
Definition iso.h:468
bool lgCS_Vrinceanu[NISO]
Definition iso.h:490
bool lgCS_PSM20[NISO]
Definition iso.h:493
bool lgPrintNumberOfLevels
Definition iso.h:408
bool lgCS_Vriens[NISO]
Definition iso.h:482
realnum stat_ion[NISO]
Definition iso.h:453
bool lgTopoff[NISO]
Definition iso.h:511
const char * chISO[NISO]
Definition iso.h:410
long int nLyman[NISO]
Definition iso.h:414
double RRC_TeUsed[NISO][LIMELM]
Definition iso.h:513
bool lgPessimisticErrors
Definition iso.h:507
long int nLyman_alloc[NISO]
Definition iso.h:418
realnum SmallA
Definition iso.h:465
bool lgCS_Fujim[NISO]
Definition iso.h:484
int nCS_new[NISO]
Definition iso.h:498
double Resolution
Definition iso.h:427
void comment(t_warnings &)
Definition iso.h:401
bool lgColl_excite[NISO]
Definition iso.h:433
bool lgCS_PSClassic[NISO]
Definition iso.h:492
const char * chName() const
Definition iso.h:403
long int nLymanHLike[LIMELM]
Definition iso.h:423
bool lgCS_B72[NISO]
Definition iso.h:488
void zero()
Definition iso.cpp:18
bool lgInd2nu_On
Definition iso.h:446
bool lgCS_Seaton[NISO]
Definition iso.h:487
bool lgRandErrGen[NISO]
Definition iso.h:505
bool lgCompileRecomb[NISO]
Definition iso.h:474
Definition warnings.h:11
Definition two_photon.h:10
t_iso_sp iso_sp[NISO][LIMELM]
Definition iso.cpp:14
long int max_num_levels
Definition iso.cpp:16
t_isoCTRL iso_ctrl
Definition iso.cpp:12
const int ipP_LIKE
Definition iso.h:78
const int ipHe1s1S
Definition iso.h:43
const int ipC_LIKE
Definition iso.h:69
void iso_collide(long ipISO, long nelem)
Definition iso_collide.cpp:132
void iso_update_rates(void)
Definition iso_solve.cpp:44
void iso_update_num_levels(long ipISO, long nelem)
Definition iso_create.cpp:1945
const int ipH3p
Definition iso.h:33
const int ipSI_LIKE
Definition iso.h:77
const int ipAR_LIKE
Definition iso.h:81
const int ENERGIESMAGIC
Definition iso.h:110
const int ipH1s
Definition iso.h:29
void iso_departure_coefficients(long ipISO, long nelem)
Definition iso_solve.cpp:397
const int ipHe2s3S
Definition iso.h:46
const int ipHe3d1D
Definition iso.h:58
const int ipHe2p1P
Definition iso.h:51
void iso_collisional_ionization(long ipISO, long nelem)
Definition iso_collide.cpp:28
void iso_collapsed_update(void)
Definition iso_solve.cpp:26
const int ipHe2s1S
Definition iso.h:47
const int ipHe3p3P
Definition iso.h:56
void iso_renorm(long nelem, long ipISO, double &renorm)
Definition iso_solve.cpp:306
const int ipLI_LIKE
Definition iso.h:66
void iso_continuum_lower(long ipISO, long nelem)
Definition iso_continuum_lower.cpp:15
const int ipHe3s1S
Definition iso.h:55
const int RREC_MAXN
Definition iso.h:97
int LIKE_RREC_MAXN(int nelem)
Definition iso.h:100
double iso_RRCoef_Te(long ipISO, long nelem, double temp, long n)
Definition iso_radiative_recomb.cpp:733
const int ipH4p
Definition iso.h:36
@ ipTRIPLET
Definition iso.h:84
@ ipSINGLET
Definition iso.h:84
@ ipMULTIPLET_BEGIN
Definition iso.h:85
@ ipDOUBLET
Definition iso.h:84
@ ipMULTIPLET_END
Definition iso.h:85
uint64 QNPack
Definition iso.h:112
void iso_setOpacity(long ipISO, long nelem, long ipLo, long ipHi)
Definition iso_create.cpp:94
const int ipHE_LIKE
Definition iso.h:65
const int SumUpToThisN
Definition iso.h:106
const int ipH3s
Definition iso.h:32
const int ipHe2p3P1
Definition iso.h:49
void iso_recomb_alloc()
Definition iso_radiative_recomb.cpp:780
double hydro_energy(long nelem, long n, long l, long s, long g)
Definition iso_create.cpp:156
void iso_recomb_setup(long ipISO)
Definition iso_radiative_recomb.cpp:845
const int ipH4d
Definition iso.h:37
const int ipCL_LIKE
Definition iso.h:80
void iso_error_generation(long ipISO, long nelem)
Definition iso_error.cpp:81
const int ipS_LIKE
Definition iso.h:79
string iso_comment_tran_levels(long ipISO, long nelem, long ipLo, long ipHi)
Definition prt_lines_hydro.cpp:41
const int ipAL_LIKE
Definition iso.h:76
void iso_setRedisFun(long ipISO, long nelem, long ipLo, long ipHi)
Definition iso_create.cpp:60
const int ipH2p
Definition iso.h:31
void iso_satellite_update(long nelem)
Definition iso_create.cpp:1838
const int ipNE_LIKE
Definition iso.h:73
bool lgIsLymanLineUnresolved(const TransitionProxy &t)
Definition iso.h:759
const int ipBE_LIKE
Definition iso.h:67
const int ipMG_LIKE
Definition iso.h:75
void iso_cascade(long ipISO, long nelem)
Definition iso_create.cpp:1565
const int IPCOLLIS
Definition iso.h:89
const int ipF_LIKE
Definition iso.h:72
long iso_get_total_num_levels(long ipISO, long nmaxResolved, long numCollapsed)
Definition iso_create.cpp:1922
void iso_recomb_auxiliary_free()
Definition iso_radiative_recomb.cpp:836
const int ipH4s
Definition iso.h:35
const int ipNA_LIKE
Definition iso.h:74
void iso_suprathermal(long ipISO, long nelem)
Definition iso_collide.cpp:91
void iso_init_energies()
Definition iso.cpp:283
QNPack QN2ind(long n, long l, long s, long g=-1)
Definition iso.h:114
string extraLymanJ_comment_tran_levels(const TransitionProxy &t)
Definition prt_lines_hydro.cpp:47
void iso_multiplet_opacities(void)
Definition iso_level.cpp:758
void iso_cool(long ipISO, long nelem)
void iso_set_ion_rates(long ipISO, long nelem)
Definition iso_level.cpp:813
const int RECOMBMAGIC
Definition iso.h:108
double iso_cross_section(double ERyd, double EthRyd, long n, long l, long S, long globalZ, long globalISO)
Definition iso_radiative_recomb.cpp:130
const int ipH4f
Definition iso.h:38
double iso_state_lifetime(long ipISO, long nelem, long n, long l)
Definition iso_create.cpp:1521
void iso_ionize_recombine(long ipISO, long nelem)
const int ipHe3p1P
Definition iso.h:59
double iso_recomb_check(long ipISO, long nelem, long level, double temperature)
Definition iso_radiative_recomb.cpp:759
void iso_photo(long ipISO, long nelem)
const int ipB_LIKE
Definition iso.h:68
long int iso_Max_Emitting_Level(long nelem, long ipISO, bool lgPrnIsoCollapsed)
Definition iso.cpp:252
const int ipHe3d3D
Definition iso.h:57
const int ipH3d
Definition iso.h:34
double iso_dielec_recomb_rate(long ipISO, long nelem, long ipLo)
Definition iso_radiative_recomb.cpp:1144
void iso_charge_transfer_update(long nelem)
Definition iso_ionize_recombine.cpp:18
const int ipHe2p3P0
Definition iso.h:48
void IonHydro()
Definition iso_solve.cpp:183
void iso_level(const long ipISO, const long nelem, double &renorm)
const int ipH2s
Definition iso.h:30
bool lgIsLymanLine(const TransitionProxy &t)
Definition iso.h:745
const int ipH_LIKE
Definition iso.h:64
const int ipHe3s3S
Definition iso.h:54
bool lgIsLymanLineResolved(const TransitionProxy &t, const TransitionProxy &tJ05, const TransitionProxy &tJ15)
Definition iso.h:752
const int N_ISO_TE_RECOMB
Definition iso.h:102
const int IPRAD
Definition iso.h:88
bool lgIsM1Line(const TransitionProxy &t)
Definition iso.h:764
const int ipO_LIKE
Definition iso.h:71
void iso_prt_pops(long ipISO, long nelem, bool lgPrtDeparCoef)
Definition iso_solve.cpp:421
void iso_init()
Definition iso.cpp:166
int getL(char l)
Definition iso_create.cpp:45
void iso_create(void)
Definition iso_create.cpp:194
const int ipHe2p3P2
Definition iso.h:50
void iso_solve(long ipISO, long nelem, double &maxerr)
Definition iso_solve.cpp:95
const int ipN_LIKE
Definition iso.h:70
void iso_radiative_recomb_effective(long ipISO, long nelem)
Definition iso_radiative_recomb.cpp:627
void iso_put_error(long ipISO, long nelem, long ipHi, long ipLo, long whichData, realnum errorOpt, realnum errorPess)
void iso_radiative_recomb(long ipISO, long nelem)
Definition iso_radiative_recomb.cpp:147
static long int globalISO
Definition iso_radiative_recomb.cpp:38
static long int globalZ
Definition iso_radiative_recomb.cpp:38
#define S(I_, J_)
Definition optimize_subplx.cpp:1105
Definition iso.h:141
QNPack lo
Definition iso.h:143
QNPack hi
Definition iso.h:142
QNPair(int nhi, int lhi, int shi, int ghi, int nlo, int llo, int slo, int glo)
Definition iso.h:148
bool operator<(const QNPair &q2) const
Definition iso.h:144