19#define KILL_BELOW_PLASMA(E_) ( (rfield.lgPlasNu && ((E_)<rfield.plsfrq) ) ? 0.:1. )
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())
127 if( (l == 0 || s == 1) && g < 0 )
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;
148 QNPair(
int nhi,
int lhi,
int shi,
int ghi,
int nlo,
int llo,
int slo,
int glo)
155inline QNPair QN2ind(
int nhi,
int lhi,
int shi,
int ghi,
int nlo,
int llo,
int slo,
int glo)
157 return QNPair(nhi, lhi, shi, ghi, nlo, llo, slo, glo);
210void iso_setOpacity (
long ipISO,
long nelem,
long ipLo,
long ipHi);
268void iso_level(
const long ipISO,
const long nelem,
double& renorm );
281void iso_prt_pops(
long ipISO,
long nelem,
bool lgPrtDeparCoef );
324double iso_recomb_check(
long ipISO,
long nelem,
long level,
double temperature );
345double iso_RRCoef_Te(
long ipISO,
long nelem,
double temp,
long n );
362void iso_solve(
long ipISO,
long nelem,
double &maxerr );
389double hydro_energy(
long nelem,
long n,
long l,
long s,
long g);
564 vector<freeBound>
fb;
585 double energy(
long n,
long l,
long s,
long g = -1)
const
588 auto p =
Energy.find(ind);
598 double ERelToground =
energy(n, l, s, g);
599 if( ERelToground >= 0. && ERelToground <
IonPot )
600 return IonPot - ERelToground;
727void iso_renorm(
long nelem,
long ipISO,
double& renorm );
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));
755 long nelem = t.
Lo()->
nelem() - 1;
767 return (ipISO ==
ipH_LIKE && t.
Hi()->
n() == 2 && t.
Lo()->
n() == 1 && t.
Hi()->
l() == 0);
#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 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
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
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 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
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