Cloudy
Spectral Synthesis Code for Astrophysics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
helike_cs.cpp File Reference
#include "cddefines.h"
#include "dense.h"
#include "helike.h"
#include "helike_cs.h"
#include "hydro_vs_rates.h"
#include "iso.h"
#include "phycon.h"
#include "thirdparty.h"
#include "thirdparty_quadpack.h"
#include "trace.h"
#include "freebound.h"
#include "lines_service.h"
#include "integrate.h"
#include "vectorize.h"
#include "hydroeinsta.h"
#include "parser.h"
Include dependency graph for helike_cs.cpp:

Classes

class  my_Integrand_VF01_E< P >
 
class  my_Integrand_VF01_E< P >
 
class  my_Integrand_VF01_E_log< P >
 
class  my_Integrand_S62
 

Functions

STATIC realnum HeCSTableInterp (long nelem, long Collider, long nHi, long lHi, long sHi, long jHi, long nLo, long lLo, long sLo, long jLo)
 
STATIC double CS_l_mixing_S62 (double deltaE_eV, double IP_Ryd_ground, long gLo, double Aul, long nelem, long Collider, double temp)
 
template<class P >
STATIC double collision_strength_VF01 (long ipISO, double velOrEner, const my_Integrand_VF01_E< P > &vf)
 
double reduced_amu (long nelem, long Collider)
 
void HeCollidSetup ()
 
realnum HeCSInterp (long nelem, long ipHi, long ipLo, long Collider)
 
realnum GetHelikeCollisionStrength (long nelem, long Collider, long nHi, long lHi, long sHi, long jHi, long gHi, double IP_Ryd_Hi, long nLo, long lLo, long sLo, long jLo, long gLo, double IP_Ryd_Lo, double Aul, double tauLo, double EnerWN, double EnerErg, const char **where)
 
STATIC double S62BesselInvert (double zOverB2)
 
double CS_l_mixing_PS64_expI (long nelem, long ipISO, double tau, double target_charge, long n, long l, double g, long lp, double deltaE_eV, long Collider)
 
double CS_l_mixing_PS64 (long nelem, long ipISO, double tau, double target_charge, long n, long l, double gLo, long lp, double deltaE_eV, long Collider)
 
template<class P >
double CS_l_mixing (long ipISO, long nelem, long n, long l, long lp, long s, long gLo, double tauLo, double IP_Ryd_Hi, double IP_Ryd_Lo, double temp, long Collider)
 
double CS_l_mixing_VF01 (long ipISO, long nelem, long n, long l, long lp, long s, long gLo, double tauLo, double IP_Ryd_Hi, double IP_Ryd_Lo, double temp, long Collider)
 
double CS_l_mixing_VOS12QM (long ipISO, long nelem, long n, long l, long lp, long s, long gLo, double tauLo, double IP_Ryd_Hi, double IP_Ryd_Lo, double temp, long Collider)
 
double CS_l_mixing_VOS12 (long n, long l, long lp, long nelem, double gLo, long Ztarget, long Collider, double sqrte)
 
template<class P >
STATIC double CSIntegral_QG32 (const my_Integrand_VF01_alpha< P > &func, double alphamin_int, double alphamax_int)
 
template<class P >
STATIC double CSIntegral_Romberg (long ipISO, const my_Integrand_VF01_beta< P > &func, double alphamin_int, double alphamax_int, double eps)
 
template<class P >
STATIC double CSIntegral_Romberg_alpha (long ipISO, const my_Integrand_VF01_alpha< P > &func, double alphamin_int, double alphamax_int, double eps)
 
double CSresolver (long ipISO, long nHi, long lHi, long sHi, long nLo, long lLo, long sLo, long n_HighestResolved)
 

Variables

const unsigned int NCSTEMP = 9U
 
realnum CSTemp [NCSTEMP]
 
map< QNPair, array< realnum,
NCSTEMP > > 
HeCS
 
