120 double VolComputed , VolExpected , ConComputed , ConExpected;
147 " !This is beta test version %ld and is intended for testing only.",
153 for (vector<module*>::iterator mi = mods.begin(); mi != mods.end(); ++mi)
162 sprintf(
warnings.
chRgcln[0],
" W-Calculation stopped because %s Iteration%3ld of %ld",
164 sprintf( chLine,
" W-Calculation stopped because %s",
167 sprintf( chLine,
" W-This was not intended." );
177 " Calculation stopped because %s Iteration %ld of %ld, not converged due to %s",
186 " Calculation stopped because %s Iteration %ld of %ld",
197 " W-Calculation stopped because default number of zones reached. Was this intended???" );
200 " W-Default limit can be increased while retaining this check with the SET NEND command." );
211 " W-Calculation stopped zone thickness became too thin. This was not intended." );
214 " W-The most likely reason was an uncontrolled oscillation." );
222 " W-This happened because the globule scale became very small relative to the depth." );
225 " W-This problem is described in Hazy." );
245 else if( rel >= 0.1 && rel < 3. )
264 sprintf( chLine,
" C-The assumed electron density was incorrect for the last zone." );
266 sprintf( chLine,
" C-Did a temperature discontinuity occur??" );
271 sprintf( chLine,
" W-The assumed electron density was incorrect during the calculation. This is bad." );
279 sprintf( chLine,
" W-The calculation aborted. Something REALLY went wrong!" );
286 sprintf( chLine,
" !The thermal map had changes in slope - check map output." );
294 sprintf( chLine,
" !Fudge factors were used or were checked. Why?" );
302 sprintf( chLine,
" C-Density greater than 10**15, heavy elements are very uncertain." );
307 sprintf( chLine,
" C-Density greater than 10**13" );
313 if(
cdLine(
"Pump",4861.36f,&relfl,&absint)<=0 )
315 fprintf(
ioQQQ,
" PROBLEM Did not find Pump H-beta, set to unity\n" );
325 fprintf(
ioQQQ,
" NOTE Did not find H 1 H-beta - set intensity to unity, "
326 "will not check on importance of H 1 pumping.\n" );
338 sprintf( chLine,
" !Continuum fluorescent production of H-beta was very important." );
341 else if(flur > 0.01 )
343 sprintf( chLine,
" Continuum fluorescent production of H-beta was significant." );
352 sprintf( chLine ,
" Iteration not converged because %s.",
361 sprintf( chLine,
" C-Iterate to convergence did not converge in %li iterations.",
367 sprintf( chLine,
" C-Iterate to convergence requested but sim stopped due to too-low temperature.");
369 sprintf( chLine,
" C-This may have convergence problems due to outer radius changing.");
371 sprintf( chLine,
" C-Consider setting a different stop criterion.");
379 sprintf( chLine,
" C-Wind velocity below sonic point; solution is not valid." );
387 if( fabs(1.-rel)> 0.02 )
389 sprintf( chLine,
" C-Wind mass flux error is %g%%",fabs(1.-rel)*100. );
407 fprintf(
ioQQQ,
"\n\n Enable per zone energy conservation check by setting "
408 "CHECK_ENERGY_EVERY_ZONE=true in cloudy.cpp, recompile, then rerun.\n");
416 " !Magnetic field & cosmic rays both present. Their interactions are not treated." );
424 " !Background cosmic rays are not included - is this physical? It affects the chemistry." );
432 " C-Model is thick to cosmic rays, which are on." );
440 " !Ionization rate fell below background cosmic ray ionization rate. Should this be added too?" );
443 " ! Use the COSMIC RAY BACKGROUND command." );
450 sprintf( chLine,
" !Test code is in place." );
458 " !Compton cooling rate underflows to zero. Is this important?" );
466 " !Some input lines contained underscores, these were changed to spaces." );
474 " !Some input lines contained [ or ], these were changed to spaces." );
482 " !There is no hydrogen-ionizing radiation. Was this intended?" );
490 " Derivative of net cooling negative and so possibly thermally unstable in%4ld zones.",
500 " !A large fraction of the zones were possibly thermally unstable,%4ld out of%4ld",
509 " !Negative cooling reached %6.1f%% of the local heating, due to %4.4s %.1f",
516 " Negative cooling reached %6.1f%% of the local heating, due to %4.4s %.2f",
525 " !Advection heating reached %.2f%% of the local heating.",
532 " Advection heating reached %.2f%% of the local heating.",
541 " !Advection cooling reached %.2f%% of the local cooling.",
548 " Advection cooling reached %.2f%% of the local heating.",
560 " W-Time dependent ionization front cannot now handle strong-R cases - the ionization parameter is too large." );
566 " C-Time dependent ionization front cannot now handle strong-R cases - the ionization parameter is too large." );
575 " !Thermal collisional ionization of H reached %.2f%% of the local ionization rate.",
582 " Thermal collisional ionization of H reached %.2f%% of the local ionization rate.",
591 " Te-ne bounds of Case B lookup table exceeded, H I Case B line intensities set to zero." );
597 " Te-ne bounds of Case B lookup table exceeded, He II Case B line intensities set to zero." );
604 " !The high electron density makes the Nussbaumer/Storey CNO recombination predictions unreliable." );
612 " !Suprathermal collisional ionization of H reached %.2f%% of the local H ionization rate.",
619 " Suprathermal collisional ionization of H reached %.2f%% of the local H ionization rate.",
628 " !H2 vib deexec heating reached %.2f%% of the local heating.",
635 " H2 vib deexec heating reached %.2f%% of the local heating.",
644 " !H2 deexec cooling reached %.2f%% of the local heating.",
651 " H2 deexec cooling reached %.2f%% of the local heating.",
660 " !Charge transfer H => H+ reached %.1f%% of the local H ionization rate.",
667 " Charge transfer H => H+ reached %.2f%% of the local H ionization rate.",
676 " !Charge transfer heating reached %.2f%% of the local heating.",
683 " Charge transfer heating reached %.2f%% of the local heating.",
691 " !Charge transfer cooling reached %.2f%% of the local heating.",
698 " Charge transfer cooling reached %.2f%% of the local heating.",
707 " !Photoionization of upper level of Mg II 2798 reached %.1f%% of the total Mg+ photo rate.",
714 " Photoionization of upper level of Mg II 2798 reached %.1f%% of the total Mg+ photo rate.",
723 " !Photoionization of upper levels of [O I] reached %.1f%% of the total O destruction rate.",
730 " Photoionization of upper levels of [O I] reached %.1f%% of the total O destruction rate.",
739 " !Photoionization of upper levels of [O III] reached %.1f%% of the total O++ photo rate.",
746 " Photoionization of upper levels of [O III] reached %.1f%% of the total O++ photo rate.",
755 " !Destruction of He 2TriS reached %.1f%% of the total He0 dest rate"
756 " at zone %li, %.1f%% of that was photoionization.",
765 " Destruction of He 2TriS reached %.1f%% of the total He0 dest rate"
766 " at zone %li, %.1f%% of that was photoionization.",
779 " The density is too low to l-mix the lowest %s I collapsed level. "
780 " More resolved levels are needed for accurate line ratios.",
789 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
793 sprintf( chLine,
" !Continuum was lowered into model %s-like %s due to high density. Highest n is %li",
801 sprintf( chLine,
" !Continuum was lowered into model %s-like %s due to high density at SOME point but NOT at the last zone.",
809 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
811 if(
iso_sp[ipISO][nelem].lgPopsRescaled )
814 sprintf( chLine,
" C-Populations were rescaled for %s-like %s due to \"element ionization\" command.",
826 " C-Continuum not defined in extreme infrared - Compton scat, grain heating, not treated properly?" );
833 " C-Continuum not defined at photon energies which ionize excited states of H, important for H- and ff heating." );
840 " C-Continuum not defined at X-Ray energies - Compton scattering and Auger ionization wrong?" );
847 " C-Continuum not defined at gamma-ray energies - pair production and Compton scattering OK?" );
853 sprintf( chLine,
" C-Continuum zero at some energies." );
859 sprintf( chLine ,
" C-CoStarInterpolate interpolated between non-adjoining tracks, this may not be valid." );
866 " !The continuum occupation number at 1 Ryd is greater than unity." );
874 " C-The thickness of the first zone was set larger than optimal by a SET DR command." );
880 " C-Consider using the STOP THICKNESS command instead." );
888 if(
cdLine(
"Blnd",4363,&t4363,&absint)<=0 )
890 fprintf(
ioQQQ,
" PrtComment could not find total O III 4363 with cdLine.\n" );
897 fprintf(
ioQQQ,
" PrtComment could not find collisional O III 4363 with cdLine, assuming intensity of zero.\n" );
908 ratio = (t4363 - c4363)/t4363;
912 " !Non-collisional excitation of [O III] 4363 reached %.2f%% of the total.",
916 else if( ratio > 0.001 )
919 " Non-collisional excitation of [O III] 4363 reached %.2f%% of the total.",
931 " !The largest plasma frequency was %.2e Ryd = %.2e micron The continuum is set to 0 below this.",
943 " !The largest continuum occupation number was %.3e at %.3e Ryd.",
952 " The largest continuum occupation number was %.3e at %.3e Ryd.",
964 " The continuum occupation number fell below 1 at %.3e microns.",
971 " The continuum occupation number fell below 1 at %.3e Angstroms.",
978 " The continuum occupation number fell below 1 at %.3e Ryd.",
987 " !The largest continuum brightness temperature was %.3eK at %.3e Ryd.",
998 " The continuum brightness temperature fell below 10000K at %.3e microns.",
1005 " The continuum brightness temperature fell below 10000K at %.3e Angstroms.",
1012 " The continuum brightness temperature fell below 10000K at %.3e Ryd.",
1022 " !Both constant pressure and turbulence makes no physical sense?" );
1030 " !Both constant pressure and a filling factor makes no physical sense?" );
1038 " !Grains are present, but the gas phase abundances were left at the solar default. This is not physical." );
1046 " !Grains are not present, but the gas phase abundances were depleted. This is not physical." );
1052 long nBin=0L, nFail=0L;
1053 for(
size_t nd=0; nd <
gv.
bin.size(); nd++ )
1055 if(
gv.
bin[nd]->QHeatFailures > 0L )
1058 nFail +=
gv.
bin[nd]->QHeatFailures;
1064 " !The grain quantum heating treatment failed to converge %ld time(s) in %ld bin(s).", nFail, nBin );
1075 bool lgPAHsPresent_and_constant =
false;
1076 for(
size_t nd=0; nd <
gv.
bin.size(); nd++ )
1078 lgPAHsPresent_and_constant = lgPAHsPresent_and_constant ||
1080 (
gv.
bin[nd]->lgPAHsInIonizedRegion );
1082 if( lgPAHsPresent_and_constant )
1085 " C-PAH's were present in the ionized region, this has never been observed in H II regions." );
1095 " C-The continuum energy density temperature (%g K)"
1096 " is greater than the gas kinetic temperature (%g K).",
1099 sprintf( chLine,
" C-This is unphysical." );
1107 " Grains were not present but might survive in this environment (energy density temperature was %.2eK)",
1120 sprintf( chLine,
" H-eps and Ca H overlap." );
1127 sprintf( chLine,
" !A physical process has been disabled." );
1137 " !Photoionization of upper level of [O III] 5007 reached %.2e%% of the radiative lifetime.",
1144 " Photoionization of upper level of [O III] 5007 reached %.2e%% of the radiative lifetime.",
1151 " !Photoionization of upper level of [O III] 4363 reached %.2e%% of the radiative lifetime.",
1158 " Photoionization of upper level of [O III] 4363 reached %.2e%% of the radiative lifetime.",
1172 " !Heating - cooling mismatch =%5.1f%%. Caused by constant temperature assumption. ",
1180 if( error > 0.05 && error < 0.2 )
1182 sprintf( chLine,
" C-Heating - cooling mismatch =%.1f%%. What\'s wrong?",
1186 else if( error >= 0.2 )
1188 sprintf( chLine,
" W-Heating - cooling mismatch =%.2e%%. What\'s wrong????",
1198 " Photoionization of Ca+ 2D level by Ly-alpha reached %6.1f%% of the total rate out.",
1209 " !The excitation temp of Lya exceeded the electron temp, largest value was %.2eK (gas temp there was %.2eK, zone%4ld)",
1219 if(
cdLine(
"Line",0,&SumNeg,&absint)<=0 )
1227 if(
cdLine(
"TotH",0,&GetHeat,&absint)<=0 )
1240 " !Line absorption heating reached %.2f%% of the global heating.",
1244 else if( SumNeg > 0.01 )
1247 " Line absorption heating reached %.2f%% of the global heating.",
1256 " !NO BUFFERING command was entered - this increases exec time by LARGE amounts.");
1267 " !G-bar cooling lines reached %.2f%% of the local cooling. Line=%.10s",
1277 " G-bar cooling lines reached %.2f%% of the local cooling. Line=%.10s",
1286 " !Hyperfine structure line cooling reached %.2f%% of the local cooling.",
1294 " Hyperfine structure line cooling reached %.2f%% of the local cooling.",
1307 " !Line absorption heating reached %.2f%% of the local heating - largest by level%2ld line %.10s",
1315 " Line absorption heating reached %.2f%% of the local heating.",
1323 for( nelem=ipISO; nelem<
LIMELM; ++nelem )
1331 for( ipHi=1; ipHi < nmax - 1; ++ipHi )
1333 for( ipLo=0; ipLo < ipHi; ++ipLo )
1339 if(
iso_sp[ipISO][nelem].trans(ipHi,ipLo).Emis().TauIn() < -0.1 )
1342 " !Some iso-structure lines mased: %s-like %s, line %li-%li had optical depth %.2e",
1366 " !Some infrared fine structure lines are optically thick: largest tau was %.2e",
1371 if( tauneg < -0.01 )
1374 " !Some fine structure lines mased: line %s had optical depth %.2e",
1375 chLbl.c_str(), tauneg );
1387 sprintf( chLine,
" C-I must iterate when SPHERE STATIC is set." );
1395 sprintf( chLine,
" C-I must iterate when save continuum output is done." );
1406 sprintf( chLine,
" !Rate of induced H 2-photon emission reached %.2e s^-1",
1412 sprintf( chLine,
" Rate of induced H 2-photon emission reached %.2e s^-1",
1422 " Induced recombination was %5.1f%% of the total for H level%3ld",
1430 " Stimulated emission was%6.1f%% of the total for H transition%3ld -%3ld",
1437 if(
cdLine(
"Fe 2",1215.68,&fedest,&absint)<=0 )
1445 if(
cdLine(
"H 1",1215.68f,&relhm,&absint)<=0 )
1454 ratio = fedest/(fedest + relhm);
1457 sprintf( chLine,
" !Fe II destruction of Ly-a removed %.1f%% of the line.",
1461 else if( ratio > 0.01 )
1463 sprintf( chLine,
" Fe II destruction of Ly-a removed %.1f%% of the line.",
1469 if(
cdLine(
"H-CT",6562.85,&relhm,&absint)<=0 )
1471 fprintf(
ioQQQ,
" Comment did not find H-CT H-alpha\n" );
1478 if( relhm/HBeta > 0.01 )
1481 " !Mutual neutralization production of H-alpha was significant." );
1490 " The population of H n=2 reached %.2e relative to the ground state.",
1498 for( nelem=ipISO; nelem <
LIMELM; nelem++ )
1500 if(
iso_sp[ipISO][nelem].CaseBCheck > 1.5 )
1503 " Ratio of computed diffuse emission to case B reached %g for iso %li element %li",
1504 iso_sp[ipISO][nelem].CaseBCheck , ipISO , nelem+1 );
1518 sprintf( chLine,
" W-Electrons were relativistic; High TE=%.2e",
1524 sprintf( chLine,
" C-Electrons were mildly relativistic; High TE=%.2e",
1540 sprintf( chLine,
" !Timescale-photoerosion of Fe=%.2e yr",
1546 sprintf( chLine,
" Timescale-photoerosion of Fe=%.2e yr",
1556 sprintf( chLine,
" Compton heating was %5.1f%% of the total.",
1565 " !Induced Compton heating was %.2e of the total Compton heating.",
1576 " C-Compton cooling is significant and the equilibrium timescale (%.2e s) is longer than the Hubble time.",
1583 " Compton cooling equilibrium timescale (%.2e s) is longer than Hubble time.",
1592 " C-Thermal equilibrium timescale, %.2e s, longer than Hubble time; this cloud is not time-steady.",
1607 " C-Cloud thicker than smallest Jeans length=%8.2ecm; stability problems? (smallest Jeans mass=%8.2eMo)",
1614 " Cloud thicker than smallest Jeans length=%8.2ecm; stability problems? (smallest Jeans mass=%8.2eMo)",
1621 for(
size_t nd=0; nd <
gv.
bin.size(); nd++ )
1623 if(
gv.
bin[nd]->TeGrainMax >
gv.
bin[nd]->Tsublimat )
1626 " W-Maximum temperature of grain%-12.12s was %.2eK, above its sublimation temperature, %.2eK.",
1627 gv.
bin[nd]->chDstLab,
gv.
bin[nd]->TeGrainMax,
1628 gv.
bin[nd]->Tsublimat );
1631 else if(
gv.
bin[nd]->TeGrainMax >
gv.
bin[nd]->Tsublimat* 0.9 )
1634 " C-Maximum temperature of grain%-12.12s was %.2eK, near its sublimation temperature, %.2eK.",
1635 gv.
bin[nd]->chDstLab,
gv.
bin[nd]->TeGrainMax,
1636 gv.
bin[nd]->Tsublimat );
1643 sprintf( chLine,
" !Grain drag force <0." );
1651 " !Grains donated %5.1f%% of the total electrons in some regions.",
1658 " Grains donated %5.1f%% of the total electrons in some regions.",
1667 " !Grains contained %5.1f%% of the total electrons in some regions.",
1674 " Grains contained %5.1f%% of the total electrons in some regions.",
1683 " !Local grain-gas photoelectric heating rate reached %5.1f%% of the total.",
1690 " Local grain-gas photoelectric heating rate reached %5.1f%% of the total.",
1698 " Global grain photoelectric heating of gas was%5.1f%% of the total.",
1704 " !Grain photoelectric heating is VERY important." );
1713 " Local grain-gas cooling of gas rate reached %5.1f%% of the total.",
1724 " !The large H2 molecule - main chemistry network renormalization factor reached %.2f.",
1731 " The large H2 molecule - main chemistry network renormalization factor reached %.2f.",
1741 " !The large H2 molecule - main chemistry network renormalization factor reached %.2f.",
1748 " The large H2 molecule - main chemistry network renormalization factor reached %.2f.",
1758 " !The local H2+ photodissociation heating rate reached %5.1f%% of the total heating.",
1766 " The local H2+ photodissociation heating rate reached %.1f%% of the total heating.",
1775 " !The local H2 photodissociation heating rate reached %.1f%% of the total heating.",
1782 " The local H2 photodissociation heating rate reached %.1f%% of the total heating.",
1791 " !The local H2 cooling rate reached %.1f%% of the local cooling.",
1798 " The local H2 cooling rate reached %.1f%% of the local cooling.",
1806 " Global H2 photodissociation heating of gas was %.1f%% of the total heating.",
1811 sprintf( chLine,
" H2 photodissociation heating is VERY important." );
1820 " !Local CO photodissociation heating rate reached %.1f%% of the total.",
1827 " Local CO photodissociation heating rate reached %.1f%% of the total.",
1835 " Global CO photodissociation heating of gas was %.1f%% of the total.",
1840 sprintf( chLine,
" CO photodissociation heating is VERY important." );
1848 " Energy density of radiation field was greater than the Compton temperature. Is this physical?" );
1855 sprintf( chLine,
" Induced recombination cooling was %.1f%% of the total.",
1863 sprintf( chLine,
" !Free-free heating was %.1f%% of the total.",
1869 sprintf( chLine,
" Free-free heating was %.1f%% of the total.",
1877 sprintf( chLine,
" H- absorption heating was %.1f%% of the total.",
1885 sprintf( chLine,
" Water destruction rate zero." );
1895 for( nelem=0; nelem<
LIMELM; ++nelem )
1923 " !Some hydrogenic lines mased, species was %2s%2ld, smallest tau was %.2e, transition %li-%li",
1925 isav+1,small, imas , j );
1932 sprintf( chLine,
" !Some opacities were negative - the SET NEGOPC command will save which ones." );
1940 for( nelem=0; nelem<
LIMELM; ++nelem )
1959 sprintf( chLine,
" !Some hydrogenic (%2s%2ld) continua optical depths were negative; smallest=%.2e level=%3ld",
1984 sprintf( chLine,
" !Some continuous optical depths <0. The lowest freq was %.3e Ryd, and a total of%4ld",
1987 sprintf( chLine,
" !The smallest optical depth was %.2e",
1995 sprintf( chLine,
" The Balmer continuum optical depth was %.2e.",
2003 sprintf( chLine,
" The Lyman continuum stimulated emission correction to optical depths reached %.2e.",
2009 sprintf( chLine,
" The Balmer continuum stimulated emission correction to optical depths reached %.2e.",
2018 " The Paschen continuum optical depth was %.2e.",
2027 " The continuum optical depth at the lowest energy considered (%.3e Ryd) was %.3e.",
2037 " The optical depth to Rayleigh scattering at 1300A is %.2e",
2045 " !The optical depth to the H2+ molecular ion is %.2e",
2052 " The optical depth to the H2+ molecular ion is %.2e",
2061 " !Optical depth to negative hydrogen ion is %.2e",
2068 " Optical depth to negative hydrogen ion is %.2e",
2077 " !Incident radiation field energy density is less than 2.7K. Add background with CMB command." );
2085 " !The CMB was not included. This is added with the CMB command." );
2093 " !The intensity of the incident radiation field is less than 10 times the Habing diffuse ISM field. Is this OK?" );
2096 " ! Consider adding diffuse ISM emission with TABLE ISM command." );
2107 sprintf( chLine,
" !The C/O abundance ratio, %.1f, is greater than unity. The chemistry will be carbon dominated.",
2113 bool lgLots_of_moles =
false;
2114 bool lgLotsSolids =
false;
2122 sprintf( chLine,
" !The fraction of %s in %s reached %.1f%% at some point in the cloud.",
2127 lgLots_of_moles =
true;
2130 lgLotsSolids =
true;
2134 sprintf( chLine,
" The fraction of %s in %s reached %.2f%% at some point in the cloud.",
2139 lgLots_of_moles =
true;
2142 lgLotsSolids =
true;
2146 sprintf( chLine,
" The fraction of %s in %s reached %.3f%% at some point in the cloud.",
2153 lgLotsSolids =
true;
2159 if( lgLots_of_moles )
2169 " C-Molecules are important, but %s, part of the chemistry network, is turned off.",
2175 for( i=NUM_HEAVY_MOLEC+NUM_ELEMENTS; i<NUM_COMOLE_CALC; ++i )
2181 " C-Molecules are important, but %s, part of the chemistry network, is turned off.",
2194 sprintf( chLine,
" !A significant amount of molecules condensed onto grain surfaces." );
2196 sprintf( chLine,
" !These are the molecular species with \"grn\" above." );
2203 sprintf( chLine,
" !The cloud is optically thick at optical wavelengths, extending to %.3e Ryd =%.3eA",
2209 sprintf( chLine,
" The continuum of the computed structure may be optically thick in the near infrared." );
2216 sprintf( chLine,
" Is an outer radius of %.2e reasonable?",
2224 sprintf( chLine,
" Laser maser optical depths capped in RT_line_one_tauinc." );
2231 sprintf( chLine,
" !Line maser set zone thickness in some zones." );
2240 sprintf( chLine,
" Radiation pressure kept below gas pressure on this iteration." );
2249 " !The ratio of radiation to gas pressure reached %.2e at zone %li. Caused by Lyman alpha.",
2257 " !The ratio of radiation to gas pressure reached %.2e at zone %li. "
2258 "Caused by line number %ld, label %s",
2272 " The ratio of radiation to gas pressure reached %.2e at zone %li. Caused by Lyman alpha.",
2280 " The ratio of radiation to gas pressure reached %.2e at zone %li. "
2281 "Caused by line number %ld, label %s",
2292 sprintf( chLine,
" W-The model is optically thick to electron "
2293 "scattering; tau=%.2e Cloudy is NOT intended for this regime.",
2299 sprintf( chLine,
" C-The model is moderately optically thick to electron scattering; tau=%.1f",
2305 sprintf( chLine,
" !The model has modest optical depth to electron scattering; tau=%.2f",
2311 sprintf( chLine,
" The optical depth to electron scattering is %.3f",
2317 if(
HFLines[0].Emis().TauIn() > 0.5 )
2319 sprintf( chLine,
" !The optical depth in the H I 21 cm line is %.2e",
HFLines[0].Emis().TauIn() );
2328 sprintf( chLine,
" !The level2 lines are disabled. UV pumping of excited levels within ground terms is not treated." );
2333 for( nelem=0; nelem <
LIMELM; nelem++ )
2349 " C-This is the last iteration and %2s%2ld Bal(a) optical depth"
2350 " changed by %.1f%% (was %.2e). Use the ITERATE command to do more iterations.",
2371 " C-This is the last iteration and %2s%2ld Ly(a) optical depth"
2372 " changed by %.1f%% (was %.2e). Use the ITERATE command to do more iterations.",
2386 sprintf( chLine,
" C-R(out)/R(in)=%.2e and SPHERE was not set.",
2401 sprintf( chLine,
" C-The H Lyman continuum is thin, and I assumed"
2402 " that it was thick. Use the ITERATE command to do more iterations." );
2415 " C-The He II continuum is thin and I assumed that it was thick."
2416 " Use the ITERATE command to do more iterations." );
2428 " C-The He I continuum is thin and I assumed that it was thick."
2429 " Use the ITERATE command to do more iterations." );
2441 fprintf(
ioQQQ,
" colden_old is insane in PrtComment.\n" );
2449 if( differ > 0.1 && differ <= 0.3 )
2452 " The H column density changed by %.2e%% between this and previous iteration.",
2457 else if( differ > 0.3 )
2462 " C-The H column density changed by %.2e%% and this is the last iteration. What happened?",
2469 " !The H column density changed by %.2e%% What happened?",
2481 if( differ > 0.1 && differ <= 0.3 )
2484 " The H2 column density changed by %.2e%% between this and previous iteration.",
2489 else if( differ > 0.3 )
2494 " C-The H2 column density changed by %.2e%% and this is the last iteration. What happened?",
2501 " !The H2 column density changed by %.2e%% What happened?",
2517 sprintf( chLine,
" C-This is the last iteration, radiation pressure was significant, and the L-a optical depth changed by %7.2f%% (was %.2e)",
2528 sprintf( chLine,
" C-The Lya optical depth scale was overrun and this is the last iteration - Tspin(21 cm) is not valid." );
2530 sprintf( chLine,
" C-Another iteration is needed for Tspin(21 cm) to be valid. Use the ITERATE command." );
2537 sprintf( chLine,
" Line radiation pressure capped by thermalization length." );
2547 long _o = sprintf( chLine,
" There were %ld minor temperature failures. zones:",
2551 for( i=0; i < nline; i++ )
2553 _o += sprintf( chLine+_o,
" %ld",
conv.
ifailz[i] );
2560 " !There were %ld temperature failures, and some were large. The largest was %.1f%%. What happened?",
2566 long _o = sprintf( chLine ,
" !The zones were" );
2567 for( i=0; i < nline; i++ )
2569 _o += sprintf( chLine+_o,
" %ld",
conv.
ifailz[i] );
2575 sprintf( chLine,
" !I think they may have been caused by the change from hot to nebular gas phase. The physics of this is unclear." );
2584 for( i=1; i <
nzone; i++ )
2587 if( big > big_ion_jump )
2594 if( big_ion_jump > 0.2 )
2604 if( big_ion_jump > 0.4 )
2606 sprintf( chLine,
" C-A temperature discontinuity occurred at zone %ld from %.2eK to %.2eK.",
2615 sprintf( chLine,
" C-This was probably due to a thermal front." );
2619 else if( big_ion_jump > 0.2 )
2621 sprintf( chLine,
" !A temperature discontinuity occurred at zone %ld from %.2eK to %.2eK.",
2630 sprintf( chLine,
" !This was probably due to a thermal front." );
2643 sprintf( chLine,
" W-The local error in the electron density reached %.1f%% at zone %ld",
2649 sprintf( chLine,
" C-The local error in the electron density reached %.1f%% at zone %ld",
2655 sprintf( chLine,
" The local error in the electron density reached %.1f%% at zone %ld",
2664 for( i=1; i < (nzone - 1); i++ )
2673 if( rel < 0. &&
MIN2( bigm , big ) > big_ion_jump )
2676 big_ion_jump =
MIN2( bigm , big );
2680 if( big_ion_jump > 0.1 )
2690 if( big_ion_jump > 0.3 )
2693 " C-A temperature oscillation occurred at zone%4ld by%5.0f%% from %.2e to %.2e to %.2e",
2697 else if( big_ion_jump > 0.1 )
2700 " !A temperature oscillation occurred at zone%4ld by%5.0f%% from %.2e to %.2e to %.2e",
2711 for( i=1; i < (nzone - 1); i++ )
2719 if( big*bigm < 0. &&
2741 sprintf( chLine,
" C-An electron density oscillation occurred at zone%4ld by%5.0f%% from %.2e to %.2e to %.2e",
2748 sprintf( chLine,
" !An electron density oscillation occurred at zone%4ld by%5.0f%% from %.2e to %.2e to %.2e",
2767 i =
cdLine(
"Unit" , 1 , &rate , &absint );
2791 error = fabs(VolComputed - VolExpected)/
SDIV(VolExpected);
2801 if( error > 0.001 && !
lgAbort )
2804 " W-PrtComment insanity - Line unit integration did not verify \n");
2807 " PROBLEM PrtComment insanity - Line unit integration did not verify \n");
2809 " expected, derived vols were %g %g \n",
2810 VolExpected , VolComputed );
2812 " relative difference is %g, ratio is %g.\n",error,VolComputed/VolExpected);
2844 ASSERT( ConExpected > 0. );
2847 error = fabs(ConComputed - ConExpected)/ConExpected;
2862 if( error > 0.001 && !
lgAbort)
2865 " W-PrtComment insanity - Continuum unit integration did not verify \n");
2867 fprintf(
ioQQQ,
" PROBLEM PrtComment insanity - Continuum unit integration did not verify \n");
2868 fprintf(
ioQQQ,
" exact vol= %g, derived vol= %g relative difference is %g \n",
2869 ConExpected , ConComputed ,error);
2876 cdNwcns(&lgAbort_flag,&nw,&nc,&nn,&ns,&i,&j,&dum1,&dum2);
2937 fprintf(
ioQQQ,
"PROBLEM: Ca II, the species defined by nelem = %i and ion = %i could not be found.\n",
ipCALCIUM,2);
2942 static bool lgRunOnce =
true;
2947 if( it->ipLo()+1 == 1 && it->ipHi()+1 == 5)
2955 realnum ca2_3969_TauIn = it->Emis().TauIn();
2957 if( ca2_3969_TauIn > 0. &&
2961 conca = sqrt(6.1e-5*ca2_3969_TauIn);
2962 conalog = log((
double)ca2_3969_TauIn);
2963 conalog = sqrt(
MAX2(1., conalog));
2964 conca =
MAX2(conalog,conca);
2967 conalog = sqrt(
MAX2(1.,conalog));
2969 conhe =
MAX2(conalog, conhe);
2971 *totwid = 10.*conhe + 1.6*conca;
2986 double BigOscillation ,
2998 nzone_oscillation = 0;
3005 for( ion=0; ion<=nelem+1; ++ion)
3007 BigOscillation = 0.;
3008 big_ion_jump = -15.;
3027 if( rel < 0. &&
MIN2( bigm , big ) > BigOscillation )
3029 nzone_oscillation = i;
3030 BigOscillation =
MIN2( bigm , big );
3039 if( rel > big_ion_jump )
3049 if( BigOscillation > 0.2 )
3052 if( nzone_oscillation < 1 )
3054 fprintf(
ioQQQ,
" nzone_oscillation too small bigjump2 check\n" );
3058 if( BigOscillation > 3. )
3061 " W-An ionization oscillation occurred at zone %ld, elem %.2s%2li, by %.0f%% from %.2e to %.2e to %.2e",
3064 BigOscillation*100.,
3071 else if( BigOscillation > 0.7 )
3074 " C-An ionization oscillation occurred at zone %ld, elem %.2s%2li, by %.0f%% from %.2e to %.2e to %.2e",
3077 BigOscillation*100.,
3083 else if( BigOscillation > 0.2 )
3086 " !An ionization oscillation occurred at zone %ld, elem %.2s%2li, by %.0f%% from %.2e to %.2e to %.2e",
3089 BigOscillation*100.,
3099 big_ion_jump =
exp10( big_ion_jump );
3100 if( big_ion_jump > 1.5 && nzone_ion_jump > 0 )
3102 if( big_ion_jump > 10. )
3105 " C-An ionization jump occurred at zone %ld, elem %.2s%2li, by %.0f%% from %.2e to %.2e to %.2e",
3117 " !An ionization jump occurred at zone %ld, elem %.2s%2li, by %.0f%% from %.2e to %.2e to %.2e",
3141 if( rel > big_jump )
3149 big_jump =
exp10( big_jump );
3150 if( big_jump > 1.2 )
3155 " C-The H density jumped at by %.0f%% at zone %ld, from %.2e to %.2e to %.2e",
3166 " !An H density jump occurred at zone %ld, by %.0f%% from %.2e to %.2e to %.2e",
3189 if( rel > big_jump )
3200 big_jump =
exp10( big_jump );
3201 if( big_jump > 1.2 )
3208 " C-The radiation pressure jumped by %.0f%% at zone %ld, from %.2e to %.2e to %.2e",
3219 " !The radiation pressure jumped by %.0f%% at zone %ld, from %.2e to %.2e to %.2e",
3298 " C-The temperature varied by %.1f%% between two zones",
3305 " !The temperature varied by %.1f%% between two zones",
3313 " C-The electron density varied by %.1f%% between two zones",
3320 " !The electron density varied by %.1f%% between two zones",
3328 " C-The H2 density varied by %.1f%% between two zones",
3335 " !The H2 density varied by %.1f%% between two zones",
3343 " C-The CO density varied by %.1f%% between two zones",
3350 " !The CO density varied by %.1f%% between two zones",
3358 " !Isotropic continuum subtraction significantly"
3359 " affects line intensities" );
void bangin(const char *chLine)
t_mole_global mole_global
void cdNotes(FILE *ioOUT)
string chLineLbl(const TransitionProxy &t)
NORETURN void TotalInsanity(void)
char chCoolHeatMax[NCOLNT_LAB_LEN+1]
char chNotConverged[INPUT_LINE_LENGTH]
void cdCautions(FILE *ioOUT)
bool lgTimeDependentStatic
void cdWarnings(FILE *ioPNT)
TransitionList HFLines("HFLines",&AnonStates)
realnum colden_old[NCOLD]
bool lgTemperatureConstant
bool lgHCaseBOK[2][HS_NZ]
molezone * findspecieslocal(const char buf[])
char chRgcln[2][INPUT_LINE_LENGTH]
TransitionList TauLine2("TauLine2",&AnonStates)
double anu(size_t i) const
static t_version & Inst()
t_elementnames elementnames
t_iso_sp iso_sp[NISO][LIMELM]
void warnin(const char *chLine)
bool lgCoStarInterpolationCaution
long int n_HighestResolved_local
bool lgBallistic(void) const
bool lgOpticalDepthonverged
bool lgdBaseSourceExists[LIMELM][LIMELM+1]
const double TEMP_STOP_DEFAULT
vector< two_photon > TwoNu
double frac_he0dest_23S_photo
EmissionList::reference Emis() const
molecule * findspecies(const char buf[])
const TransitionProxy FndLineHt(long int *level)
valarray< class molezone > species
const int INPUT_LINE_LENGTH
void notein(const char *chLine)
double powi(double, long int)
diatomics h2("h2", 4100.,&hmi.H2_total, Yan_H2_CS)
realnum wlAirVac(double wlAir)
double column(const genericState &gs)
char chElementNameShort[LIMELM][CHARS_ELEMENT_NAME_SHORT]
multi_arr< long, 3 > QuantumNumbers2Index
bool lgCritDensLMix[NISO]
TransitionProxy trans(const long ipHi, const long ipLo)
char chElementSym[LIMELM][CHARS_ELEMENT_SYM]
realnum gas_phase[LIMELM]
long int cdLine(const char *chLabel, realnum wavelength, double *relint, double *absint)
vector< vector< long > > ipSpecIon
#define DEBUG_ENTRY(funcname)
char chReasonStop[nCHREASONSTOP]
void cdSurprises(FILE *ioOUT)
void cdNwcns(bool *lgAbort_ret, long int *NumberWarnings, long int *NumberCautions, long int *NumberNotes, long int *NumberSurprises, long int *NumberTempFailures, long int *NumberPresFailures, long int *NumberIonFailures, long int *NumberNeFailures)
int fprintf(const Output &stream, const char *format,...)
void cdReasonGeo(FILE *ioOUT)
sys_float SDIV(sys_float x)
bool lgStatic(void) const
char chElementName[LIMELM][CHARS_ELEMENT_NAME]
t_secondaries secondaries
vector< TransitionList > dBaseTrans
const double DEPTH_OFFSET
long int nCollapsed_local
void caunin(const char *chLine)
realnum * pres_radiation_lines_curr