32 fprintf(
ioQQQ,
" PrtMacros:\n FLT_IS_DBL\t");
34 fprintf(
ioQQQ,
"defined.\n");
37 fprintf(
ioQQQ ,
"\n DMALLOC\t");
39 fprintf(
ioQQQ,
"defined");
42 fprintf(
ioQQQ ,
"\n SYS_CONFIG\t");
44 fprintf(
ioQQQ,
"defined");
47 fprintf(
ioQQQ ,
"\n MPI_GRID_RUN\t");
49 fprintf(
ioQQQ,
"defined");
52 fprintf(
ioQQQ ,
"\n USE_GPROF\t");
54 fprintf(
ioQQQ,
"defined");
57 fprintf(
ioQQQ ,
"\n HAVE_FUNC\t");
59 fprintf(
ioQQQ,
"defined");
62 fprintf(
ioQQQ ,
"\n _MSC_VER\t");
64 fprintf(
ioQQQ,
"defined");
67 fprintf(
ioQQQ ,
"\n __INTEL_COMPILER\t");
68 # ifdef __INTEL_COMPILER
69 fprintf(
ioQQQ,
"defined");
72 fprintf(
ioQQQ ,
"\n OLD_ASSERT\t");
74 fprintf(
ioQQQ,
"defined");
77 fprintf(
ioQQQ ,
"\n HAVE_POWI\t");
79 fprintf(
ioQQQ,
"defined");
82 fprintf(
ioQQQ ,
"\n HAVE_POW_DOUBLE_INT\t");
83 # ifdef HAVE_POW_DOUBLE_INT
84 fprintf(
ioQQQ,
"defined");
87 fprintf(
ioQQQ ,
"\n HAVE_POW_DOUBLE_LONG\t");
88 # ifdef HAVE_POW_DOUBLE_LONG
89 fprintf(
ioQQQ,
"defined");
92 fprintf(
ioQQQ ,
"\n HAVE_POW_FLOAT_INT\t");
93 # ifdef HAVE_POW_FLOAT_INT
94 fprintf(
ioQQQ,
"defined");
97 fprintf(
ioQQQ ,
"\n HAVE_POW_FLOAT_LONG\t");
98 # ifdef HAVE_POW_FLOAT_LONG
99 fprintf(
ioQQQ,
"defined");
102 fprintf(
ioQQQ ,
"\n HAVE_POW_FLOAT_DOUBLE\t");
103 # ifdef HAVE_POW_FLOAT_DOUBLE
104 fprintf(
ioQQQ,
"defined");
107 fprintf(
ioQQQ ,
"\n HAVE_POW_DOUBLE_FLOAT\t");
108 # ifdef HAVE_POW_DOUBLE_FLOAT
109 fprintf(
ioQQQ,
"defined");
112 fprintf(
ioQQQ ,
"\n");
137 else if( p.
nMatch(
"ARRA") )
145 fprintf(
ioQQQ,
"An element name must appear on this PRINT ARRAYS ONLY xx command.\n");
161 else if( p.
nMatch(
"CITA") )
173 else if( p.
nMatch(
" OFF") )
184 else if( p.
nMatch(
"DEPA") )
199 nelem =
MAX2( nelem, ipISO );
205 else if( p.
nMatch(
"CONS") )
211 else if( p.
nMatch(
"ERRO") )
217 else if( p.
nMatch(
"HEAT") )
223 else if( p.
nMatch(
"PATH") )
230 else if( p.
nMatch(
"POPU"))
244 nelem =
MAX2(0,nelem);
252 fprintf(
ioQQQ,
"This iso-sequence (%s) and element (%s) are impossible.\n",
263 else if( p.
nMatch(
"LAST") )
269 else if( p.
nMatch(
"LINE") )
279 else if( p.
nMatch(
"CELL") )
286 p.
NoNumb(
"cell for line print" );
290 fprintf(
ioQQQ ,
"The cell number on the PRINT LINE CELL command must be positive.\n");
295 else if( p.
nMatch(
"COLL") )
311 else if( p.
nMatch(
"COLU") )
339 " There faintest line to print must be on this line, sorry.\n" );
345 if( a <= 0. || p.
nMatch(
" LOG") )
368 else if( p.
nMatch(
"HEAT") )
374 else if( p.
nMatch(
"INWA") )
398 fprintf(
ioQQQ,
" There must be a number for the FAINT option. They are HEAD and ZONE. Sorry.\n" );
404 else if( p.
nMatch(
"PUMP") )
410 else if( p.
nMatch(
"SORT") )
433 fprintf(
ioQQQ,
" There must be two numbers for the RANGE option, the lower and upper wavelength. Sorry.\n" );
439 fprintf(
ioQQQ,
" The lower and upper wavelength must be positive and in the correct order. Sorry.\n" );
449 else if( p.
nMatch(
"INTE") )
458 fprintf(
ioQQQ,
"I can sort by wavelength or intensity - one must be specified.\nSorry.\n" );
463 else if( p.
nMatch(
" SUM") )
486 else if( p.
nMatch(
"CUMU") )
494 fprintf(
ioQQQ,
"One of the keys should have appeared. \nPlease consult Hazy.\nSorry.\n" );
500 else if( p.
nMatch(
"MASE") )
505 else if( p.
nMatch(
"ONLY") )
510 else if( p.
nMatch(
"HEAD") )
515 fprintf(
ioQQQ,
" There must be a keyword for the ONLY option. They are HEAD and ZONE. Sorry.\n" );
520 else if( p.nMatch(
"STAR") )
529 " The zone on which the print is to start MUST be entered on this line. Sorry.\n" );
535 else if( p.nMatch(
"CONT") )
537 if( p.nMatch(
"BLOC") )
540 fprintf(
ioQQQ ,
" PROBLEM The PRINT CONTINUUM BLOCK command has been removed. Ignored for now.\n");
542 else if( p.nMatch(
"INDI" ))
564 fprintf(
ioQQQ,
" PROBLEM PRINT CONTINUUM command is now the default, and the command has been removed.\n" );
568 else if( p.nMatch(
"COOL") )
580 else if( p.nMatch(
"QUIE") || (p.nMatch(
" OFF") &&
581 !p.nMatch(
"FAIN" )) )
588 else if( p.nMatch(
"MACR") )
594 else if( p.nMatch(
" ON ") )
607 else if (p.nMatch(
"RECOMB"))
613 else if( p.nMatch(
"SHOR") )
621 else if( p.nMatch(
"VERS") )
624 fprintf(
ioQQQ,
"\nThis is Cloudy %s\n%s\n\n" ,
629 else if( p.nMatch(
"VOIGT") )
635 fprintf(
ioQQQ,
" The damping constant must appear on the print voigt command. Sorry.\n" );
639 const long NVOIGT=100;
640 realnum xprofile[NVOIGT], profileVoigtH[NVOIGT];
641 for(
long i=0; i<NVOIGT; ++i )
644 VoigtH( damp, xprofile, profileVoigtH, NVOIGT );
646 fprintf(
ioQQQ,
"\n x VoigtH\n");
647 for(
long int i=0; i<NVOIGT; ++i )
649 fprintf(
ioQQQ,
"%.4e %.4e\n", xprofile[i], profileVoigtH[i] );
653 else if( p.nMatch(
"ZONE") || p.nMatch(
"EVER") )
657 num1 = (
long int)p.FFmtRead();
660 fprintf(
ioQQQ,
" The number of zones to print MUST be entered on this line. Sorry.\n" );
679 fprintf(
ioQQQ,
" There MUST be a keyword on the following line. Sorry.\n" );
680 fprintf(
ioQQQ,
" The PRINT FAINT command is now the PRINT LINE FAINT command.\n" );
693 fprintf(
ioQQQ,
"\n\nPhysical constants used by Cloudy, taken from physconst.h\n");
695 fprintf(
ioQQQ,
"EE\t%.15g\n",
EE);
697 fprintf(
ioQQQ,
"PI\t%.15g\n",
PI);
711 fprintf(
ioQQQ,
"AU\t%.15g\n",
AU);
755 fprintf(
ioQQQ,
"Some other interesting sizes:\n");
756 fprintf(
ioQQQ,
"bool\t%lu\n",(
unsigned long)
sizeof(
bool));
757 fprintf(
ioQQQ,
"char\t%lu\n",(
unsigned long)
sizeof(
char));
758 fprintf(
ioQQQ,
"int\t%lu\n",(
unsigned long)
sizeof(
int));
759 fprintf(
ioQQQ,
"long int\t%lu\n",(
unsigned long)
sizeof(
long int));
760 fprintf(
ioQQQ,
"unsigned int\t%lu\n",(
unsigned long)
sizeof(
unsigned int));
762 fprintf(
ioQQQ,
"realnum\t%lu\n",(
unsigned long)
sizeof(
realnum));
763 fprintf(
ioQQQ,
"double\t%lu\n",(
unsigned long)
sizeof(
double));
764 fprintf(
ioQQQ,
"double*\t%lu\n",(
unsigned long)
sizeof(
double*));
767 fprintf(
ioQQQ,
"Some constants from float.h.\n");
769 fprintf(
ioQQQ,
"DBL_DIG \t%i\n", DBL_DIG);
770 fprintf(
ioQQQ,
"DBL_EPSILON \t%.15g\n",DBL_EPSILON);
771 fprintf(
ioQQQ,
"DBL_MANT_DIG\t%i\n",DBL_MANT_DIG);
772 fprintf(
ioQQQ,
"DBL_MAX\t%.15g\n", DBL_MAX);
773 fprintf(
ioQQQ,
"DBL_MAX_10_EXP\t%i\n", DBL_MAX_10_EXP);
774 fprintf(
ioQQQ,
"DBL_MAX_EXP\t%i\n", DBL_MAX_EXP);
775 fprintf(
ioQQQ,
"DBL_MIN\t%.15g\n", DBL_MIN);
777 fprintf(
ioQQQ,
"FLT_DIG\t%i\n", FLT_DIG);
778 fprintf(
ioQQQ,
"FLT_EPSILON\t%.15g\n", FLT_EPSILON);
779 fprintf(
ioQQQ,
"FLT_MANT_DIG\t%i\n", FLT_MANT_DIG);
780 fprintf(
ioQQQ,
"FLT_MAX\t%.15g\n", FLT_MAX);
781 fprintf(
ioQQQ,
"FLT_MAX_10_EXP\t%i\n", FLT_MAX_10_EXP);
782 fprintf(
ioQQQ,
"FLT_MAX_EXP\t%i\n", FLT_MAX_EXP);
783 fprintf(
ioQQQ,
"FLT_MIN\t%.15g\n", FLT_MIN);
790 fprintf(
ioQQQ,
"\nThis machine has %ld threads.\n",
cpu.
i().
nCPU() );
bool nMatch(const char *chKey) const
realnum lgPrtContIndices_hi_E
const double TWO_PHOT_CONST
bool lgPrintLineCumulative
const double OPTDEP2EXTIN
const double ELECTRIC_CONST
bool lgRecom_Badnell_print
void ParsePrint(Parser &p)
const double FINE_STRUCTURE
static t_version & Inst()
t_elementnames elementnames
t_iso_sp iso_sp[NISO][LIMELM]
const double STEFAN_BOLTZ
const double TRANS_PROB_CONST
void printDataPath() const
bool lgSurfaceBrightness_SR
const double HION_LTE_POP
NORETURN void NoNumb(const char *chDesc) const
long int GetElem(void) const
diatomics h2("h2", 4100.,&hmi.H2_total, Yan_H2_CS)
const double SOLAR_LUMINOSITY
STATIC void prt_constants(void)
void ParsePrtLineSum(Parser &p)
const double BOHR_RADIUS_CM
#define DEBUG_ENTRY(funcname)
const double ELECTRON_MASS
const double ELEM_CHARGE_ESU
realnum lgPrtContIndices_lo_E
char chElementName[LIMELM][CHARS_ELEMENT_NAME]
const double ATOMIC_MASS_UNIT
void VoigtH(realnum a, const realnum v[], realnum y[], int n)
bool lgSortLineWavelength
STATIC void PrtMacros(void)