cloudy  trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Enumerations | Functions | Variables
grains_qheat.cpp File Reference
#include "cddefines.h"
#include "rfield.h"
#include "phycon.h"
#include "dense.h"
#include "hmi.h"
#include "thermal.h"
#include "trace.h"
#include "iterations.h"
#include "vectorize.h"
#include "grainvar.h"
#include "grains.h"
Include dependency graph for grains_qheat.cpp:

Go to the source code of this file.

Enumerations

enum  QH_Code {
  QH_OK, QH_ANALYTIC, QH_ANALYTIC_RELAX, QH_DELTA,
  QH_NEGRATE_FAIL, QH_LOOP_FAIL, QH_ARRAY_FAIL, QH_THIGH_FAIL,
  QH_RETRY, QH_CONV_FAIL, QH_BOUND_FAIL, QH_DELTA_FAIL,
  QH_NO_REBIN, QH_LOW_FAIL, QH_HIGH_FAIL, QH_STEP_FAIL,
  QH_FATAL, QH_WIDE_FAIL, QH_NBIN_FAIL, QH_REBIN_FAIL
}
 

Functions

double no_atoms (size_t nd)
 
STATIC void qheat_init (size_t, vector< double > &, double *)
 
STATIC void GetProbDistr_LowLimit (size_t, double, double, double, const vector< double > &, const vector< double > &, vector< double > &, vector< double > &, vector< double > &, long *, double *, long *, QH_Code *)
 
STATIC double TryDoubleStep (vector< double > &, vector< double > &, vector< double > &, vector< double > &, vector< double > &, const vector< double > &, const vector< double > &, double, double *, double, long, size_t, bool *)
 
STATIC double log_integral (double, double, double, double, double, double, double, double)
 
STATIC void ScanProbDistr (const vector< double > &, const vector< double > &, long, double, long, double, long *, long *, long *, long *, QH_Code *)
 
STATIC long RebinQHeatResults (size_t, long, long, vector< double > &, vector< double > &, vector< double > &, vector< double > &, vector< double > &, vector< double > &, vector< double > &, QH_Code *)
 
STATIC void GetProbDistr_HighLimit (long, double, double, double, vector< double > &, vector< double > &, vector< double > &, double *, long *, double *, QH_Code *)
 
STATIC double uderiv (double, size_t)
 
STATIC double ufunct (double, size_t, bool *)
 
STATIC double inv_ufunct (double, size_t, bool *)
 
STATIC double DebyeDeriv (double, long)
 
realnum fast_expm1 (realnum x)
 
STATIC long GrainMakeDiffuseSingle (double Tgrain, double fracpop, avx_ptr< realnum > &flux, long nflux)
 
void GrainMakeDiffuse ()
 
void qheat (vector< double > &qtemp, vector< double > &qprob, long int *qnbin, size_t nd)
 
STATIC void GetProbDistr_LowLimit (size_t nd, double rel_tol, double Umax, double fwhm, const vector< double > &Phi, const vector< double > &PhiDrv, vector< double > &qtemp, vector< double > &qprob, vector< double > &dPdlnT, long int *qnbin, double *new_tmin, long *nWideFail, QH_Code *ErrorCode)
 
void InitEnthalpy ()
 

Variables

static const long NQMIN = 10L
 
static const double PROB_CUTOFF_LO = 1.e-15
 
static const double PROB_CUTOFF_HI = 1.e-20
 
static const double SAFETY = 1.e+8
 
static const long NSTARTUP = 5L
 
static const double MAX_EVENTS = 150.
 
static const long LOOP_MAX = 20L
 
static const double DEF_FAC = 3.
 
static const double PROB_TOL = 0.02
 
static const long NQTEST = 500L
 
static const double FWHM_RATIO = 0.1
 
static const double FWHM_RATIO2 = 0.007
 
static const long MAX_LOOP = 2*NQGRID
 
