Cloudy
Spectral Synthesis Code for Astrophysics
|
#include <conv.h>
Public Member Functions | |
const char * | chName () const |
void | zero () |
void | comment (t_warnings &) |
void | resetConvIoniz () |
void | setConvIonizFail (const char *reason, double oldval, double newval) |
bool | lgConvIoniz () const |
const char * | chConvIoniz () const |
double | convIonizOldVal () const |
double | convIonizNewVal () const |
size_t | ntypes (void) const |
ConvergenceCounter | register_ (const string name) |
void | incrementCounter (const size_t type) |
void | resetCounters () |
void | resetCountersZone () |
long | getCounter (const long type) const |
long | getCounter (const string name) const |
long | getCounterZone (const long type) const |
const char * | getCounterName (const long type) const |
Public Member Functions inherited from module | |
module () | |
virtual | ~module () |
Private Attributes | |
string | m_chConvIoniz |
bool | m_lgConvIoniz |
double | m_BadConvIoniz [2] |
std::vector< long > | m_counters |
std::vector< long > | m_counters_zone |
std::vector< string > | m_labels |
the variables that deal with the convergence of the model
|
inline |
References m_chConvIoniz.
Referenced by ConvBase(), ConvEdenIoniz(), ConvFail(), and ConvIoniz().
|
inlinevirtual |
Implements module.
|
inlinevirtual |
Implements module.
|
inline |
References m_BadConvIoniz.
Referenced by ConvFail(), and ConvIoniz().
|
inline |
References m_BadConvIoniz.
Referenced by ConvFail(), and ConvIoniz().
|
inline |
References m_counters.
Referenced by cloudy().
|
inline |
References m_counters, and m_labels.
|
inline |
|
inline |
References m_counters_zone.
Referenced by SaveDo().
|
inline |
References m_counters, and m_counters_zone.
Referenced by ConvergenceCounter::operator++().
|
inline |
References m_lgConvIoniz.
Referenced by ConvBase(), ConvFail(), ConvIoniz(), ConvPresTempEdenIoniz(), CoolSave(), EdenError(), iso_renorm(), lgStatesConserved(), TransitionProxy::outline(), RT_OTS_PrtRate(), and SaveHeat().
|
inline |
References m_counters.
Referenced by SaveDo().
ConvergenceCounter t_conv::register_ | ( | const string | name | ) |
References cdEXIT, DEBUG_ENTRY, EXIT_FAILURE, fprintf(), ioQQQ, m_counters, m_counters_zone, and m_labels.
Referenced by ConvBase(), ConvPresTempEdenIoniz(), CoolHeatError(), EdenError(), diatomics::H2_LevelPops(), ion_solver(), mole_solve(), and newton_step().
|
inline |
References m_BadConvIoniz, m_chConvIoniz, and m_lgConvIoniz.
Referenced by ConvBase(), and zero().
|
inline |
References m_counters.
Referenced by zero().
|
inline |
References m_counters_zone.
Referenced by ZoneStart().
|
inline |
References m_BadConvIoniz, m_chConvIoniz, and m_lgConvIoniz.
Referenced by check_co_ion_converge(), ConvBase(), GrainChargeTemp(), iso_renorm(), lgConvEden(), lgNetEdenSrcSmall(), lgStatesConserved(), and mole_solve().
|
virtual |
Implements module.
References autocv, AverEdenError, AverHeatCoolError, AverPressError, BigEdenError, BigHeatCoolError, BigPressError, chNotConverged, chSolverEden, chSolverTemp, dCmHdT, EdenErrorAllowed, failmx, GasPhaseAbundErrorAllowed, HeatCoolRelErrorAllowed, IonizErrorAllowed, lgAllTransitions, lgAutoIt, lgConvEden, lgConvPres, lgConvTemp, lgFirstSweepThisZone, lgLastSweepThisZone, lgMap, lgUpdateCouplings, LimFail, limPres2Ioniz, MaxFractionalDensityStepPerIteration, nGrainFail, nIonFail, nNeFail, nPopFail, nPreFail, nPres2Ioniz, nTeFail, nTotalFailures, nTotalIoniz, PressureErrorAllowed, resetConvIoniz(), and resetCounters().
realnum t_conv::autocv |
a convergence criteria
Referenced by ConvIterCheck(), ParseIterations(), and zero().
realnum t_conv::AverEdenError |
remember the average electron density error
Referenced by ConvInitSolution(), PrtFinal(), radius_increment(), and zero().
realnum t_conv::AverHeatCoolError |
Referenced by ConvInitSolution(), PrtFinal(), radius_increment(), and zero().
realnum t_conv::AverPressError |
Referenced by ConvInitSolution(), PrtFinal(), radius_increment(), and zero().
realnum t_conv::BigEdenError |
remember the biggest electron density error as test of convergence quality
Referenced by ConvInitSolution(), PrtComment(), PrtFinal(), radius_increment(), and zero().
realnum t_conv::BigHeatCoolError |
remember the biggest and average heating-cooling error
Referenced by ConvInitSolution(), PrtFinal(), radius_increment(), and zero().
realnum t_conv::BigPressError |
remember the biggest and average pressure error
Referenced by ConvInitSolution(), PrtFinal(), radius_increment(), and zero().
char t_conv::chNotConverged[INPUT_LINE_LENGTH] |
this gives the reason the model was declared not converged when 'iter to convergence' command is given
Referenced by ConvIterCheck(), PrtComment(), and zero().
char t_conv::chSolverEden[20] |
which electron density solver to use? set with set eden solver command, simple and new
Referenced by ConvEdenIoniz(), ParseSet(), and zero().
char t_conv::chSolverTemp[20] |
which temperature density solver to use? set with set eden solver command, default and brent
Referenced by ConvTempEdenIoniz(), and zero().
double t_conv::dCmHdT |
numerical estimate of d(cooling-heating)/dT
Referenced by ConvTempEdenIoniz(), IterStart(), lgConvTemp(), and zero().
double t_conv::EdenErrorAllowed |
this is relative error in the electron density we want set in zero to 0.01 reset with set eden error command
Referenced by advection_set_default(), ConvBase(), GrainDrive(), GrainsInit(), diatomics::H2_LevelPops(), lgConvEden(), lgStatesConserved(), ParseSet(), PrtComment(), and zero().
realnum t_conv::failmx |
failmx is largest relative error in heating cooling match
Referenced by ConvFail(), IterStart(), PrtComment(), and zero().
realnum t_conv::GasPhaseAbundErrorAllowed |
allowed error in total gas-phase density of each element, including molecules change with "SET DENSITY TOLERANCE" command default set in zero
Referenced by get_total_abundance_ions(), lgElemsConserved(), ParseSet(), GroupMap::setup(), and zero().
realnum t_conv::HeatCoolRelErrorAllowed |
allowed error in heating - cooling balance, set with TOLERANCE command default set in zerologic
Referenced by advection_set_default(), ConvBase(), ConvFail(), CoolHeatError(), GrainsInit(), diatomics::H2_LevelPops(), lgConvTemp(), lgCoolHeatCheckConverge(), ParseSet(), and zero().
vector<double> t_conv::hist_pres_current |
Referenced by ConvPresTempEdenIoniz(), logPressureState(), and SaveDo().
vector<double> t_conv::hist_pres_density |
these are used to retain the density pressure history in current zone, can be output with save pressure history
Referenced by ConvPresTempEdenIoniz(), logPressureState(), and SaveDo().
vector<double> t_conv::hist_pres_error |
Referenced by ConvPresTempEdenIoniz(), logPressureState(), and SaveDo().
long int t_conv::hist_pres_nzone |
Referenced by ConvInitSolution(), and ConvPresTempEdenIoniz().
vector<double> t_conv::hist_temp_cool |
Referenced by CoolHeatError(), and SaveDo().
vector<double> t_conv::hist_temp_heat |
Referenced by CoolHeatError(), and SaveDo().
long int t_conv::hist_temp_nzone |
Referenced by ConvInitSolution(), and CoolHeatError().
vector<double> t_conv::hist_temp_temp |
these are used to retain the temp/heat/cooling history in current zone, can be output with save temperature history
Referenced by CoolHeatError(), and SaveDo().
long int t_conv::ifailz[12] |
zones where converge problems occurred
Referenced by ConvFail(), and PrtComment().
realnum t_conv::IonizErrorAllowed |
Referenced by ConvBase(), diatomics::H2_LevelPops(), iso_renorm(), mole_solve(), ParseSet(), and zero().
bool t_conv::lgAllTransitions |
says "iterate to convergence all" command given
Referenced by ConvIterCheck(), ParseIterations(), and zero().
bool t_conv::lgAutoIt |
says "iterate to convergence" command given
Referenced by ConvIterCheck(), ParseCommands(), ParseIterations(), PrtComment(), and zero().
bool t_conv::lgBadStop |
flag saying that calculation stopped for bad reason mostly set in lgEndfun
Referenced by iter_end_check(), PrtComment(), and PrtFinal().
bool t_conv::lgConvEden |
true when the electron density has converged
Referenced by ConvEdenIoniz(), ConvPresTempEdenIoniz(), CoolSave(), lgConvEden(), TransitionProxy::outline(), SaveHeat(), and zero().
bool t_conv::lgConvPops |
this flag is used in ConvPresTempEdenIoniz to check that populations have converged
Referenced by ConvFail(), ConvPresTempEdenIoniz(), diatomics::H2_LevelPops(), and TransitionProxy::outline().
bool t_conv::lgConvPres |
true if pressure is converged, false if not
Referenced by ConvPresTempEdenIoniz(), CoolSave(), TransitionProxy::outline(), PressureChange(), SaveDo(), SaveHeat(), and zero().
bool t_conv::lgConvTemp |
true if temperature is converged, false if not
Referenced by ConvFail(), ConvPresTempEdenIoniz(), ConvTempEdenIoniz(), CoolSave(), lgConvTemp(), TransitionProxy::outline(), SaveDo(), SaveHeat(), and zero().
bool t_conv::lgFirstSweepThisZone |
first sweep through solvers in this zone. also true is search phase
Referenced by ConvBase(), ConvInitSolution(), ConvPresTempEdenIoniz(), RT_line_all(), RT_line_all_escape(), RT_line_escape(), RT_line_pumping(), RT_tau_inc(), RT_tau_init(), UpdateUTAs(), and zero().
bool t_conv::lgIonStageTrimed |
flag set in ConvBase, saying whether ionization stage is trimmed down
Referenced by ConvBase(), ion_trim(), ion_trim2(), and RT_line_all_escape().
bool t_conv::lgLastSweepThisZone |
last sweep through solvers in this zone, so update fine opacities
Referenced by ConvInitSolution(), ConvPresTempEdenIoniz(), RT_line_all(), RT_line_all_escape(), RT_line_fine_opacity(), RT_tau_inc(), and zero().
bool t_conv::lgMap |
lgMap is option to map failures
Referenced by ConvFail(), ParseFail(), and zero().
bool t_conv::lgOscilOTS |
this is true if ots rates are oscillating, and this is why ionization is not converged
Referenced by ConvBase(), ConvInitSolution(), ConvIoniz(), and RT_tau_init().
bool t_conv::lgSearch |
conv.lgSearch is true during initial temp-ion search phase, false after first zone established
Referenced by ConvBase(), ConvEdenIoniz(), ConvInitSolution(), ConvIoniz(), CoolEvaluate(), dBase_solve(), EdenChange(), GrainCharge(), GrainChargeTemp(), GrainDrive(), H21_cm_pops(), diatomics::H2_Cooling(), diatomics::H2_LevelPops(), HeatSum(), ion_trim(), ion_trim2(), ion_trim_validate(), iso_level(), iter_end_check(), lgNetEdenSrcSmall(), map_do(), MyAssert(), OpacityAddTotal(), Atom_LevelN::operator()(), PresTotCurrent(), PrintRates(), renorm_solution(), GroupMap::setup(), and TempChange().
bool t_conv::lgUpdateCouplings |
says update inter-couplings after every ion solution
Referenced by ConvBase(), ParseSet(), and zero().
long int t_conv::LimFail |
LimFail is limit to number of te failures, set with "failures" cmnd
Referenced by ConvFail(), grid_do(), ParseFail(), and zero().
long int t_conv::limPres2Ioniz |
a limit to the above, in case where one zone takes forever to not converge, usually very large, set with SET PRESIONIZ command
Referenced by ConvBase(), ParseSet(), and zero().
|
private |
when the lgConvIoniz flag is set false, the old and new numbers, the reason for the lack of convergence, should be set to following
Referenced by convIonizNewVal(), convIonizOldVal(), resetConvIoniz(), and setConvIonizFail().
|
private |
this says why the ionization did not converge, reasons can be a large change in the level of ionization, or in the heating
Referenced by chConvIoniz(), resetConvIoniz(), and setConvIonizFail().
|
private |
Referenced by getCounter(), incrementCounter(), ntypes(), register_(), and resetCounters().
|
private |
Referenced by getCounterZone(), incrementCounter(), register_(), and resetCountersZone().
|
private |
Referenced by getCounter(), getCounterName(), and register_().
|
private |
this flag is used in ConvPresTempEdenIoniz to check that ionization has converged
Referenced by lgConvIoniz(), resetConvIoniz(), and setConvIonizFail().
double t_conv::MaxFractionalDensityStepPerIteration |
Referenced by ConvPresTempEdenIoniz(), limitedDensityScaling(), and zero().
long int t_conv::nChemFail |
number of chemistry solution failures
Referenced by IterStart().
long int t_conv::nGrainFail |
number of grain ionization balance failures
Referenced by ConvFail(), IterStart(), and zero().
long int t_conv::nIonFail |
nIonFail is number of ionization failures
Referenced by cdNwcns(), ConvFail(), IterStart(), and zero().
long int t_conv::nNeFail |
nNeFail is number of electron density failures
Referenced by cdNwcns(), ConvFail(), IterStart(), and zero().
long int t_conv::nPopFail |
nIonFail is number of level population failures
Referenced by ConvFail(), IterStart(), and zero().
long int t_conv::nPreFail |
nPreFail is number of pressure failures
Referenced by cdNwcns(), ConvFail(), IterStart(), and zero().
long int t_conv::nPres2Ioniz |
this will count the number of ionizations in one call from ConvPresTempEdenIoniz
Referenced by ConvBase(), ConvInitSolution(), ConvPresTempEdenIoniz(), CoolEvaluate(), ion_photo(), iso_update_rates(), mole_h_reactions(), OpacityAddTotal(), PrtZone(), RT_line_all(), SaveDo(), and zero().
long int t_conv::nTeFail |
nTeFail number of temperature failures
Referenced by cdNwcns(), ConvFail(), IterStart(), PrtComment(), ShowMe(), and zero().
long int t_conv::nTotalFailures |
total number of all falures, used to trigger abort
Referenced by ConvFail(), IterStart(), and zero().
long int t_conv::nTotalIoniz |
counts the number of calls to conv base after iteration starts can be used to determine very first pass through an iteration reset to zero at start of each iteration in a simulation
Referenced by ChargTranEval(), ConvBase(), ConvInitSolution(), dBaseAbund(), dBaseTrim(), EdenChange(), find_solution(), diatomics::H2_LevelPops(), HomogeneousSource(), ion_trim(), IonHelium(), iso_collapsed_update(), iso_collide(), iso_continuum_lower(), iso_ionize_recombine(), iso_level(), iso_rad_rec_cooling_discrete(), iso_radiative_recomb(), iso_update_rates(), lgCheckMonitors(), map_do(), mole_h_reactions(), PresTotCurrent(), PrtFinal(), RT_DestProb(), tauff(), TempChange(), and zero().
long int t_conv::nTotalIoniz_start |
the same counter but set to zero after the initial solution is converged, so this is a measure of the number of calls within true zones
Referenced by ConvInitSolution(), lgCheckMonitors(), and PrtFinal().
realnum t_conv::PressureErrorAllowed |
this is relative error in the pressure, initialized to 0.02 in reset with set pressure error command
Referenced by advection_set_default(), lgTestPressureConvergence(), ParseSet(), PresTotCurrent(), and zero().
double t_conv::sigma_dCmHdT |
1-sigma uncertainty in numerical estimate of d(cooling-heating)/dT
Referenced by ConvTempEdenIoniz(), and lgConvTemp().