atom_feii.cpp File Reference

#include "cddefines.h"
#include "cddrive.h"
#include "thermal.h"
#include "physconst.h"
#include "doppvel.h"
#include "taulines.h"
#include "dense.h"
#include "rfield.h"
#include "radius.h"
#include "lines_service.h"
#include "ipoint.h"
#include "thirdparty.h"
#include "hydrogenic.h"
#include "lines.h"
#include "rt.h"
#include "path.h"
#include "trace.h"
#include "punch.h"
#include "phycon.h"
#include "atomfeii.h"

Include dependency graph for atom_feii.cpp:

Go to the source code of this file.

Defines

#define CS2SMALL   1e-5f
#define NPRADDAT   159
#define USE_OLD   true
#define AMAT(I_, J_)   (*(amat+(I_)*FeII.nFeIILevel+(J_)))
#define NLEVDEP   11
#define NLEVPOP   11

Functions

static void FeIIOvrLap (void)
static void FeIIContCreate (double xLamLow, double xLamHigh, long int ncell)
static int FeIIBandsCreate (const char chFile[])
static void FeIICollRatesBoltzmann (void)
static void FeIILyaPump (void)
void FeII_Colden (const char *chLabel)
void FeIICreate (void)
void FeIILevelPops (void)
void FeIIPrint (void)
double FeIISumBand (float wl1, float wl2)
void FeII_RT_TauInc (void)
void FeII_RT_tau_reset (void)
void FeIIPoint (void)
void FeIIAccel (double *fe2drive)
void FeII_RT_Make (bool lgDoEsc, bool lgUpdateFineOpac)
void FeIIAddLines (void)
void FeIIPunchLevels (FILE *ioPUN)
void FeIIPunchColden (FILE *ioPUN)
void FeIIPunchOpticalDepth (FILE *ioPUN)
void FeIIPunchLines (FILE *ioPUN)
void FeII_LineZero (void)
void FeIIIntenZero (void)
void FeIIFillLow16 (void)
void FeIIPunData (FILE *ioPUN, bool lgDoAll)
void FeIIPunDepart (FILE *ioPUN, bool lgDoAll)
void FeIIPun1Depart (FILE *ioPUN, long int nPUN)
void FeIIReset (void)
void FeIIZero (void)
void FeIIPunPop (FILE *ioPUN, bool lgPunchRange, long int ipRangeLo, long int ipRangeHi, bool lgPunchDensity)
void AssertFeIIDep (double *pred, double *BigError, double *StdDev)
void FeII_OTS (void)
void FeII_RT_Out (void)
void ParseAtomFeII (char *chCard)
void PunFeII (FILE *io)
void FeIIPunchLineStuff (FILE *io, float xLimit, long index)
double FeIIRadPress (void)
double FeII_InterEnergy (void)

Variables

int ** ncs1
float ** FeII_Bands
float ** FeII_Cont
long int nFeIIBands
long int nFeIIConBins
static long int * nnPradDat
static float *** sPradDat
static double ** Fe2SavN
static double ** Fe2A
static double ** Fe2LPump
static double ** Fe2CPump
float * Fe2Energies
static float ** Fe2Coll
static double * Fe2DepCoef
static double * Fe2LevelPop
static double * Fe2ColDen
static double * FeIIBoltzmann
static double EnerLyaProf1
static double EnerLyaProf4
static double PhotOccNumLyaCenter
static double * yVector
static double ** xMatrix
static double * amat


Define Documentation

#define AMAT ( I_,
J_   )     (*(amat+(I_)*FeII.nFeIILevel+(J_)))

#define CS2SMALL   1e-5f

Definition at line 81 of file atom_feii.cpp.

Referenced by FeIICollRatesBoltzmann(), and FeIICreate().

#define NLEVDEP   11

Referenced by FeIIPunDepart().

#define NLEVPOP   11

Referenced by FeIIPunPop().

#define NPRADDAT   159

Definition at line 103 of file atom_feii.cpp.

Referenced by FeIICollRatesBoltzmann(), and FeIICreate().

#define USE_OLD   true

Referenced by FeIICreate().


Function Documentation

void AssertFeIIDep ( double *  pred,
double *  BigError,
double *  StdDev 
)