static const double ColliderCharge [4] = {1.0, 1.0, 1.0, 2.0}
 

Function Documentation

template<class P >
STATIC double collision_strength_VF01 ( long  ipISO,
double  velOrEner,
const my_Integrand_VF01_E< P > &  vf 
)
template<class P >
double CS_l_mixing ( long  ipISO,
long  nelem,
long  n,
long  l,
long  lp,
long  s,
long  gLo,
double  tauLo,
double  IP_Ryd_Hi,
double  IP_Ryd_Lo,
double  temp,
long  Collider 
)
inline
double CS_l_mixing_PS64 ( long  nelem,
long  ipISO,
double  tau,
double  target_charge,
long  n,
long  l,
double  gLo,
long  lp,
double  deltaE_eV,
long  Collider 
)
double CS_l_mixing_PS64_expI ( long  nelem,
long  ipISO,
double  tau,
double  target_charge,
long  n,
long  l,
double  g,
long  lp,
double  deltaE_eV,
long  Collider 
)
STATIC double CS_l_mixing_S62 ( double  deltaE_eV,
double  IP_Ryd_ground,
long  gLo,
double  Aul,
long  nelem,
long  Collider,
double  temp 
)
double CS_l_mixing_VF01 ( long  ipISO,
long  nelem,
long  n,
long  l,
long  lp,
long  s,
long  gLo,
double  tauLo,
double  IP_Ryd_Hi,
double  IP_Ryd_Lo,
double  temp,
long  Collider 
)

CS_l_mixing_VF01 Collision treatment based on Vrinceanu and Flannery 2001

Parameters
ipISO
nelem
n
l
lp
s
gLo
tauLo
IP_Ryd_Hi
IP_Ryd_Lo
temp
Collider

Referenced by GetHelikeCollisionStrength(), and GetHlikeCollisionStrength().

double CS_l_mixing_VOS12 ( long  n,
long  l,
long  lp,
long  nelem,
double  gLo,
long  Ztarget,
long  Collider,
double  sqrte 
)

CS_l_mixing_VOS12 Collision treatment based on Vrinceanu Onofrio & Sadeghpour 2012 http://adsabs.harvard.edu/abs/2012ApJ...747...56V

References ColliderCharge, powpq(), and reduced_amu().

Referenced by GetHelikeCollisionStrength(), and GetHlikeCollisionStrength().

Here is the call graph for this function:

double CS_l_mixing_VOS12QM ( long  ipISO,
long  nelem,
long  n,
long  l,
long  lp,
long  s,
long  gLo,
double  tauLo,
double  IP_Ryd_Hi,
double  IP_Ryd_Lo,
double  temp,
long  Collider 
)

CS_l_mixing_VOS12 Collision treatment based on Vrinceanu Onofrio & Sadeghpour 2012 corresponding to quantal treatment: equation (2) http://adsabs.harvard.edu/abs/2012ApJ...747...56V

Referenced by GetHelikeCollisionStrength(), and GetHlikeCollisionStrength().

template<class P >
STATIC double CSIntegral_QG32 ( const my_Integrand_VF01_alpha< P > &  func,
double  alphamin_int,
double  alphamax_int 
)

References Gaussian32, and Integrator< Integrand, Method >::sum().

Referenced by collision_strength_VF01().

Here is the call graph for this function:

template<class P >
STATIC double CSIntegral_Romberg ( long  ipISO,
const my_Integrand_VF01_beta< P > &  func,
double  alphamin_int,
double  alphamax_int,
double  eps 
)

References iso_ctrl, t_isoCTRL::lgCS_VOS12QM, integrate::Romberg< T >::sum(), and integrate::Romberg< T >::update().

Referenced by collision_strength_VF01().

Here is the call graph for this function:

template<class P >
STATIC double CSIntegral_Romberg_alpha ( long  ipISO,
const my_Integrand_VF01_alpha< P > &  func,
double  alphamin_int,
double  alphamax_int,
double  eps 
)

