Cloudy
Spectral Synthesis Code for Astrophysics
Loading...
Searching...
No Matches
mole_reactions.cpp File Reference
#include "cdstd.h"
#include "cddefines.h"
#include "prt.h"
#include "version.h"
#include "hmi.h"
#include "conv.h"
#include "thermal.h"
#include "grainvar.h"
#include "ionbal.h"
#include "opacity.h"
#include "radius.h"
#include "atmdat.h"
#include "trace.h"
#include "deuterium.h"
#include "grains.h"
#include "mole_priv.h"
#include "gammas.h"
#include "mole.h"
#include "freebound.h"
#include "dense.h"
#include "ipoint.h"
#include "phycon.h"
#include "doppvel.h"
#include "rfield.h"
#include "secondaries.h"
#include "hextra.h"
#include "rt_escprob.h"
#include "iso.h"
#include "h2.h"
Include dependency graph for mole_reactions.cpp:

Macros

#define FLTEQ(a, b)
 

Enumerations

enum  { UDFA =0 }
 
enum  { BUFSIZE =256 }
 

Functions

STATIC void newreact (const char label[], const char fun[], double a, double b, double c)
 
STATIC long parse_reaction (shared_ptr< mole_reaction > &rate, const char label[])
 
STATIC string canonicalize_reaction_label (const char label[])
 
STATIC void canonicalize_reaction (shared_ptr< mole_reaction > &rate)
 
STATIC bool lgReactionTrivial (shared_ptr< mole_reaction > &rate)
 
STATIC void register_reaction_vectors (shared_ptr< mole_reaction > rate)
 
STATIC void mole_check_reverse_reactions (void)
 
STATIC double mole_get_equilibrium_condition (const char buf[])
 
STATIC double mole_get_equilibrium_condition (const mole_reaction *const rate)
 
STATIC double mole_partition_function (const molecule *const sp)
 
STATIC void mole_generate_isotopologue_reactions (string atom_old, string atom_new)
 
STATIC double sticking_probability_H_func (double T_gas, double T_grain)
 
STATIC double sticking_probability_H_HM79 (double T_gas, double T_grain)
 
STATIC void plot_sparsity (void)
 
STATIC bool lgReactBalance (const shared_ptr< mole_reaction > &rate)
 
STATIC void read_data (const char file[], void(*parse)(char *s))
 
STATIC void parse_base (char *s)
 
STATIC void parse_udfa (char *s)
 
STATIC void compare_udfa (const shared_ptr< mole_reaction > &rate)
 
double frac_H2star_hminus (void)
 
double hmirat (double te)
 
STATIC void mole_h2_grain_form (void)
 
STATIC void mole_h_reactions (void)
 
void mole_create_react (void)
 
void mole_cmp_num_in_out_reactions ()
 
STATIC char * getcsvfield (char **s, char c)
 
void mole_update_rks (void)
 
void mole_rk_bigchange (void)
 
mole_reactionmole_findrate_s (const char buf[])
 

Variables

static realnum albedo = 0.5
 
static map< formula_species, shared_ptr< udfa_reaction > > udfatab
 

Macro Definition Documentation

◆ FLTEQ

#define FLTEQ ( a,
b )
Value:
(fabs((a)-(b)) <= 1e-6*fabs((a)+(b)))

Referenced by compare_udfa(), and parse_udfa().

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

set UDFA = 1 to make UDFA comparison and stop http://udfa.ajmarkwick.net/index.php

Enumerator
UDFA 

◆ anonymous enum

anonymous enum
Enumerator
BUFSIZE 

Function Documentation

◆ canonicalize_reaction()

STATIC void canonicalize_reaction ( shared_ptr< mole_reaction > & rate)

References DEBUG_ENTRY, t_mole_global::sort(), and STATIC.

Referenced by canonicalize_reaction_label(), and newreact().

Here is the call graph for this function:

◆ canonicalize_reaction_label()