called by assert feii depart coef command

Parameters:
*pred 
*BigError 
*StdDev 

Definition at line 2768 of file atom_feii.cpp.

References ASSERT, DEBUG_ENTRY, DEBUG_EXIT, Fe2DepCoef, FeII, t_FeII::lgSimulate, MAX2, t_FeII::nFeIILevel, and POW2.

Referenced by lgCheckAsserts().

void FeII_Colden ( const char *  chLabel  ) 

FeII_Colden maintain H2 column densities within X

Parameters:
*chLabel 

Definition at line 179 of file atom_feii.cpp.

References cdEXIT(), DEBUG_ENTRY, DEBUG_EXIT, t_radius::drad_x_fillfac, Fe2ColDen, Fe2LevelPop, FeII, ioQQQ, t_FeII::nFeIILevel, and radius.

Referenced by molcol().

Here is the call graph for this function:

double FeII_InterEnergy ( void   ) 

internal energy of FeII called in PresTotCurrent

Returns:

Definition at line 3317 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, EmLine::EnergyErg, Fe2LevN, FeII, t_FeII::nFeIILevel, and EmLine::PopHi.

Referenced by PresTotCurrent().

void FeII_LineZero ( void   ) 

initialize optical depth arrays, called by TauOut

Definition at line 1988 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, EmLineZero(), Fe2LevN, FeII, and t_FeII::nFeIILevel.

Referenced by RT_tau_init().

Here is the call graph for this function:

void FeII_OTS ( void   ) 

do OTS and outward parts of FeII lines, if large atom is turned on

Definition at line 2827 of file atom_feii.cpp.

References ASSERT, EmLine::Aul, DEBUG_ENTRY, DEBUG_EXIT, Fe2LevN, FeII, t_FeII::nFeIILevel, EmLine::ots, EmLine::Pdest, EmLine::PopHi, and RT_OTS_AddLine().

Referenced by RT_OTS().

Here is the call graph for this function:

void FeII_RT_Make ( bool  lgDoEsc,
bool  lgUpdateFineOpac 
)

called in LineSet4 to add FeII lines to save array

Parameters:
lgDoEsc 
lgUpdateFineOpac 

Definition at line 1681 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, Fe2LevN, FeII, ioQQQ, t_trace::lgTrace, t_FeII::nFeIILevel, t_FeII::nFeIILevelAlloc, RT_line_one(), and trace.

Referenced by RT_line_all().

Here is the call graph for this function:

void FeII_RT_Out ( void   ) 

do outward rates for FeII, called by RT_diffuse

Definition at line 2866 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, dense, Fe2LevN, FeII, ipIRON, t_FeII::nFeIILevel, outline(), and t_dense::xIonDense.

Referenced by RT_diffuse().

Here is the call graph for this function:

void FeII_RT_tau_reset ( void   ) 

FeII_RT_tau_reset reset optical depths for large FeII atom, called by update after each iteration

Definition at line 1545 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, Fe2LevN, FeII, FeIIOvrLap(), t_FeII::nFeIILevelAlloc, and RT_line_one_tau_reset().

Referenced by RT_tau_reset().

Here is the call graph for this function:

void FeII_RT_TauInc ( void   ) 

FeII_RT_TauInc called once per zone in RT_tau_inc to increment large FeII atom line optical depths

Definition at line 1514 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, Fe2LevN, FeII, t_FeII::nFeIILevel, t_FeII::nFeIILevelAlloc, and RT_line_one_tauinc().

Referenced by RT_tau_inc().

Here is the call graph for this function:

void FeIIAccel ( double *  fe2drive  ) 

called by rt_line_driving to compute radiative acceleration due to FeII lines

Parameters:
*fe2drive 

Definition at line 1651 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, EmLine::EnergyErg, Fe2LevN, FeII, t_FeII::nFeIILevel, EmLine::PopOpc, and EmLine::pump.

Referenced by RT_line_driving().

void FeIIAddLines ( void   ) 

called by LineSet4, this adds feii line intensities together

Definition at line 1719 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, t_radius::dVeff, Fe2LevN, Fe2SavN, FeII, ioQQQ, t_LineSave::ipass, LineSave, t_FeII::nFeIILevel, nzone, radius, and EmLine::xIntensity.

