44 fprintf(
ioQQQ,
"\n\n PROBLEM DISASTER - the kinetic temperature, %.3eK,"
45 " is above the upper limit of the code, %.3eK.\n",
47 fprintf(
ioQQQ,
" This calculation is aborting.\n Sorry.\n");
55 fprintf(
ioQQQ,
"\n\n PROBLEM DISASTER - the kinetic temperature, %.3eK,"
56 " is below the lower limit of the code, %.3eK.\n",
58 fprintf(
ioQQQ,
" Consider setting a lowest temperature with the SET TEMPERATURE FLOOR command.\n");
59 fprintf(
ioQQQ,
" This calculation is aborting.\n Sorry.\n");
66 fprintf(
ioQQQ,
"temp_change: temp change floor hit, TempNew=%.3e TeFloor=%.3e, "
67 "setting constant temperature, nTotalIoniz=%li\n",
85 static bool lgPrinted =
false;
89 fprintf(
ioQQQ,
"\n This is often due to mixing luminosity/intensity commands, having"
90 " an unphysical SED, or too high a flux of cosmic rays.\n");
91 fprintf(
ioQQQ,
" To find the problem, try setting a constant temperature (and STOP ZONE 1), rerun the model,"
92 " and check the output to find what is happening.\n\n");
100 for(
long ipSpecies=0; ipSpecies<
nSpecies; ++ipSpecies )
121 fprintf(
ioQQQ,
" PROBLEM DISASTER - the kinetic temperature, %.3eK,"
122 " is above the upper limit of the code, %.3eK.\n",
124 fprintf(
ioQQQ,
" This calculation is aborting.\n Sorry.\n");
132 fprintf(
ioQQQ,
" PROBLEM DISASTER - the kinetic temperature, %.3eK,"
133 " is below the lower limit of the code, %.3eK.\n",
135 fprintf(
ioQQQ,
" Consider setting a lowest temperature with the SET TEMPERATURE FLOOR command.\n");
136 fprintf(
ioQQQ,
" This calculation is aborting.\n Sorry.\n");
155 static double tgffused=-1.;
156 static double ttused = 0.;
157 static bool lgZLogSet =
false;
171 fprintf(
ioQQQ,
"tfidle called with a zero or negative electron density,%10.2e\n",
179 fprintf(
ioQQQ,
"tfidle called with a negative electron temperature,%10.2e\n",
187 for(
long nelem=0; nelem<
LIMELM; ++nelem )
216 for(
int i=1; i < 7; i++ )
380 ASSERT( massAMU < 10000. );
433 fixit(
"turbulence was included here for molecules but not ions. Now neither. Resolve.");
434 return (
realnum)sqrt(8.*BOLTZMANN/PI/ATOMIC_MASS_UNIT*
phycon.
te/massAMU);
vector< double, allocator_avx< double > > ContBoltz
vector< double, allocator_avx< double > > vexp_arg
long int ipEnergyBremsThin
NORETURN void TotalInsanity(void)
double widflx(size_t i) const
vector< double, allocator_avx< double > > ContBoltzHelp2
sys_float sexp(sys_float x)
bool lgTemperatureConstant
vector< double, allocator_avx< double > > ContBoltzAvg
double anu(size_t i) const
void TempChange(double TempNew, bool lgForceUpdate)
STATIC void tfidle(bool lgForceUpdate)
void vexp(const double x[], double y[], long nlo, long nhi)
long int nflux_with_check
const double TEMP_LIMIT_LOW
double xIonDense[LIMELM][LIMELM+1]
bool fp_equal(sys_float x, sys_float y, int n=3)
bool lgBallistic(void) const
const double TEMP_LIMIT_HIGH
realnum GetDopplerWidth(realnum massAMU)
realnum GetAveVelocity(realnum massAMU)
double anumin(size_t i) const
#define DEBUG_ENTRY(funcname)
vector< double, allocator_avx< double > > ContBoltzHelp1
vector< species > dBaseSpecies
int fprintf(const Output &stream, const char *format,...)
bool lgStatic(void) const
void vexpm1(const double x[], double y[], long nlo, long nhi)