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;
236 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
239 MIN2(
iso_sp[ipISO][nelem].nCollapsed_max , LevelsCollapsed );
241 MIN2(
iso_sp[ipISO][nelem].n_HighestResolved_max , LevelsResolved );
253 else if( p.
nMatch(
"COLLAP") )
258 fprintf(
ioQQQ,
"There must be at least one collapsed level.\n");
265 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
277 else if( p.
nMatch(
"RESOLV") )
280 if( ( numLevels < 3 ) && !p.
nMatch(
"COLL") )
282 fprintf(
ioQQQ,
" cannot have fewer than 3 resolved levels, the requested number was %li\n" ,
284 fprintf(
ioQQQ,
" Sorry.\n" );
291 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
305 fprintf(
ioQQQ,
"I did not recognize a keyword on this atom xx-like levels command."
306 " Should be COLLAPSED or RESOLVED.\n Sorry.\n\n");
336 else if( p.
nMatch(
" FSM") )
340 fprintf(
ioQQQ,
" Sorry, but fine-structure mixing can only be implemented for the He-like sequence.\n");
352 else if( p.
nMatch(
"GBAR") )
356 fprintf(
ioQQQ,
" Sorry, the GBAR option is only implemented for the He-like sequence.\n");
372 else if( p.
nMatch(
" NEW") )
384 else if( p.
nMatch(
" OFF") )
391 fprintf(
ioQQQ,
" needs parameter\n" );
397 else if( p.
nMatch(
"LYMA") )
407 else if( p.
nMatch(
"SCALE") )
441 fprintf(
ioQQQ,
" Sorry, I didn\'t recognize an option on this ATOM H-LIKE LYMAN PUMP command.\n");
442 fprintf(
ioQQQ,
" The options are \" OFF\", and \"SCALE\".\n");
446 else if( p.
nMatch(
"EXTRA") )
451 p.
NoNumb(
"'extra' Lyman lines");
455 fprintf(
ioQQQ,
" Sorry, the value on this ATOM xx-LIKE LYMAN command must be at least 2.\n");
461 fprintf(
ioQQQ,
" Sorry, I didn\'t recognize an option on this ATOM xx-LIKE LYMAN command.\n");
462 fprintf(
ioQQQ,
" The options are \"PUMP\", and \"EXTRA\".\n");
468 else if( p.
nMatch(
"RECO") &&
477 else if( p.
nMatch(
"REDI") )
490 else if( p.
nMatch(
" CRD") )
495 else if( p.
nMatch(
"CRDW") )
501 else if( !p.
nMatch(
"SHOW") )
503 fprintf(
ioQQQ,
" There should have been a second keyword on this command.\n");
504 fprintf(
ioQQQ,
" Options are _PRD, _CRD, CRDW (_ is space). Sorry.\n");
514 else if( p.
nMatch(
"RESO") )
519 else if( p.
nMatch(
"SUBO") )
524 else if( p.
nMatch(
"SHOW") )
526 fprintf(
ioQQQ,
" Ly a is ");
529 fprintf(
ioQQQ,
"complete redistribution with wings\n");
533 fprintf(
ioQQQ,
"complete redistribution with core only.\n");
537 fprintf(
ioQQQ,
"partial redistribution.\n");
541 fprintf(
ioQQQ,
"special Lya.\n");
545 fprintf(
ioQQQ,
" PROBLEM Impossible value for iso_ctrl.ipLyaRedist.\n");
549 fprintf(
ioQQQ,
" Other %s resonance lines are ",
554 fprintf(
ioQQQ,
"complete redistribution with wings\n");
558 fprintf(
ioQQQ,
"complete redistribution with core only.\n");
562 fprintf(
ioQQQ,
"partial redistribution.\n");
566 fprintf(
ioQQQ,
" PROBLEM Impossible value for iso_ctrl.ipResoRedist.\n");
570 fprintf(
ioQQQ,
" %s subordinate lines are ",
575 fprintf(
ioQQQ,
"complete redistribution with wings\n");
579 fprintf(
ioQQQ,
"complete redistribution with core only.\n");
583 fprintf(
ioQQQ,
"partial redistribution.\n");
587 fprintf(
ioQQQ,
" PROBLEM Impossible value for iso_ctrl.ipSubRedist.\n");
593 fprintf(
ioQQQ,
" here should have been another keyword on this command.\n");
594 fprintf(
ioQQQ,
" Options are ALPHA, RESONANCE, SUBORDINATE. Sorry.\n");
599 else if( p.
nMatch(
"TOPO") )
604 fprintf(
ioQQQ,
"ISO %li TOPOFF is OFF\n", ipISO );
613 fprintf(
ioQQQ,
" There should have been a keyword on this ATOM H-LIKE or HE-LIKE command.\n Sorry.\n" );
realnum xLymanPumpingScaleFactor
bool nMatch(const char *chKey) const
bool lgContinuumLoweringEnabled[NISO]
NORETURN void TotalInsanity(void)
bool lgCS_therm_ave[NISO]
char chVarFmt[LIMPAR][FILENAME_PATH_LENGTH_2]
bool lgColl_l_mixing[NISO]
realnum vparm[LIMEXT][LIMPAR]
bool lgCS_Vrinceanu[NISO]
t_elementnames elementnames
t_iso_sp iso_sp[NISO][LIMELM]
void iso_update_num_levels(long ipISO, long nelem)
long int n_HighestResolved_max
void ParseAtomISO(long ipISO, Parser &p)
bool lgPrintNumberOfLevels
NORETURN void NoNumb(const char *chDesc) const
long int GetElem(void) const
char chElementSym[LIMELM][CHARS_ELEMENT_SYM]
#define DEBUG_ENTRY(funcname)
void init_genrand(unsigned long s)
const int NHYDRO_MAX_LEVEL
bool lgNoRecombInterp[NISO]