28 bool lgStopZone =
true;
57 if( a <= 10. && !p.
nMatch(
"LINE") )
70 " Temperatures below %.2e K not allowed. Reset to lowest value."
71 " I am doing this myself.\n" ,
79 " Temperatures is above %.2e K not allowed. Reset to highest value."
80 " I am doing this myself.\n" ,
120 fprintf(
ioQQQ,
" First number on STOP 21CM OPTICAL DEPTH command must be 21\n" );
139 else if( p.
nMatch(
"OPTI") )
145 p.
NoNumb(
"optical depth");
161 fprintf(
ioQQQ,
" The log optical depth of %.2e is too big, the largest is log t = 37\n",
182 else if( p.
nMatch(
"BALM") )
189 fprintf(
ioQQQ,
" There must be a second number, the energy in Ryd. Sorry.\n" );
205 fprintf(
ioQQQ,
" The energy must be in the range %10.2e to %10.2e. It was %10.2e. Sorry.\n",
226 else if( p.
nMatch(
" AV ") )
232 p.
NoNumb(
"optical depth in V");
259 p.
NoNumb(
"molecular depletion");
272 else if( p.
nMatch(
"VELO") )
278 p.
NoNumb(
"flow velocity");
285 else if( p.
nMatch(
"MASS") )
324 const double convl = p.
nMatch(
"PARS") ? log10( PARSEC ) : 0.;
325 bool lgStopRadius = p.
nMatch(
"RADI") ?
true : false ;
326 const char* what = lgStopRadius ?
"radius" :
"thickness";
332 a = log10(a) + convl;
336 fprintf(
ioQQQ,
"The %s is negative and linear is set - this is impossible.\n", what);
371 a = log10(a) + convl;
376 " this is impossible.\n", what);
418 else if( p.
nMatch(
"ZONE") )
455 fprintf(
ioQQQ,
"CAUTION - it will take a lot of memory to save"
456 " results for %li zones. Is this many zones really necessary?\n",
474 if( flux <= 0. || p.
nMatch(
" LOG") )
483 else if( p.
nMatch(
"EFRA") )
489 p.
NoNumb(
"electron fraction");
503 else if( p.
nMatch(
"MFRA") )
509 p.
NoNumb(
"hydrogen molecular fraction");
523 else if( p.
nMatch(
"PFRA") )
529 p.
NoNumb(
"ionized hydrogen fraction");
542 else if( p.
nMatch(
"COLU") )
546 bool lgFoundLabel = !p.
GetQuote( chLabel );
551 p.
NoNumb(
"column density");
568 else if( p.
nMatch(
"EFFE") )
588 else if( p.
nMatch(
"IONI") )
614 else if( p.
nMatch(
"NEUT") )
635 else if( p.
nMatch(
" H2 ") )
643 fprintf(
ioQQQ,
" Something is wrong with the order of the numbers on this line.\n" );
644 fprintf(
ioQQQ,
" The first number I encounter should be the 2 in H2.\n Sorry.\n" );
665 else if( p.
nMatch(
"ATOM") )
682 else if( p.
nMatch(
"H/TS") )
700 else if( p.
nMatch(
" CO ") )
747 else if( p.
nMatch(
"EDEN") )
753 p.
NoNumb(
"electron density");
769 else if( p.
nMatch(
"LINE") )
797 fprintf(
ioQQQ,
" There MUST be a relative intensity entered "
798 "for first line in STOP LINE command. Sorry.\n" );
833 else if( p.
nMatch(
"NTOTALIO" ) )
839 p.
NoNumb(
"number of calls to conv_base");
850 fprintf(
ioQQQ,
" I did not recognize a keyword on this STOP line, line image follows;\n" );
realnum StopLineWl2[MXSTPL]
bool nMatch(const char *chKey) const
char chStopLabel1[MXSTPL][NCHLAB]
int GetQuote(string &chLabel)
char chVarFmt[LIMPAR][FILENAME_PATH_LENGTH_2]
vector< double > StopThickness
void ParseStop(Parser &p)
realnum vparm[LIMEXT][LIMPAR]
char chStopLabel2[MXSTPL][NCHLAB]
void trimTrailingWhiteSpace(string &str)
NORETURN void StringError() const
const double TEMP_LIMIT_LOW
string StandardFluxUnit(void) const
double energy(const genericState &gs)
const double TEMP_LIMIT_HIGH
const char * StandardEnergyUnit(void) const
NORETURN void NoNumb(const char *chDesc) const
realnum StopLineWl1[MXSTPL]
realnum TempLoStopIteration
#define DEBUG_ENTRY(funcname)
int fprintf(const Output &stream, const char *format,...)
int PrintLine(FILE *fp) const
vector< double > StopRadius
realnum TempHiStopIteration