30 fprintf(
ioQQQ,
" Sorry, H-like He does not exist.\n");
42 iso_ctrl.lgColl_excite[ipISO] =
false;
45 else if( p.
nMatch(
"IONI") )
48 iso_ctrl.lgColl_ionize[ipISO] =
false;
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");
59 iso_ctrl.lgColl_l_mixing[ipISO] =
false;
63 else if( p.
nMatch(
"L-MI") )
69 iso_ctrl.lgColl_l_mixing[ipISO] =
false;
72 else if( p.
nMatch(
"THER") )
81 iso_ctrl.lgCS_therm_ave[ipISO] =
false;
85 iso_ctrl.lgCS_therm_ave[ipISO] =
true;
88 else if( p.
nMatch(
"PENG") )
90 iso_ctrl.lgCS_Vrinceanu[ipISO] =
false;
92 else if( p.
nMatch(
" OFF" ) )
96 iso_ctrl.lgColl_l_mixing[ipISO] =
false;
98 iso_ctrl.lgCS_Vrinceanu[ipISO] =
false;
99 iso_ctrl.lgCS_therm_ave[ipISO] =
false;
103 fprintf(
ioQQQ,
" needs parameter\n" );
107 else if( p.
nMatch(
" OFF" ) )
110 iso_ctrl.lgColl_excite[ipISO] =
false;
111 iso_ctrl.lgColl_ionize[ipISO] =
false;
112 iso_ctrl.lgColl_l_mixing[ipISO] =
false;
117 fprintf(
ioQQQ,
" needs parameter\n" );
126 iso_ctrl.lgContinuumLoweringEnabled[ipISO] =
false;
128 iso_ctrl.lgContinuumLoweringEnabled[ipISO] =
true;
131 else if( p.
nMatch(
"DAMP") )
135 fprintf(
ioQQQ,
" Sorry, the DAMPING option is not implemented for the he-like sequence.\n");
140 hydro.DampOnFac = 0.;
143 else if( p.
nMatch(
"DIEL") )
147 fprintf(
ioQQQ,
" Sorry, but dielectronic recombination onto the h-like sequence is not possible.\n");
154 iso_ctrl.lgDielRecom[ipISO] =
false;
160 else if( p.
nMatch(
"LEVE") )
177 iso_ctrl.lgLTE_levels[ipISO] =
true;
179 else if( p.
nMatch(
"PRIN") )
182 iso_ctrl.lgPrintNumberOfLevels =
true;
192 fprintf(
ioQQQ,
" Not possible to set nhlvl to >NHYDRO_MAX_LEVEL-2= %i\n",
194 fprintf(
ioQQQ,
" change NHYDRO_MAX_LEVEL\n");
200 ( 2. /
POW3((
double)numLevels) <
rfield.emm ) )
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 )
240 iso_sp[ipISO][nelem].nCollapsed_max =
241 MIN2(
iso_sp[ipISO][nelem].nCollapsed_max , LevelsCollapsed );
242 iso_sp[ipISO][nelem].n_HighestResolved_max =
243 MIN2(
iso_sp[ipISO][nelem].n_HighestResolved_max , LevelsResolved );
249 iso_sp[ipISO][nelem].nCollapsed_max = LevelsCollapsed;
250 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 )
269 iso_sp[ipISO][nelem].nCollapsed_max = numLevels;
275 iso_sp[ipISO][nelem].nCollapsed_max = numLevels;
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 )
295 iso_sp[ipISO][nelem].n_HighestResolved_max = numLevels;
301 iso_sp[ipISO][nelem].n_HighestResolved_max = numLevels;
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");
318 iso_ctrl.lgRandErrGen[ipISO] =
true;
325 iso_ctrl.modelRank[ipISO] = abs((
int)time(NULL));
333 iso_ctrl.lgPessimisticErrors =
true;
335 iso_ctrl.lgPessimisticErrors =
false;
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");
370 iso_ctrl.lgCS_Vriens[ipISO] =
false;
380 else if( p.
nMatch(
" NEW") )
392 else if( p.
nMatch(
" OFF") )
399 fprintf(
ioQQQ,
" needs parameter\n" );
405 else if( p.
nMatch(
"LYMA") )
413 hydro.lgLymanPumping =
false;
415 else if( p.
nMatch(
"SCALE") )
420 hydro.xLymanPumpingScaleFactor =
425 if(
hydro.xLymanPumpingScaleFactor <= 0. ||
428 hydro.xLymanPumpingScaleFactor =
436 strcpy(
optimize.chVarFmt[
optimize.nparm],
"ATOM H-LIKE LYMAN PUMPING SCALE %f LOG" );
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") &&
482 iso_ctrl.lgNoRecombInterp[ipISO] =
true;
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");
519 iso_ctrl.ipLyaRedist[ipISO] = ipRedis;
522 else if( p.
nMatch(
"RESO") )
524 iso_ctrl.ipResoRedist[ipISO] = ipRedis;
527 else if( p.
nMatch(
"SUBO") )
529 iso_ctrl.ipSubRedist[ipISO] = ipRedis;
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" );