#include "cddefines.h"
#include "cddrive.h"
#include "physconst.h"
#include "taulines.h"
#include "atoms.h"
#include "conv.h"
#include "secondaries.h"
#include "pressure.h"
#include "trace.h"
#include "hmi.h"
#include "hextra.h"
#include "rt.h"
#include "radius.h"
#include "ipoint.h"
#include "phycon.h"
#include "thermal.h"
#include "dense.h"
#include "rfield.h"
#include "lines_service.h"
#include "mole.h"
#include "h2.h"
#include "h2_priv.h"
Go to the source code of this file.
Defines | |
#define | PRT_POPS false |
#define | LIM_H2_POP_LOOP 100 |
#define | H2_DISS_ALLISON_DALGARNO 6e-19f |
Functions | |
STATIC void | H2_X_coll_rate_evaluate (void) |
double | H2_itrzn (void) |
void | H2_ContPoint (void) |
double | H2_Accel (void) |
double | H2_RadPress (void) |
void | H2_RT_diffuse (void) |
void | H2_RTMake (void) |
void | H2_RT_tau_inc (void) |
void | H2_LineZero (void) |
void | H2_RT_tau_reset (void) |
STATIC void | H2_Level_low_matrix (realnum abundance) |
void | H2_LevelPops (void) |
void | H2_Cooling (const char *chRoutine) |
double | cdH2_colden (long iVib, long iRot) |
void | H2_Colden (const char *chLabel) |
double | H2_DR (void) |
void | H2_RT_OTS (void) |
Variables | |
static long int | loop_h2_pops |
realnum | H2_te_hminus [nTE_HMINUS] = {10.,30.,100.,300.,1000.,3000.,10000.} |
static realnum | collider_density [N_X_COLLIDER] |
static realnum | collider_density_total_not_H2 |
int | H2_nRot_add_ortho_para [N_H2_ELEC] = {0 , 1 , 1 , 0, 1, 1 , 0} |
double | H2_DissocEnergies [N_H2_ELEC] |
double | exp_disoc |
static double | frac_matrix |
#define H2_DISS_ALLISON_DALGARNO 6e-19f |
Definition at line 27 of file mole_h2.cpp.
Referenced by H2_LevelPops(), and H2_X_coll_rate_evaluate().
#define LIM_H2_POP_LOOP 100 |
Definition at line 24 of file mole_h2.cpp.
Referenced by H2_LevelPops().
#define PRT_POPS false |
Definition at line 22 of file mole_h2.cpp.
Referenced by H2_Cooling(), and H2_LevelPops().
double cdH2_colden | ( | long | iVib, | |
long | iRot | |||
) |
cdH2_colden return column density in H2, returns -1 if cannot find state, header is in cdDrive, source in h2.c
Definition at line 3491 of file mole_h2.cpp.
References h2, H2_X_colden, ioQQQ, t_h2::lgH2ON, t_h2::nRot_hi, t_h2::nVib_hi, t_h2::ortho_colden, and t_h2::para_colden.
Referenced by cdColm(), and lgCheckMonitors().
double H2_Accel | ( | void | ) |
radiative acceleration due to H2 called in rt_line_driving
Definition at line 364 of file mole_h2.cpp.
References ASSERT, DEBUG_ENTRY, h2, H2Lines, t_h2::Jlowest, lgH2_line_exists, t_h2::lgH2ON, mole, t_mole::n_h2_elec_states, t_h2::nRot_hi, and t_h2::nVib_hi.
Referenced by RT_line_driving().
void H2_Colden | ( | const char * | chLabel | ) |
H2_Colden maintain H2 column densities within X
*chLabel |
Definition at line 3545 of file mole_h2.cpp.
References cdEXIT, DEBUG_ENTRY, t_radius::drad_x_fillfac, h2, H2_populations, H2_populations_LTE, t_hmi::H2_total, H2_X_colden, H2_X_colden_LTE, hmi, ioQQQ, t_h2::Jlowest, t_h2::lgH2ON, t_h2::nRot_hi, t_h2::nVib_hi, and radius.
Referenced by molcol().
void H2_ContPoint | ( | void | ) |
set the ipCont struc element for the H2 molecule, called by ContCreatePointers
Definition at line 305 of file mole_h2.cpp.
References ASSERT, DEBUG_ENTRY, h2, H2Lines, ipFineCont(), ipLineEnergy(), t_h2::Jlowest, lgH2_line_exists, t_h2::lgH2ON, mole, t_mole::n_h2_elec_states, t_h2::nRot_hi, t_h2::nVib_hi, and WAVNRYD.
Referenced by ContCreatePointers().
void H2_Cooling | ( | const char * | chString | ) |
H2_cooling evaluate cooling and heating due to H2 molecule, string is name of calling routine
*chString | name of calling routine |
Definition at line 2993 of file mole_h2.cpp.
References ASSERT, multi_arr< T, d, ALLOC, lgBC >::begin(), cdEXIT, collider_density, conv, t_thermal::ctot, DEBUG_ENTRY, dense, t_hmi::deriv_HeatH2Dexc_BigH2, EN1EV, energy_wn, ERG1CM, fnzone, fudge(), h2, H2_Boltzmann, H2_CollRate, H2_disske, H2_dissprob, H2_ipX_ener_sort, H2_populations, H2_renorm_chemistry, t_hmi::H2_Solomon_dissoc_rate_BigH2_H2g, H2_stat, t_hmi::H2_total, t_hmi::HeatH2Dexc_BigH2, t_hmi::HeatH2Dish_BigH2, hmi, ioQQQ, ipHYDROGEN, ipRot_H2_energy_sort, ipVib_H2_energy_sort, t_h2::Jlowest, t_h2::lgH2ON, t_conv::lgSearch, mole, t_mole::n_h2_elec_states, N_X_COLLIDER, nCallH2_this_iteration, t_mole::nH2_TRACE, t_mole::nH2_trace_full, nLevels_per_elec, t_h2::nRot_hi, t_h2::nVib_hi, nzone, phycon, POW2, PRT_POPS, t_hmi::rate_grain_h2_J1_to_J0, SDIV(), SMALLFLOAT, t_phycon::te, t_phycon::te_wn, thermal, TorF(), VIB_COLLID, and t_dense::xIonDense.
Referenced by CoolEvaluate(), and H2_LevelPops().
double H2_DR | ( | void | ) |
H2_DR choose next zone thickness based on H2 big molecule
Definition at line 3598 of file mole_h2.cpp.
References BIGFLOAT.
Referenced by radius_next().
double H2_itrzn | ( | void | ) |
H2_itrzn - average number of H2 pop evaluations per zone
Definition at line 292 of file mole_h2.cpp.
References h2, t_h2::lgH2ON, nH2_pops, and nH2_zone.
Referenced by PrtFinal().
STATIC void H2_Level_low_matrix | ( | realnum | abundance | ) |
Definition at line 869 of file mole_h2.cpp.
References ASSERT, atom_levelN(), AulDest, AulEscp, AulPump, cdEXIT, col_str, ConvFail(), DEBUG_ENTRY, depart, energy_wn, H2_Boltzmann, H2_energies, H2_ipX_ener_sort, H2_lgOrtho, H2_populations, H2_stat, t_hmi::H2_total, H2_X_coll_rate, H2_X_rate_from_elec_excited, H2_X_rate_to_elec_excited, H2_X_sink, H2_X_source, H2Lines, hmi, ioQQQ, ipRot_H2_energy_sort, ipVib_H2_energy_sort, iteration, iterationAsEval, lgFirst, lgH2_line_exists, MALLOC, mole, t_mole::nH2_TRACE, t_mole::nH2_trace_full, t_mole::nH2_trace_matrix, nLevels_per_elec, nXLevelsMatrix, nzone, nzoneAsEval, pops, t_hmi::rate_grain_h2_J1_to_J0, t_hmi::rate_grain_h2_op_conserve, SDIV(), and T1CM.
Referenced by H2_LevelPops().
void H2_LevelPops | ( | void | ) |
do level populations for H2, called by iso_solve
Definition at line 1385 of file mole_h2.cpp.
References ASSERT, t_hmi::Average_A, t_hmi::Average_collH2_deexcit, t_hmi::Average_collH2_excit, t_hmi::Average_collH2g_dissoc, t_hmi::Average_collH2s_dissoc, t_hmi::Average_collH_deexcit, t_hmi::Average_collH_excit, t_conv::chConvIoniz, t_rfield::ConInterOut, conv, ConvFail(), t_thermal::ctot, DEBUG_ENTRY, dense, t_dense::eden, t_conv::EdenErrorAllowed, ENERGY_H2_STAR, energy_wn, EVRYD, exp_disoc, t_rfield::flux, fnzone, fp_equal(), FRAC, t_dense::gas_phase, h2, t_hmi::H2_BigH2_H2g_av, t_hmi::H2_BigH2_H2s_av, H2_Boltzmann, t_hmi::H2_chem_BigH2_H2g, t_hmi::H2_chem_BigH2_H2s, H2_col_rate_in, H2_col_rate_out, H2_coll_dissoc_rate_coef_H2, H2_CollidRateEvalAll(), H2_CollRate, H2_Cooling(), H2_den_g, H2_den_s, H2_DISS_ALLISON_DALGARNO, H2_dissprob, H2_energies, t_hmi::H2_frac_abund_set, H2_gs_rates(), t_hmi::H2_H2g_to_H2s_rate_BigH2, t_hmi::H2_H2g_to_H2s_rate_TH85, H2_ipX_ener_sort, H2_Level_low_matrix(), H2_lgOrtho, H2_old_populations, t_hmi::H2_photodissoc_BigH2_H2g, t_hmi::H2_photodissoc_BigH2_H2s, t_hmi::H2_photodissoc_TH85, H2_populations, H2_populations_LTE, H2_rad_rate_in, H2_rad_rate_out, t_hmi::H2_rate_destroy, H2_renorm_chemistry, t_hmi::H2_Solomon_dissoc_rate_BigH2_H2g, t_hmi::H2_Solomon_dissoc_rate_BigH2_H2s, t_hmi::H2_Solomon_dissoc_rate_TH85_H2g, t_hmi::H2_Solomon_dissoc_rate_used_H2g, H2_Solomon_rate(), H2_stat, H2_sum_excit_elec_den, t_mole::H2_to_H_limit, t_hmi::H2_total, t_hmi::H2_total_BigH2, t_hmi::H2_tripletdissoc_H2g, t_hmi::H2_tripletdissoc_H2s, H2_X_coll_rate, H2_X_coll_rate_evaluate(), H2_X_rate_from_elec_excited, H2_X_rate_to_elec_excited, H2_X_sink, H2_X_source, H2_zero_pops_too_low(), t_hmi::H2g_BigH2, t_hmi::H2g_LTE_bigH2, H2Lines, t_hmi::H2s_BigH2, t_hmi::H2s_LTE_bigH2, t_conv::HeatCoolRelErrorAllowed, t_hmi::HeatH2Dexc_BigH2, hmi, t_hmi::Hmolec, t_thermal::htot, INT32_MAX, ioQQQ, ipHYDROGEN, ipMH2g, ipMH2s, ipoint(), ipRot_H2_energy_sort, ipVib_H2_energy_sort, iteration, t_h2::Jlowest, lgAbort, t_hmi::lgBigH2_evaluated, t_conv::lgConvPops, lgH2_line_exists, t_mole::lgH2_LTE, t_h2::lgH2ON, t_rfield::lgInducProcess, t_hmi::lgLeidenCRHack, t_conv::lgSearch, t_thermal::lgTemperatureConstant, t_trace::lgTr_H2_Mole, t_trace::lgTrace, LIM_H2_POP_LOOP, loop_h2_pops, MAX2, mole, mole_H2_form(), mole_H2_LTE(), t_mole::n_h2_elec_states, nCallH2_this_iteration, t_h2::nCallH2_this_zone, nH2_pops, t_mole::nH2_TRACE, t_mole::nH2_trace_final, t_mole::nH2_trace_full, t_mole::nH2_trace_iterations, nH2_zone, nLevels_per_elec, t_h2::nRot_hi, t_trace::nTrConvg, t_h2::nVib_hi, nXLevelsMatrix, nzone, nzone_nlevel_set, t_h2::ortho_density, t_rfield::outlin, t_rfield::outlin_noplot, t_h2::para_density, phycon, pops_per_elec, pops_per_vib, pow(), PRT_POPS, multi_arr< T, d, ALLOC, lgBC >::ptr(), t_hmi::rate_grain_h2_J1_to_J0, t_hmi::rate_grain_h2_op_conserve, rfield, SAHA, SDIV(), secondaries, SMALLFLOAT, t_phycon::te, t_phycon::te32, thermal, TorF(), TotalInsanity(), trace, WAVNRYD, and t_secondaries::x12tot.
Referenced by IonHydro(), and SaveLineData().
void H2_LineZero | ( | void | ) |
initialize optical depths in H2, called from RT_tau_init
Definition at line 757 of file mole_h2.cpp.
References DEBUG_ENTRY, h2, H2Lines, t_h2::Jlowest, lgH2_line_exists, t_h2::lgH2ON, mole, t_mole::n_h2_elec_states, t_h2::nRot_hi, and t_h2::nVib_hi.
Referenced by RT_tau_init().
double H2_RadPress | ( | void | ) |
rad pre due to h2 lines called in PresTotCurrent
Definition at line 427 of file mole_h2.cpp.
References ASSERT, t_dense::AtomicWeight, DEBUG_ENTRY, dense, GetDopplerWidth(), h2, H2Lines, ioQQQ, ipHYDROGEN, t_h2::Jlowest, lgH2_line_exists, t_h2::lgH2ON, mole, t_mole::n_h2_elec_states, t_h2::nCallH2_this_zone, t_mole::nH2_TRACE, t_mole::nH2_trace_full, t_h2::nRot_hi, t_h2::nVib_hi, PressureRadiationLine(), and SMALLFLOAT.
Referenced by PresTotCurrent(), and PrtLinePres().
void H2_RT_diffuse | ( | void | ) |
do emission from H2 - called from RT_diffuse
Definition at line 532 of file mole_h2.cpp.
References DEBUG_ENTRY, h2, H2Lines, t_h2::Jlowest, lgH2_line_exists, t_h2::lgH2ON, t_h2::nCallH2_this_zone, t_h2::nRot_hi, and t_h2::nVib_hi.
Referenced by RT_diffuse().
void H2_RT_OTS | ( | void | ) |
H2_RT_OTS - add H2 ots fields
Definition at line 3604 of file mole_h2.cpp.
References DEBUG_ENTRY, h2, H2Lines, t_h2::Jlowest, lgH2_line_exists, t_h2::lgH2ON, t_h2::nCallH2_this_zone, t_h2::nRot_hi, t_h2::nVib_hi, and RT_OTS_AddLine().
Referenced by RT_OTS().
void H2_RT_tau_inc | ( | void | ) |
increment optical depth for the H2 molecule, called from RT_tau_inc
Definition at line 691 of file mole_h2.cpp.
References ASSERT, t_dense::AtomicWeight, DEBUG_ENTRY, dense, GetDopplerWidth(), h2, H2_renorm_chemistry, H2Lines, ipHYDROGEN, t_h2::Jlowest, lgH2_line_exists, t_h2::lgH2ON, MAX2, MIN2, mole, t_mole::n_h2_elec_states, nCallH2_this_iteration, t_h2::nRot_hi, t_h2::nVib_hi, nzone, t_h2::renorm_max, t_h2::renorm_min, and RT_line_one_tauinc().
Referenced by RT_tau_inc().
void H2_RT_tau_reset | ( | void | ) |
the large H2 molecule, called from RT_tau_reset
Definition at line 812 of file mole_h2.cpp.
References DEBUG_ENTRY, h2, H2Lines, t_h2::Jlowest, lgH2_line_exists, t_h2::lgH2ON, mole, t_mole::n_h2_elec_states, t_h2::nRot_hi, t_h2::nVib_hi, and RT_line_one_tau_reset().
Referenced by RT_tau_reset().
void H2_RTMake | ( | void | ) |
do RT for H2 lines
Definition at line 585 of file mole_h2.cpp.
References ASSERT, t_dense::AtomicWeight, DEBUG_ENTRY, dense, GetDopplerWidth(), h2, H2Lines, ioQQQ, ipHYDROGEN, t_h2::Jlowest, lgH2_line_exists, t_h2::lgH2ON, mole, t_mole::n_h2_elec_states, t_h2::nRot_hi, t_h2::nVib_hi, RT_line_one(), and SDIV().
Referenced by IonHydro(), and RT_line_all().
STATIC void H2_X_coll_rate_evaluate | ( | void | ) |
Definition at line 81 of file mole_h2.cpp.
References ASSERT, multi_arr< T, d, ALLOC, lgBC >::begin(), co, collider_density, collider_density_total_not_H2, t_hextra::cryden_ov_background, t_secondaries::csupra, DEBUG_ENTRY, dense, t_dense::eden, exp_disoc, t_rfield::flux_accum, fp_equal(), h2, H2_Boltzmann, H2_coll_dissoc_rate_coef, H2_coll_dissoc_rate_coef_H2, H2_CollRate, H2_DISS_ALLISON_DALGARNO, H2_DissocEnergies, H2_ipPhoto, H2_ipX_ener_sort, t_hmi::H2_photoionize_rate, H2_stat, t_hmi::H2_total, H2_X_coll_rate, H2_X_formation, H2_X_Hmin_back, H2_X_sink, H2_X_source, hextra, hmi, t_hmi::Hmolec, ioQQQ, ipHELIUM, ipHYDROGEN, ipMH3p, ipRot_H2_energy_sort, ipVib_H2_energy_sort, t_mole::lgColl_deexec_Calc, t_co::lgUMISTrates, mole, N_X_COLLIDER, t_mole::nH2_TRACE, t_mole::nH2_trace_full, nLevels_per_elec, t_h2::ortho_density, t_h2::para_density, phycon, t_hmi::rel_pop_LTE_Hmin, rfield, t_hmi::rh2h2p, SAHA, SDIV(), secondaries, sexp(), t_phycon::te32, t_phycon::te_wn, t_secondaries::x12tot, and t_dense::xIonDense.
Referenced by H2_LevelPops().
realnum collider_density[N_X_COLLIDER] [static] |
Definition at line 58 of file mole_h2.cpp.
Referenced by H2_Cooling(), and H2_X_coll_rate_evaluate().
realnum collider_density_total_not_H2 [static] |
Definition at line 59 of file mole_h2.cpp.
Referenced by H2_X_coll_rate_evaluate().
double exp_disoc |
Definition at line 77 of file mole_h2.cpp.
Referenced by H2_LevelPops(), and H2_X_coll_rate_evaluate().
double frac_matrix [static] |
Definition at line 866 of file mole_h2.cpp.
double H2_DissocEnergies[N_H2_ELEC] |
{ 36118.11, 118375.6, 118375.6, 118375.6, 118375.6,133608.6,133608.6 }
Definition at line 72 of file mole_h2.cpp.
Referenced by EH2_eval(), H2_CollidRateEvalAll(), H2_Create(), H2_vib_dist(), and H2_X_coll_rate_evaluate().
int H2_nRot_add_ortho_para[N_H2_ELEC] = {0 , 1 , 1 , 0, 1, 1 , 0} |
the remainder can't be EXTERN since init to values in h2.c
Definition at line 64 of file mole_h2.cpp.
Referenced by H2_Create().
realnum H2_te_hminus[nTE_HMINUS] = {10.,30.,100.,300.,1000.,3000.,10000.} |
temperature where H- distribution are set
Definition at line 54 of file mole_h2.cpp.
Referenced by H2_Read_hminus_distribution(), and mole_H2_form().
long int loop_h2_pops [static] |
Definition at line 52 of file mole_h2.cpp.
Referenced by H2_LevelPops().