static const double QHEAT_TOL = 5.e-3
 
static const long WIDE_FAIL_MAX = 3
 
static const double STRICT = 1.
 
static const double RELAX = 15.
 
static const double QT_RATIO = 1.074
 
static const double DEN_SIL = 3.30
 
static const double MW_SIL = 24.6051
 
static const double tlim [5] ={0.,50.,150.,500.,DBL_MAX}
 
static const double ppower [4] ={2.00,1.30,0.68,0.00}
 
static const double cval [4]
 
static const realnum LIM1 = 2.e-4f
 
static const realnum LIM2 = sqrtf(6.e-4f)
 
static const realnum LIM3 = cbrtf(24.e-4f)
 

Enumeration Type Documentation

enum QH_Code
Enumerator
QH_OK 
QH_ANALYTIC 
QH_ANALYTIC_RELAX 
QH_DELTA 
QH_NEGRATE_FAIL 
QH_LOOP_FAIL 
QH_ARRAY_FAIL 
QH_THIGH_FAIL 
QH_RETRY 
QH_CONV_FAIL 
QH_BOUND_FAIL 
QH_DELTA_FAIL 
QH_NO_REBIN 
QH_LOW_FAIL 
QH_HIGH_FAIL 
QH_STEP_FAIL 
QH_FATAL 
QH_WIDE_FAIL 
QH_NBIN_FAIL 
QH_REBIN_FAIL 

Definition at line 26 of file grains_qheat.cpp.

Function Documentation

STATIC double DebyeDeriv ( double  x,
long  n 
)

Definition at line 2528 of file grains_qheat.cpp.

References ASSERT, DEBUG_ENTRY, gauss_init(), gauss_legendre(), MAX2, pow2(), pow3(), powi(), and TotalInsanity().

Referenced by uderiv().

Here is the call graph for this function:

realnum fast_expm1 ( realnum  x)
inline

Definition at line 180 of file grains_qheat.cpp.

References LIM1, LIM2, and LIM3.

Referenced by GrainMakeDiffuseSingle().

STATIC void GetProbDistr_HighLimit ( long  nd,
double  TolFac,
double  Umax,
double  fwhm,
vector< double > &  qtemp,
vector< double > &  qprob,
vector< double > &  dPdlnT,
double *  tol,
long *  qnbin,
double *  new_tmin,
QH_Code ErrorCode 
)
STATIC void GetProbDistr_LowLimit ( size_t  ,
double  ,
double  ,
double  ,
const vector< double > &  ,
const vector< double > &  ,
vector< double > &  ,
vector< double > &  ,
vector< double > &  ,
long *  ,
double *  ,
long *  ,
QH_Code  
)

Referenced by qheat().

STATIC void GetProbDistr_LowLimit ( size_t  nd,
double  rel_tol,
double  Umax,
double  fwhm,
const vector< double > &  Phi,
const vector< double > &  PhiDrv,
vector< double > &  qtemp,
vector< double > &  qprob,
vector< double > &  dPdlnT,
long int *  qnbin,
double *  new_tmin,
long *  nWideFail,
QH_Code ErrorCode 
)
void GrainMakeDiffuse ( )
STATIC long GrainMakeDiffuseSingle ( double  Tgrain,
double  fracpop,
avx_ptr< realnum > &  flux,
long  nflux 
)

Definition at line 194 of file grains_qheat.cpp.

References t_mesh::anu(), fast_expm1(), avx_ptr< T, lgBC >::ptr0(), rfield, and vexpm1().

Referenced by GrainMakeDiffuse().

Here is the call graph for this function:

void InitEnthalpy ( )

initialize interpolation arrays for grain enthalpy

Definition at line 2476 of file grains_qheat.cpp.

References GrainVar::bin, DEBUG_ENTRY, GrainVar::dsttmp, GRAIN_TMIN, gv, log_integral(), NDEMS, spline(), tlim, uderiv(), and vlog().