References iso_ctrl, t_isoCTRL::lgCS_VOS12QM, integrate::Romberg< T >::sum(), and integrate::Romberg< T >::update().

Referenced by collision_strength_VF01().

Here is the call graph for this function:

double CSresolver ( long  ipISO,
long  nHi,
long  lHi,
long  sHi,
long  nLo,
long  lLo,
long  sLo,
long  nHighestResolved 
)
CSresolver - this function averages collapsed-to-collapsed collision strengths into
             collapsed-to-resolved and resolved-to-resolved
Parameters
ipISO
nHi
lHi
sHi
nLo
lLo
sLo

References ASSERT, DEBUG_ENTRY, ipDOUBLET, ipH_LIKE, ipHE_LIKE, ipSINGLET, ipTRIPLET, pow2(), S, and TotalInsanity().

Referenced by GetHelikeCollisionStrength(), and GetHlikeCollisionStrength().

Here is the call graph for this function:

realnum GetHelikeCollisionStrength ( long  nelem,
long  Collider,
long  nHi,
long  lHi,
long  sHi,
long  jHi,
long  gHi,
double  IP_Ryd_Hi,
long  nLo,
long  lLo,
long  sLo,
long  jLo,
long  gLo,
double  IP_Ryd_Lo,
double  Aul,
double  tauLo,
double  EnerWN,
double  EnerErg,
const char **  where 
)
void HeCollidSetup ( void  )

HeCollidSetup read in helium collision data files

References cdEXIT, DataParser::checkEOL(), DataParser::checkMagic(), COLLISMAGIC, CSTemp, DEBUG_ENTRY, DataParser::errorAbort(), ES_NONE, EXIT_FAILURE, getL(), DataParser::getline(), DataParser::getToken(), HeCS, ipHE_LIKE, ipHELIUM, iso_sp, and NCSTEMP.

Referenced by iso_create().

Here is the call graph for this function:

STATIC realnum HeCSTableInterp ( long  nelem,
long  Collider,
long  nHi,
long  lHi,
long  sHi,
long  jHi,
long  nLo,
long  lLo,
long  sLo,
long  jLo 
)

References t_phycon::alogte, ASSERT, CSTemp, DEBUG_ENTRY, HeCS, ipELECTRON, ipHE_LIKE, ipHELIUM, iso_sp, linint(), NCSTEMP, and phycon.

Referenced by GetHelikeCollisionStrength().

Here is the call graph for this function:

double reduced_amu ( long  nelem,
long  Collider 
)

reduced_amu - Calculate reduced mass in AMU

Parameters
nelen[in] element index (0 for H)
Collider[in]collision partner
Returns
reduced mass

References t_dense::AtomicWeight, my_Integrand_VF01_E< P >::Collider, colliders, dense, ColliderList::list, and my_Integrand_VF01_E< P >::nelem.

Referenced by CS_l_mixing_PS64(), CS_l_mixing_PS64_expI(), CS_l_mixing_S62(), CS_l_mixing_VOS12(), hydro_vanRegemorter_deexcit(), and my_Integrand_VF01_E< P >::my_Integrand_VF01_E().

STATIC double S62BesselInvert ( double  zOverB2)

References ASSERT, DEBUG_ENTRY, and exp10().

Referenced by my_Integrand_S62::operator()().

Here is the call graph for this function:

Variable Documentation

const double ColliderCharge[4] = {1.0, 1.0, 1.0, 2.0}
static
realnum CSTemp[NCSTEMP]

Referenced by HeCollidSetup(), and HeCSTableInterp().

map<QNPair, array<realnum,NCSTEMP> > HeCS

array of collision strengths read from data file...this is interpolated upon.

Referenced by HeCollidSetup(), and HeCSTableInterp().

const unsigned int NCSTEMP = 9U

vector of temperatures corresponding to collision strengths stuffed into HeCS.

Referenced by HeCollidSetup(), and HeCSTableInterp().