30 fprintf(
ioQQQ,
" Sorry, H-like He does not exist.\n");
45 else if( p.
nMatch(
"IONI") )
56 fprintf(
ioQQQ,
"This command changed to ATOM H-LIKE COLLISIONS L-MIXING\n");
57 fprintf(
ioQQQ,
"I will parse it for now, but may not in the future.\n");
63 else if( p.
nMatch(
"L-MI") )
72 else if( p.
nMatch(
"THER") )
88 else if( p.
nMatch(
"PENG") )
92 else if( p.
nMatch(
" OFF" ) )
103 fprintf(
ioQQQ,
" needs parameter\n" );
107 else if( p.
nMatch(
" OFF" ) )
117 fprintf(
ioQQQ,
" needs parameter\n" );
131 else if( p.
nMatch(
"DAMP") )
135 fprintf(
ioQQQ,
" Sorry, the DAMPING option is not implemented for the he-like sequence.\n");
143 else if( p.
nMatch(
"DIEL") )
147 fprintf(
ioQQQ,
" Sorry, but dielectronic recombination onto the h-like sequence is not possible.\n");
160 else if( p.
nMatch(
"LEVE") )
179 else if( p.
nMatch(
"PRIN") )
192 fprintf(
ioQQQ,
" Not possible to set nhlvl to >NHYDRO_MAX_LEVEL-2= %i\n",
194 fprintf(
ioQQQ,
" change NHYDRO_MAX_LEVEL\n");
202 fprintf(
ioQQQ,
" Not possible to set iso_sp[ipH_LIKE][ipHYDROGEN].numLevels_max to such a high value, since "
203 "alpha transition not within energy bounds of code\n");
205 fprintf(
ioQQQ,
" lowest energy is %e and corresponding highest level is %li\n" ,
213 int LevelsResolved=-1 , LevelsCollapsed=10;
238 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
241 MIN2(
iso_sp[ipISO][nelem].nCollapsed_max , LevelsCollapsed );
243 MIN2(
iso_sp[ipISO][nelem].n_HighestResolved_max , LevelsResolved );
255 else if( p.
nMatch(
"COLLAP") )
260 fprintf(
ioQQQ,
"There must be at least one collapsed level.\n");
267 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
279 else if( p.
nMatch(
"RESOLV") )
282 if( ( numLevels < 3 ) && !p.
nMatch(
"COLL") )
284 fprintf(
ioQQQ,
" cannot have fewer than 3 resolved levels, the requested number was %li\n" ,
286 fprintf(
ioQQQ,
" Sorry.\n" );
293 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
307 fprintf(
ioQQQ,
"I did not recognize a keyword on this atom xx-like levels command."
308 " Should be COLLAPSED or RESOLVED.\n Sorry.\n\n");
338 else if( p.
nMatch(
" FSM") )
342 fprintf(
ioQQQ,
" Sorry, but fine-structure mixing can only be implemented for the He-like sequence.\n");
348 fprintf(
ioQQQ,
" Sorry, but fine-structure mixing for the He-like sequence does not now work.\n");
349 fprintf(
ioQQQ,
" Add the keyword CRASH to skip this message and proceed on to the problem.\n");
360 else if( p.
nMatch(
"GBAR") )
364 fprintf(
ioQQQ,
" Sorry, the GBAR option is only implemented for the He-like sequence.\n");
380 else if( p.
nMatch(
" NEW") )
392 else if( p.
nMatch(
" OFF") )
399 fprintf(
ioQQQ,
" needs parameter\n" );
405 else if( p.
nMatch(
"LYMA") )
415 else if( p.
nMatch(
"SCALE") )
449 fprintf(
ioQQQ,
" Sorry, I didn\'t recognize an option on this ATOM H-LIKE LYMAN PUMP command.\n");
450 fprintf(
ioQQQ,
" The options are \" OFF\", and \"SCALE\".\n");
454 else if( p.
nMatch(
"EXTRA") )
459 p.
NoNumb(
"'extra' Lyman lines");
463 fprintf(
ioQQQ,
" Sorry, the value on this ATOM xx-LIKE LYMAN command must be at least 2.\n");
469 fprintf(
ioQQQ,
" Sorry, I didn\'t recognize an option on this ATOM xx-LIKE LYMAN command.\n");
470 fprintf(
ioQQQ,
" The options are \"PUMP\", and \"EXTRA\".\n");
476 else if( p.
nMatch(
"RECO") &&
485 else if( p.
nMatch(
"REDI") )
498 else if( p.
nMatch(
" CRD") )
503 else if( p.
nMatch(
"CRDW") )
509 else if( !p.
nMatch(
"SHOW") )
511 fprintf(
ioQQQ,
" There should have been a second keyword on this command.\n");
512 fprintf(
ioQQQ,
" Options are _PRD, _CRD, CRDW (_ is space). Sorry.\n");
522 else if( p.
nMatch(
"RESO") )
527 else if( p.
nMatch(
"SUBO") )
532 else if( p.
nMatch(
"SHOW") )
534 fprintf(
ioQQQ,
" Ly a is ");
537 fprintf(
ioQQQ,
"complete redistribution with wings\n");
541 fprintf(
ioQQQ,
"complete redistribution with core only.\n");
545 fprintf(
ioQQQ,
"partial redistribution.\n");
549 fprintf(
ioQQQ,
"special Lya.\n");
553 fprintf(
ioQQQ,
" PROBLEM Impossible value for iso_ctrl.ipLyaRedist.\n");
557 fprintf(
ioQQQ,
" Other %s resonance lines are ",
562 fprintf(
ioQQQ,
"complete redistribution with wings\n");
566 fprintf(
ioQQQ,
"complete redistribution with core only.\n");
570 fprintf(
ioQQQ,
"partial redistribution.\n");
574 fprintf(
ioQQQ,
" PROBLEM Impossible value for iso_ctrl.ipResoRedist.\n");
578 fprintf(
ioQQQ,
" %s subordinate lines are ",
583 fprintf(
ioQQQ,
"complete redistribution with wings\n");
587 fprintf(
ioQQQ,
"complete redistribution with core only.\n");
591 fprintf(
ioQQQ,
"partial redistribution.\n");
595 fprintf(
ioQQQ,
" PROBLEM Impossible value for iso_ctrl.ipSubRedist.\n");
601 fprintf(
ioQQQ,
" here should have been another keyword on this command.\n");
602 fprintf(
ioQQQ,
" Options are ALPHA, RESONANCE, SUBORDINATE. Sorry.\n");
607 else if( p.
nMatch(
"TOPO") )
612 fprintf(
ioQQQ,
"ISO %li TOPOFF is OFF\n", ipISO );
621 fprintf(
ioQQQ,
" There should have been a keyword on this ATOM H-LIKE or HE-LIKE command.\n Sorry.\n" );
const int NHYDRO_MAX_LEVEL
NORETURN void TotalInsanity(void)
#define DEBUG_ENTRY(funcname)
long int GetElem(void) const
bool nMatch(const char *chKey) const
NORETURN void NoNumb(const char *chDesc) const
long int n_HighestResolved_max
bool lgCS_therm_ave[NISO]
bool lgContinuumLoweringEnabled[NISO]
bool lgNoRecombInterp[NISO]
bool lgColl_l_mixing[NISO]
bool lgCS_Vrinceanu[NISO]
bool lgPrintNumberOfLevels
t_elementnames elementnames
t_iso_sp iso_sp[NISO][LIMELM]
void iso_update_num_levels(long ipISO, long nelem)
void ParseAtomISO(long ipISO, Parser &p)
char chElementSym[LIMELM][CHARS_ELEMENT_SYM]
realnum xLymanPumpingScaleFactor
realnum vparm[LIMEXT][LIMPAR]
char chVarFmt[LIMPAR][FILENAME_PATH_LENGTH_2]
void init_genrand(unsigned long s)