Referenced by GrainsInit().

Here is the call graph for this function:

STATIC double inv_ufunct ( double  enthalpy,
size_t  nd,
bool *  lgBoundErr 
)

Definition at line 2450 of file grains_qheat.cpp.

References ASSERT, GrainVar::bin, cdEXIT, DEBUG_ENTRY, GrainVar::dsttmp, EXIT_FAILURE, fprintf(), gv, ioQQQ, NDEMS, and splint_safe().

Referenced by GetProbDistr_HighLimit(), qheat(), and TryDoubleStep().

Here is the call graph for this function:

STATIC double log_integral ( double  xx1,
double  yy1,
double  xx2,
double  yy2,
double  log_xx1,
double  log_yy1,
double  log_xx2,
double  log_yy2 
)

Definition at line 1759 of file grains_qheat.cpp.

References DEBUG_ENTRY.

Referenced by GetProbDistr_HighLimit(), InitEnthalpy(), RebinQHeatResults(), and TryDoubleStep().

double no_atoms ( size_t  nd)
inline

Definition at line 16 of file grains_qheat.cpp.

References GrainVar::bin, and gv.

Referenced by uderiv().

void qheat ( vector< double > &  qtemp,
vector< double > &  qprob,
long int *  qnbin,
size_t  nd 
)
STATIC void qheat_init ( size_t  nd,
vector< double > &  phiTilde,
double *  check 
)
STATIC long RebinQHeatResults ( size_t  nd,
long  nstart,
long  nend,
vector< double > &  p,
vector< double > &  qtemp,
vector< double > &  qprob,
vector< double > &  dPdlnT,
vector< double > &  u1,
vector< double > &  delu,
vector< double > &  Lambda,
QH_Code ErrorCode 
)
STATIC void ScanProbDistr ( const vector< double > &  u1,
const vector< double > &  dPdlnT,
long  nbin,
double  maxVal,
long  nmax,
double  qtmin1,
long *  nstart,
long *  nstart2,
long *  nend,
long *  nWideFail,
QH_Code ErrorCode 
)

Definition at line 1784 of file grains_qheat.cpp.

References ASSERT, DEBUG_ENTRY, fprintf(), GRAIN_TMIN, ioQQQ, t_trace::lgDustBug, t_trace::lgTrace, MAX2, NQMIN, QH_HIGH_FAIL, QH_LOW_FAIL, QH_NBIN_FAIL, QH_NO_REBIN, QH_WIDE_FAIL, trace, and WIDE_FAIL_MAX.

Referenced by GetProbDistr_LowLimit().

Here is the call graph for this function:

STATIC double TryDoubleStep ( vector< double > &  u1,
vector< double > &  delu,
vector< double > &  p,
vector< double > &  qtemp,
vector< double > &  Lambda,
const vector< double > &  Phi,
const vector< double > &  PhiDrv,
double  step,
double *  cooling,
double  p_max,
long  index,
size_t  nd,
bool *  lgBoundFail 
)
STATIC double uderiv ( double  temp,
size_t  nd 
)
STATIC double ufunct ( double  temp,
size_t  nd,
bool *  lgBoundErr 
)

Definition at line 2424 of file grains_qheat.cpp.

References ASSERT, GrainVar::bin, cdEXIT, DEBUG_ENTRY, GrainVar::dsttmp, EXIT_FAILURE, fprintf(), gv, ioQQQ, NDEMS, and splint_safe().

Referenced by GetProbDistr_HighLimit(), GetProbDistr_LowLimit(), qheat(), and RebinQHeatResults().

Here is the call graph for this function:

Variable Documentation

const double cval[4]
static
Initial value:
={
1.40e3/DEN_SIL*ATOMIC_MASS_UNIT*MW_SIL/EN1RYD,
2.20e4/DEN_SIL*ATOMIC_MASS_UNIT*MW_SIL/EN1RYD,
4.80e5/DEN_SIL*ATOMIC_MASS_UNIT*MW_SIL/EN1RYD,
3.41e7/DEN_SIL*ATOMIC_MASS_UNIT*MW_SIL/EN1RYD}
static const double DEN_SIL
static const double MW_SIL