Referenced by lines_lv1_k_zn().

static int FeIIBandsCreate ( const char  chFile[]  )  [static]

Definition at line 2578 of file atom_feii.cpp.

References ASSERT, chDataPath, DEBUG_ENTRY, DEBUG_EXIT, FeII_Bands, FFmtRead(), FILENAME_PATH_LENGTH_2, INPUT_LINE_LENGTH, ioQQQ, lgCalled, lgDataPathSet, t_trace::lgTrace, MALLOC, nFeIIBands, and trace.

Referenced by FeIICreate().

Here is the call graph for this function:

static void FeIICollRatesBoltzmann ( void   )  [static]

static void FeIIContCreate ( double  xLamLow,
double  xLamHigh,
long int  ncell 
) [static]

Definition at line 2899 of file atom_feii.cpp.

References cdEXIT(), DEBUG_ENTRY, DEBUG_EXIT, FeII_Cont, ioQQQ, lgCalled, MALLOC, and nFeIIConBins.

Referenced by FeIICreate().

Here is the call graph for this function:

void FeIICreate ( void   ) 

void FeIIFillLow16 ( void   ) 

void FeIIIntenZero ( void   ) 

void FeIILevelPops ( void   ) 

static void FeIILyaPump ( void   )  [static]

static void FeIIOvrLap ( void   )  [static]

Definition at line 2987 of file atom_feii.cpp.

References DEBUG_ENTRY, and DEBUG_EXIT.

Referenced by FeII_RT_tau_reset().

void FeIIPoint ( void   ) 

FeIIPoint called by ContCreatePointers to create pointers for lines in large FeII atom

Definition at line 1589 of file atom_feii.cpp.

References abscf(), t_rfield::chLineLabel, EmLine::dampXvel, DEBUG_ENTRY, DEBUG_EXIT, EmLine::EnergyErg, EmLine::EnergyK, ERG1CM, Fe2LevN, FeII, EmLine::ipCont, EmLine::ipFine, ipFineCont(), ipoint(), t_FeII::nFeIILevel, EmLine::opacity, PI4, rfield, T1CM, and WAVNRYD.

Referenced by ContCreatePointers().

Here is the call graph for this function:

void FeIIPrint ( void   ) 

FeIIPrint

Definition at line 1426 of file atom_feii.cpp.

References DEBUG_ENTRY, and DEBUG_EXIT.

Referenced by PrtZone().

void FeIIPun1Depart ( FILE *  ioPUN,
long int  nPUN 
)

send the departure coef for physical level nPUN to unit ioPUN

Parameters:
ioPUN the io unit where the print should be directed
nPUN the physical (not c) number of the level

Definition at line 2351 of file atom_feii.cpp.

References ASSERT, DEBUG_ENTRY, DEBUG_EXIT, Fe2DepCoef, FeII, and t_FeII::nFeIILevel.

Referenced by FeIIPunDepart().

void FeIIPunchColden ( FILE *  ioPUN  ) 

FeIIPunchColden punch level energies, stat weights, column density

Parameters:
*ioPUN file we will punch to

Definition at line 1799 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, Fe2ColDen, Fe2LevN, FeII, and t_FeII::nFeIILevel.

Referenced by PunchDo().

void FeIIPunchLevels ( FILE *  ioPUN  ) 

called by parse_punch, punch level energies and stat weights

Parameters:
ioPUN 

Definition at line 1776 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, Fe2LevN, FeII, and t_FeII::nFeIILevel.

Referenced by PunchDo().

void FeIIPunchLines ( FILE *  ioPUN  ) 

called by FeIIPunchLevels, this creates the punch feii line intensity

Parameters:
ioPUN 

Definition at line 1863 of file atom_feii.cpp.

References cdEXIT(), cdLine(), t_radius::Conv2PrtInten, DEBUG_ENTRY, DEBUG_EXIT, EmLine::EnergyWN, t_FeII::fe2ener, Fe2LevN, Fe2SavN, t_FeII::fe2thresh, FeII, ioQQQ, t_LineSave::ipNormWavL, t_LineSave::lgLineEmergent, t_FeII::lgShortFe2, LineSave, LineSv, MAX2, t_FeII::nFeIILevelAlloc, radius, t_LineSave::ScaleNormLine, SMALLFLOAT, t_tag_LineSv::sumlin, and EmLine::TauIn.