STATIC string canonicalize_reaction_label ( const char label[])

References canonicalize_reaction(), DEBUG_ENTRY, parse_reaction(), and STATIC.

Referenced by mole_create_react(), mole_findrate_s(), and mole_generate_isotopologue_reactions().

Here is the call graph for this function:

◆ compare_udfa()

STATIC void compare_udfa ( const shared_ptr< mole_reaction > & rate)

References CONFLICT, CORRECT, FLTEQ, MAXPRODUCTS, MAXREACTANTS, STATIC, and udfatab.

Referenced by newreact().

◆ frac_H2star_hminus()

double frac_H2star_hminus ( void )

References h2, hmi, and SDIV().

Referenced by mole_h_rate_diagnostics().

Here is the call graph for this function:

◆ getcsvfield()

STATIC char * getcsvfield ( char ** s,
char c )

References STATIC.

Referenced by parse_base(), and parse_udfa().

◆ hmirat()

double hmirat ( double te)

hmirat computes radiative association rate for H-

Parameters
te

References DEBUG_ENTRY, and phycon.

Referenced by mole_h_reactions().

◆ lgReactBalance()

STATIC bool lgReactBalance ( const shared_ptr< mole_reaction > & rate)

References fprintf(), ioQQQ, sign(), and STATIC.

Referenced by newreact().

Here is the call graph for this function:

◆ lgReactionTrivial()

STATIC bool lgReactionTrivial ( shared_ptr< mole_reaction > & rate)

References DEBUG_ENTRY, and STATIC.

Referenced by newreact().

◆ mole_check_reverse_reactions()

STATIC void mole_check_reverse_reactions ( void )

References DEBUG_ENTRY, exists(), fixit, fprintf(), ioQQQ, NULL, mole_priv::reactab, STATIC, and trace.

Referenced by mole_create_react().

Here is the call graph for this function:

◆ mole_cmp_num_in_out_reactions()

void mole_cmp_num_in_out_reactions ( void )

References CHARS_SPECIES, DEBUG_ENTRY, fprintf(), ioQQQ, mole_global, and mole_priv::reactab.

Here is the call graph for this function:

◆ mole_create_react()

◆ mole_findrate_s()

mole_reaction * mole_findrate_s ( const char buf[])

◆ mole_generate_isotopologue_reactions()

STATIC void mole_generate_isotopologue_reactions ( string atom_old,
string atom_new )

◆ mole_get_equilibrium_condition() [1/2]

STATIC double mole_get_equilibrium_condition ( const char buf[])

References DEBUG_ENTRY, mole_findrate_s(), mole_get_equilibrium_condition(), and STATIC.

Referenced by mole_get_equilibrium_condition().

Here is the call graph for this function:

◆ mole_get_equilibrium_condition() [2/2]

STATIC double mole_get_equilibrium_condition ( const mole_reaction *const rate)

◆ mole_h2_grain_form()

STATIC void mole_h2_grain_form ( void )
Todo
2 - put in actual composition dependent Tad - this is only valid for bare surfaces - not ice - for ice Tad is 555K hmi.Tad is binding energy expressed as a temperature note that hmi.Tad is set to 800. in zero tau_nu the first equation in section 2.5 equation one paragraph before equation 2 at low grain temperatures all end in para, J=0

References ASSERT, DEBUG_ENTRY, dense, ENABLE_QUANTUM_HEATING, fixit, fnzone, fprintf(), GetAveVelocity(), GrainDrive(), gv, h2, hmi, ioQQQ, ipHYDROGEN, MAT_CAR, MAT_CAR2, MAT_PAH, MAT_PAH2, MAT_SIC, MAT_SIL, MAT_SIL2, NQGRID, phycon, POW2, qheat(), SDIV(), sexp(), STATIC, and sticking_probability_H_func().

Referenced by mole_update_rks().

Here is the call graph for this function:

◆ mole_h_reactions()