Definition at line 129 of file grains_qheat.cpp.

Referenced by uderiv().

const double DEF_FAC = 3.
static

Definition at line 68 of file grains_qheat.cpp.

Referenced by GetProbDistr_LowLimit(), and qheat().

const double DEN_SIL = 3.30
static

Definition at line 121 of file grains_qheat.cpp.

const double FWHM_RATIO = 0.1
static

Definition at line 79 of file grains_qheat.cpp.

Referenced by qheat().

const double FWHM_RATIO2 = 0.007
static

Definition at line 82 of file grains_qheat.cpp.

Referenced by qheat().

const realnum LIM1 = 2.e-4f
static

Definition at line 175 of file grains_qheat.cpp.

Referenced by fast_expm1().

const realnum LIM2 = sqrtf(6.e-4f)
static

Definition at line 176 of file grains_qheat.cpp.

Referenced by fast_expm1(), and qheat_init().

const realnum LIM3 = cbrtf(24.e-4f)
static

Definition at line 177 of file grains_qheat.cpp.

Referenced by fast_expm1(), and qheat_init().

const long LOOP_MAX = 20L
static

Definition at line 65 of file grains_qheat.cpp.

Referenced by cnewton(), lgCoolNetConverge(), and qheat().

const double MAX_EVENTS = 150.
static

Definition at line 61 of file grains_qheat.cpp.

Referenced by qheat().

const long MAX_LOOP = 2*NQGRID
static

Definition at line 85 of file grains_qheat.cpp.

Referenced by GetProbDistr_LowLimit().

const double MW_SIL = 24.6051
static

Definition at line 124 of file grains_qheat.cpp.

const long NQMIN = 10L
static
const long NQTEST = 500L
static

Definition at line 75 of file grains_qheat.cpp.

Referenced by GetProbDistr_LowLimit().

const long NSTARTUP = 5L
static

Definition at line 57 of file grains_qheat.cpp.

Referenced by GetProbDistr_LowLimit().

const double ppower[4] ={2.00,1.30,0.68,0.00}
static

Definition at line 128 of file grains_qheat.cpp.

Referenced by uderiv().

const double PROB_CUTOFF_HI = 1.e-20
static

Definition at line 53 of file grains_qheat.cpp.

Referenced by GetProbDistr_HighLimit(), and GetProbDistr_LowLimit().

const double PROB_CUTOFF_LO = 1.e-15
static
const double PROB_TOL = 0.02
static

Definition at line 71 of file grains_qheat.cpp.

Referenced by GetProbDistr_HighLimit(), and GetProbDistr_LowLimit().

const double QHEAT_TOL = 5.e-3
static

Definition at line 88 of file grains_qheat.cpp.

Referenced by GetProbDistr_LowLimit(), and TryDoubleStep().

const double QT_RATIO = 1.074
static

Definition at line 106 of file grains_qheat.cpp.

Referenced by GetProbDistr_HighLimit(), and RebinQHeatResults().

const double RELAX = 15.
static

Definition at line 95 of file grains_qheat.cpp.

Referenced by qheat().

const double SAFETY = 1.e+8
static
const double STRICT = 1.
static

Definition at line 94 of file grains_qheat.cpp.

Referenced by GetProbDistr_HighLimit(), and qheat().

const double tlim[5] ={0.,50.,150.,500.,DBL_MAX}
static

Definition at line 127 of file grains_qheat.cpp.

Referenced by InitEnthalpy(), and uderiv().

const long WIDE_FAIL_MAX = 3
static

Definition at line 91 of file grains_qheat.cpp.

Referenced by GetProbDistr_LowLimit(), qheat(), and ScanProbDistr().