Referenced by PunchDo().

Here is the call graph for this function:

void FeIIPunchLineStuff ( FILE *  io,
float  xLimit,
long  index 
)

include FeII lines in punched optical depths, etc, called from PunchLineStuff

Parameters:
io 
xLimit 
index 

Definition at line 3224 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, Fe2LevN, FeII, t_FeII::nFeIILevel, and pun1Line().

Referenced by PunchLineStuff().

Here is the call graph for this function:

void FeIIPunchOpticalDepth ( FILE *  ioPUN  ) 

called by FeIIPunchLevels, this creates the punch feii line optical depths

Parameters:
ioPUN 

Definition at line 1826 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, Fe2LevN, FeII, and t_FeII::nFeIILevelAlloc.

Referenced by PunchDo().

void FeIIPunData ( FILE *  ioPUN,
bool  lgDoAll 
)

punch line data for FeII atom

Parameters:
ioPUN io unit for punch
lgDoAll punch all levels if true, only subset if false

Definition at line 2221 of file atom_feii.cpp.

References cdEXIT(), DEBUG_ENTRY, DEBUG_EXIT, Fe2LevN, FeII, ioQQQ, MIN2, ncs1, t_FeII::nFeIILevel, and Punch1LineData().

Referenced by PunchLineData().

Here is the call graph for this function:

void FeIIPunDepart ( FILE *  ioPUN,
bool  lgDoAll 
)

punch some departure coef for large atom, set with punch feii departure command

Parameters:
ioPUN 
lgDoAll option to punch all dep coef if true

Definition at line 2296 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, FeII, FeIIPun1Depart(), t_FeII::nFeIILevel, and NLEVDEP.

Referenced by PunchDo().

Here is the call graph for this function:

void FeIIPunPop ( FILE *  ioPUN,
bool  lgPunchRange,
long int  ipRangeLo,
long int  ipRangeHi,
bool  lgPunchDensity 
)

punch some level pops for large atom, set with punch feii level populations command

Parameters:
ioPUN 
lgPunchRange punch range of levels if true, only selected subset if false
ipRangeLo if ipPunchRange is true, this is lower bound of range on C scale
ipRangeHi if ipPunchRange is true, this is upper bound of range on C scale
lgPunchDensity flag saying whether to punch density (cm-3, true) or relative population (flase)

Definition at line 2471 of file atom_feii.cpp.

References ASSERT, DEBUG_ENTRY, DEBUG_EXIT, dense, Fe2LevelPop, FeII, ipIRON, t_FeII::nFeIILevel, NLEVPOP, SDIV(), and t_dense::xIonDense.

Referenced by PunchDo().

Here is the call graph for this function:

double FeIIRadPress ( void   ) 

rad pre due to FeII lines called in PresTotCurrent

Definition at line 3244 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, DumpLine(), Fe2LevN, FeII, EmLine::gLo, ioQQQ, iteration, t_FeII::nFeIILevel, nzone, EmLine::PopLo, powi(), RT_LineWidth(), and SMALLFLOAT.

Referenced by PresTotCurrent().

Here is the call graph for this function:

void FeIIReset ( void   ) 

initialize some variables, called by zero

Definition at line 2383 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, FeII, t_FeII::nFeIILevel, and t_FeII::nFeIILevelAlloc.

Referenced by IterRestart().

double FeIISumBand ( float  wl1,
float  wl2 
)

called in LineSet4, this sums over FeII bands and returns intensities args are lower and upper edges of bands as set in fe2bands.dat

Parameters:
wl1 
wl2 

Definition at line 1443 of file atom_feii.cpp.

References ASSERT, DEBUG_ENTRY, DEBUG_EXIT, dense, Fe2LevN, FeII, ipIRON, t_FeII::nFeIILevel, EmLine::xIntensity, and t_dense::xIonDense.

Referenced by lines_lv1_k_zn().

void FeIIZero ( void   ) 

void ParseAtomFeII ( char *  chCard  ) 

void PunFeII ( FILE *  io  ) 