STATIC void mole_h_reactions ( void )

hmole_reactions - evaluates hydrogen chemistry reactions

Todo
2 following always true, why? either remove test or use it - it is here to save time - this step routine is called very often
Todo
2 this should be done with new populations after converged soln

References ASSERT, atmdat, molezone::column, conv, DEBUG_ENTRY, molezone::den, dense, diatoms, esc_PRD_1side(), findspecieslocal(), fixit, fnzone, fp_equal(), fprintf(), GammaBn(), GammaPrt(), GetDopplerWidth(), h2, hd, t_phoHeat::HeatNet, hmi, hmirat(), ioQQQ, ipHELIUM, ipHYDROGEN, ipoint(), iteration, MAX2, mole_global, nzone, opac, phycon, pow(), POW2, radius, rfield, secondaries, sexp(), SMALLFLOAT, STATIC, and TotalInsanity().

Referenced by mole_update_rks().

Here is the call graph for this function:

◆ mole_partition_function()

STATIC double mole_partition_function ( const molecule *const sp)

◆ mole_rk_bigchange()

void mole_rk_bigchange ( void )

References ASSERT, DEBUG_ENTRY, fprintf(), mole_reaction::index, ioQQQ, mole_reaction::label, mole, nzone, and mole_priv::reactab.

Referenced by ZoneEnd().

Here is the call graph for this function:

◆ mole_update_rks()

void mole_update_rks ( void )

mole_update_rks update rate coefficients, only temp part

References mole_reaction::a, DEBUG_ENTRY, fprintf(), mole_reaction::index, ioQQQ, mole_reaction::label, mole, mole_h2_grain_form(), mole_h_reactions(), mole_priv::reactab, and mole_reaction::rk().

Referenced by mole_drive().

Here is the call graph for this function:

◆ newreact()

STATIC void newreact ( const char label[],
const char fun[],
double a,
double b,
double c )

◆ parse_base()

STATIC void parse_base ( char * s)

References getcsvfield(), newreact(), and STATIC.

Referenced by mole_create_react().

Here is the call graph for this function:

◆ parse_reaction()

STATIC long parse_reaction ( shared_ptr< mole_reaction > & rate,
const char label[] )

◆ parse_udfa()

STATIC void parse_udfa ( char * s)

References ASSERT, findspecies(), FLTEQ, fprintf(), getcsvfield(), MAXPRODUCTS, MAXREACTANTS, NULL, null_mole, t_mole_global::sort(), STATIC, and udfatab.

Referenced by mole_create_react().

Here is the call graph for this function:

◆ plot_sparsity()

◆ read_data()

STATIC void read_data ( const char file[],
void(* parse )(char *s) )

References BUFSIZE, cdEXIT, DEBUG_ENTRY, EXIT_FAILURE, fixit, fprintf(), open_data(), and STATIC.

Referenced by mole_create_react().

Here is the call graph for this function:

◆ register_reaction_vectors()

STATIC void register_reaction_vectors ( shared_ptr< mole_reaction > rate)

References DEBUG_ENTRY, lgDifferByExcitation(), NULL, and STATIC.

Referenced by mole_create_react().

Here is the call graph for this function:

◆ sticking_probability_H_func()

STATIC double sticking_probability_H_func ( double T_gas,
double T_grain )

References DEBUG_ENTRY, S, STATIC, and sticking_probability_H_HM79().

Referenced by mole_h2_grain_form().

Here is the call graph for this function:

◆ sticking_probability_H_HM79()

STATIC double sticking_probability_H_HM79 ( double T_gas,
double T_grain )

References DEBUG_ENTRY, S, and STATIC.

Referenced by sticking_probability_H_func().

Variable Documentation

◆ albedo

realnum albedo = 0.5
static

◆ udfatab

map<formula_species,shared_ptr<udfa_reaction> > udfatab
static

Referenced by compare_udfa(), and parse_udfa().