Definition at line 3202 of file atom_feii.cpp.

References DEBUG_ENTRY, DEBUG_EXIT, Fe2LevN, FeII, and t_FeII::nFeIILevel.

Referenced by PunchSpecial().


Variable Documentation

double * amat [static]

double EnerLyaProf1 [static]

Definition at line 164 of file atom_feii.cpp.

Referenced by FeIILyaPump().

double EnerLyaProf4 [static]

Definition at line 164 of file atom_feii.cpp.

Referenced by FeIILyaPump().

double** Fe2A [static]

Definition at line 139 of file atom_feii.cpp.

Referenced by FeIICreate(), and FeIILevelPops().

double * Fe2ColDen [static]

Definition at line 155 of file atom_feii.cpp.

Referenced by FeII_Colden(), FeIICreate(), and FeIIPunchColden().

float** Fe2Coll [static]

Definition at line 148 of file atom_feii.cpp.

Referenced by FeIICollRatesBoltzmann(), FeIICreate(), and FeIILevelPops().

double ** Fe2CPump [static]

Definition at line 142 of file atom_feii.cpp.

Referenced by FeIICreate(), and FeIILevelPops().

double* Fe2DepCoef [static]

Definition at line 155 of file atom_feii.cpp.

Referenced by AssertFeIIDep(), FeIICreate(), FeIILevelPops(), and FeIIPun1Depart().

float* Fe2Energies

Definition at line 145 of file atom_feii.cpp.

Referenced by FeIICreate().

double * Fe2LevelPop [static]

Definition at line 155 of file atom_feii.cpp.

Referenced by FeII_Colden(), FeIICreate(), FeIIIntenZero(), FeIILevelPops(), and FeIIPunPop().

double** Fe2LPump [static]

Definition at line 142 of file atom_feii.cpp.

Referenced by FeIICreate(), FeIILevelPops(), and FeIILyaPump().

double** Fe2SavN [static]

Definition at line 136 of file atom_feii.cpp.

Referenced by FeIIAddLines(), FeIICreate(), and FeIIPunchLines().

float** FeII_Bands

FeII.bands[n][3], where n is the number of bands in fe2bands.dat these bands are defined in fe2bands.dat and read in at startup of calculation

Definition at line 109 of file atom_feii.cpp.

Referenced by FeIIBandsCreate(), and lines_lv1_k_zn().

float** FeII_Cont

FeII_Cont[n][3], where n is the number of cells needed these bands are defined in cdGetFeIIBands

Definition at line 115 of file atom_feii.cpp.

Referenced by FeIIContCreate(), lines_lv1_k_zn(), and PunchDo().

double * FeIIBoltzmann [static]

Definition at line 155 of file atom_feii.cpp.

Referenced by FeIICollRatesBoltzmann(), FeIICreate(), and FeIILevelPops().

int** ncs1

Definition at line 97 of file atom_feii.cpp.

Referenced by FeIICollRatesBoltzmann(), FeIICreate(), and FeIIPunData().

long int nFeIIBands

this is the number of bands read in from bands_Fe2.dat

Definition at line 118 of file atom_feii.cpp.

Referenced by FeIIBandsCreate(), and lines_lv1_k_zn().

long int nFeIIConBins

number of bands in continuum array

Definition at line 121 of file atom_feii.cpp.

Referenced by FeIIContCreate(), lines_lv1_k_zn(), and PunchDo().

long int* nnPradDat [static]

Definition at line 126 of file atom_feii.cpp.

Referenced by FeIICollRatesBoltzmann(), and FeIICreate().

double PhotOccNumLyaCenter [static]

Definition at line 164 of file atom_feii.cpp.

Referenced by FeIILyaPump().

float*** sPradDat [static]

Definition at line 131 of file atom_feii.cpp.

Referenced by FeIICollRatesBoltzmann(), and FeIICreate().

double ** xMatrix [static]

Definition at line 169 of file atom_feii.cpp.

Referenced by FeIICreate(), FeIILevelPops(), and SanityCheckBegin().

double* yVector [static]

Definition at line 169 of file atom_feii.cpp.

Referenced by FeIICreate(), FeIILevelPops(), and SanityCheckBegin().


Generated for cloudy by doxygen 1.5.9