#include "cddefines.h"
#include "trace.h"
#include "conv.h"
#include "punch.h"
#include "lines.h"
#include "pressure.h"
#include "prt.h"
#include "colden.h"
#include "dense.h"
#include "radius.h"
#include "struc.h"
#include "mole.h"
#include "elementnames.h"
#include "mean.h"
#include "phycon.h"
#include "called.h"
#include "parse.h"
#include "input.h"
#include "taulines.h"
#include "version.h"
#include "thermal.h"
#include "optimize.h"
#include "grid.h"
#include "timesc.h"
#include "cloudy.h"
#include "warnings.h"
#include "lines_service.h"
#include "cddrive.h"
#include "noexec.h"
#include <sys/time.h>
#include <sys/resource.h>
Go to the source code of this file.
Functions | |
int | cdDrive (void) |
void | cdPrtWL (FILE *io, float wl) |
void | cdReasonGeo (FILE *ioOUT) |
void | cdWarnings (FILE *ioPNT) |
void | cdCautions (FILE *ioOUT) |
void | cdTimescales (double *TTherm, double *THRecom, double *TH2) |
void | cdSurprises (FILE *ioOUT) |
void | cdNotes (FILE *ioOUT) |
double | cdCooling_last (void) |
void | cdVersion (char chString[]) |
void | cdDate (char chString[]) |
double | cdHeating_last (void) |
double | cdEDEN_last (void) |
void | cdNoExec (void) |
static void | cdClock (struct timeval *clock_dat) |
void | cdSetExecTime (void) |
double | cdExecTime (void) |
void | cdPrintCommands (FILE *ioOUT) |
long int | cdEmis (char *chLabel, float wavelength, double *emiss) |
void | cdEmis_ip (long int ipLine, double *emiss) |
int | cdColm (const char *chLabel, long int ion, double *theocl) |
void | cdErrors (FILE *ioOUT) |
void | cdDepth_depth (double cdDepth[]) |
void | cdPressure_depth (double TotalPressure[], double GasPressure[], double RadiationPressure[]) |
void | cdPressure_last (double *PresTotal, double *PresGas, double *PresRad) |
long int | cdnZone (void) |
double | cdTemp_last (void) |
int | cdIonFrac (const char *chLabel, long int IonStage, double *fracin, const char *chWeight, bool lgDensity) |
long | debugLine (float wavelength) |
long int | cdLineListPunch (FILE *io) |
long int | cdLine (const char *chLabel, float wavelength, double *relint, double *absint) |
void | cdLine_ip (long int ipLine, double *relint, double *absint) |
long int | cdDLine (char *chLabel, float wavelength, double *relint, double *absint) |
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) |
void | cdOutp (FILE *ioOut) |
void | cdInp (FILE *ioInp) |
void | cdTalk (bool lgTOn) |
double | cdB21cm (void) |
int | cdTemp (const char *chLabel, long int IonStage, double *TeMean, const char *chWeight) |
int | cdRead (char *chInputLine) |
void | cdClosePunchFiles (void) |
Variables | |
static bool | lgCalled = false |
static struct timeval | before |
double cdB21cm | ( | void | ) |
cdB21cm returns B as measured by 21 cm assumes tangled field weighted by n(H0)/T
Definition at line 1763 of file cddrive.cpp.
References t_mean::B_HarMeanTempRadius, DEBUG_ENTRY, DEBUG_EXIT, mean, and SMALLFLOAT.
Referenced by PrtFinal().
void cdCautions | ( | FILE * | ) |
produces list of cautions
Definition at line 246 of file cddrive.cpp.
References t_warnings::chCaunln, DEBUG_ENTRY, DEBUG_EXIT, t_warnings::ncaun, and warnings.
Referenced by cdErrors(), PunLineIntensity(), punResults(), and ShowMe().
static void cdClock | ( | struct timeval * | clock_dat | ) | [static] |
Definition at line 484 of file cddrive.cpp.
References cdEXIT(), and ioQQQ.
Referenced by cdExecTime(), and cdSetExecTime().
void cdClosePunchFiles | ( | void | ) |
wrapper to close all punch files
Definition at line 2223 of file cddrive.cpp.
References ClosePunchFiles(), DEBUG_ENTRY, and DEBUG_EXIT.
int cdColm | ( | const char * | chLabel, | |
long int | ion, | |||
double * | theocl | |||
) |
Definition at line 661 of file cddrive.cpp.
References t_colden::C1Colden, t_colden::C2Colden, t_colden::C3Colden, caps(), cdH2_colden(), t_elementnames::chElementNameShort, t_colden::colden, colden, DEBUG_ENTRY, DEBUG_EXIT, elementnames, findspecies(), t_colden::He123S, molecule::hevcol, ioQQQ, ipCOL_H2g, ipCOL_H2p, ipCOL_H2s, ipCOL_H3p, ipCOL_HeHp, ipCOL_HMIN, ipHYDROGEN, LIMELM, MAX2, mean, t_colden::O1Colden, t_colden::Si2Colden, and t_mean::xIonMeans.
Referenced by lgCheckAsserts(), optimize_func(), PrtColumns(), punch_average(), punch_colden(), and PunchDo().
double cdCooling_last | ( | void | ) |
cdCooling_last The returns the total cooling (erg cm^-3 s^-1) for the last computed zone
Definition at line 361 of file cddrive.cpp.
References t_thermal::ctot, and thermal.
void cdDate | ( | char | chString[] | ) |
cdDate The argument is a string with at least 8 char that will receive a null terminated string with the date of the current version of the code.
Definition at line 397 of file cddrive.cpp.
References t_version::chDate, and version.
void cdDepth_depth | ( | double | cdDepth[] | ) |
returns depth structure of previous model
cdDepth[] |
Definition at line 1011 of file cddrive.cpp.
References DEBUG_ENTRY, DEBUG_EXIT, t_struc::depth, nzone, and struc.
long int cdDLine | ( | char * | chLabel, | |
float | wavelength, | |||
double * | relint, | |||
double * | absint | |||
) |
cdDLine get the predicted emergent line intensity, also index for line in stack
*chLabel | ||
wavelength | wavelength of line as printed by code | |
*relint | linear intensity relative to normalization line | |
*absint | log of luminosity or intensity of line |
Definition at line 1558 of file cddrive.cpp.
References ASSERT, cap4(), t_radius::Conv2PrtInten, DEBUG_ENTRY, DEBUG_EXIT, t_LineSave::ipNormWavL, LineSave, LineSv, t_LineSave::nsum, radius, t_LineSave::ScaleNormLine, t_tag_LineSv::sumlin, and WavlenErrorGet().
int cdDrive | ( | void | ) |
cdDrive This command actually computes a model. It returns 0 if the calculation was successful, and 1 if an error condition was encountered
Definition at line 77 of file cddrive.cpp.
References cdEXIT(), cloudy(), DEBUG_ENTRY, DEBUG_EXIT, grid, grid_do(), input, ioQQQ, lgAbort, lgcdInitCalled, t_grid::lgGridDone, t_optimize::lgNoVary, t_punch::lgOpenUnits, t_optimize::lgOptimr, t_punch::lgPunHeader, t_trace::lgTraceInput, t_optimize::lgVaryOn, t_input::nSave, optimize, punch, PunchFilesInit(), and trace.
Referenced by main().
double cdEDEN_last | ( | void | ) |
cdEDEN_last return electron density of last zone
Definition at line 427 of file cddrive.cpp.
References dense, and t_dense::eden.
long int cdEmis | ( | char * | chLabel, | |
float | wavelength, | |||
double * | emiss | |||
) |
cdEmis This routine finds the local emissivity for any line. The first argument is the 4 character (null terminated) label as it appears in the standard output. The second argument is float wavelength as it appears in the standard output. The emissivity (erg /cm^3 /s) is returned as the last parameter. cdEms returns the index of the line in the stack if it was found, the negative of the total number of lines in the stack if it could not find the line
*chLabel | 4 char null terminated string label | |
wavelength | line wavelength | |
*emiss | the vol emissivity of this line in last computed zone |
Definition at line 573 of file cddrive.cpp.
References cap4(), caps(), DEBUG_ENTRY, DEBUG_EXIT, t_tag_LineSv::emslin, INPUT_LINE_LENGTH, t_LineSave::lgLineEmergent, LineSave, LineSv, t_LineSave::nsum, and WavlenErrorGet().
Referenced by punch_line().
void cdEmis_ip | ( | long int | ipLine, | |
double * | emiss | |||
) |
cdEms_ip obtain the local emissivity for a line with known index
ipLine | index of the line in the stack | |
*emiss | the vol emissivity of this line in last computed zone |
Definition at line 634 of file cddrive.cpp.
References ASSERT, DEBUG_ENTRY, DEBUG_EXIT, t_tag_LineSv::emslin, t_LineSave::lgLineEmergent, LineSave, LineSv, and t_LineSave::nsum.
Referenced by punch_line().
void cdErrors | ( | FILE * | ) |
cdErrors After the calculation is completed, a summary of all error messages can be be generated by calling this routine. The argument is the output file
[out] | *ioOUT | output file |
Definition at line 943 of file cddrive.cpp.
References cdCautions(), cdNwcns(), cdWarnings(), t_input::chTitle, DEBUG_ENTRY, DEBUG_EXIT, and input.
double cdExecTime | ( | void | ) |
cdExecTime returns the cpu time (sec) that has elapsed since cdInit called cdSetExecTime.
Definition at line 520 of file cddrive.cpp.
References before, cdClock(), cdEXIT(), ioQQQ, and lgCalled.
Referenced by main(), PrtFinal(), and PunchDo().
double cdHeating_last | ( | void | ) |
cdHeating_last returns the total heating (erg cm^-3 s^-1) for the last computed zone
Definition at line 413 of file cddrive.cpp.
References t_thermal::htot, and thermal.
void cdInp | ( | FILE * | ) |
cdInp - redirect input stream to open file
Definition at line 1722 of file cddrive.cpp.
References DEBUG_ENTRY, DEBUG_EXIT, and ioStdin.
Referenced by main().
int cdIonFrac | ( | const char * | chLabel, | |
long int | IonStage, | |||
double * | fracin, | |||
const char * | chWeight, | |||
bool | lgDensity | |||
) |
* cdIonFrac * This returns the ionization fraction for any element included in the calculation. * The first parameter is 4 char null terminated string giving the first 4 letters of * element name as spelled by Cloudy. * The second parameter is an integer giving the ionization stage, * 1 for atom, 2 for first ion, etc. * The third parameter returns the predicted ionization fraction of that ion stage. * The last parameter is an 8 character + null string that says either "volume" or "radius", * to specify whether the average should be weighted by volume or radius. * The return value is 0 if the routine could find the species and * non-zero if it failed to find the element
*chLabel | four char string, null terminated, giving the element name | |
IonStage | IonStage is ionization stage, 1 for atom, up to N+1 where N is atomic number | |
*fracin | will be fractional ionization | |
*chWeight | how to weight the average, must be "VOLUME" or "RADIUS" | |
lgDensity | if true then weighting also has electron density, if false then only volume or radius |
Definition at line 1113 of file cddrive.cpp.
References caps(), t_elementnames::chElementNameShort, DEBUG_ENTRY, DEBUG_EXIT, elementnames, INPUT_LINE_LENGTH, ioQQQ, ipHYDROGEN, LIMELM, MeanIonRadius(), and MeanIonVolume().
Referenced by DynaPunchTimeDep(), lgCheckAsserts(), and punch_average().
long int cdLine | ( | const char * | chLabel, | |
float | wavelength, | |||
double * | relint, | |||
double * | absint | |||
) |
cdLine This routine finds the predicted intensity of any line in the standard output.
*chLabel | 1st parameter is the 4-char label + null terminated label, as it appears in the output. | |
wavelength | 2nd parameter is the float wavelength in Angstroms, not how it appears in printout. The first four digits must agree with the number in the printout, but the units must be Angstroms. 3rd parameter is the predicted intensity relative to the normalization line. 4th par is the log of the predicted luminosity or intensity of the line (ergs). | |
*relint | 5th is pointer to relative intensity, a double that is returned | |
*absint | 6th is pointer to log of absolute intensity |
Definition at line 1333 of file cddrive.cpp.
References ASSERT, BIGFLOAT, cap4(), t_radius::Conv2PrtInten, DEBUG_ENTRY, DEBUG_EXIT, INPUT_LINE_LENGTH, ioQQQ, t_LineSave::ipNormWavL, t_LineSave::lgLineEmergent, LineSave, LineSv, t_LineSave::nsum, prt_wl(), radius, t_LineSave::ScaleNormLine, t_tag_LineSv::sumlin, TotalInsanity(), and WavlenErrorGet().
Referenced by Drive_cdLine(), FeIIPunchLines(), IterStart(), lgCheckAsserts(), lines_table(), optimize_func(), PrtComment(), PrtFinal(), PrtLineSum(), punch_line(), and PunchDo().
void cdLine_ip | ( | long int | ipLine, | |
double * | relint, | |||
double * | absint | |||
) |
cdLine_ip get the predicted line intensity, using index for line in stack
ipLine | ||
*relint | linear intensity relative to normalization line | |
*absint | log of luminosity or intensity of line |
Definition at line 1503 of file cddrive.cpp.
References ASSERT, t_radius::Conv2PrtInten, DEBUG_ENTRY, DEBUG_EXIT, t_LineSave::ipNormWavL, t_LineSave::lgLineEmergent, LineSave, LineSv, t_LineSave::nsum, radius, t_LineSave::ScaleNormLine, and t_tag_LineSv::sumlin.
Referenced by lgCheckAsserts(), and PrtLineSum().
long int cdLineListPunch | ( | FILE * | io | ) |
create a file with a list of all emission lines punched, and their index within the emission line stack
io | a file handle pointing to a file that is read for writing - the calling routine must close it |
Definition at line 1298 of file cddrive.cpp.
References DEBUG_ENTRY, DEBUG_EXIT, LineSave, LineSv, t_LineSave::nsum, prt_wl(), and wavelength.
void cdNoExec | ( | void | ) |
cdNoExec This provides option to have the code prepare the initial conditions for a model, but not actually try to compute the model. I use this when setting up a large grid so that I can quickly run through the full grid as a check that the commands are entered properly and the parameters I am going to vary do so properly. The command is then commented out when the grid is properly set up.
Definition at line 441 of file cddrive.cpp.
References DEBUG_ENTRY, DEBUG_EXIT, t_noexec::lgNoExec, and noexec.
void cdNotes | ( | FILE * | ) |
produces list of Notes
Definition at line 335 of file cddrive.cpp.
References t_warnings::chNoteln, DEBUG_ENTRY, DEBUG_EXIT, t_warnings::nnote, and warnings.
void cdNwcns | ( | bool * | lgAbort, | |
long int * | NumberWarnings, | |||
long int * | NumberCautions, | |||
long int * | NumberNotes, | |||
long int * | NumberSurprises, | |||
long int * | NumberTempFailures, | |||
long int * | NumberPresFailures, | |||
long int * | NumberIonFailures, | |||
long int * | NumberNeFailures | |||
) |
cdNwcns This command returns the number of warnings, cautions, notes, surprises, assorted types of failures found the last computed model
*lgAbort | abort status, if non-zero then big problems happened | |
*NumberWarnings | the number of warnings | |
*NumberCautions | the number of cautions | |
*NumberNotes | the number of notes | |
*NumberSurprises | the number of surprises | |
*NumberTempFailures | the number of temperature convergence failures | |
*NumberPresFailures | the number of pressure convergence failures | |
*NumberIonFailures | the number of ionization convergence failures | |
*NumberNeFailures | the number of electron density convergence failures |
Definition at line 1660 of file cddrive.cpp.
References conv, DEBUG_ENTRY, DEBUG_EXIT, lgAbort, t_warnings::nbang, t_warnings::ncaun, t_conv::nIonFail, t_conv::nNeFail, t_warnings::nnote, t_conv::nPreFail, t_conv::nTeFail, t_warnings::nwarn, and warnings.
Referenced by cdErrors(), and main().
long int cdnZone | ( | void | ) |
void cdOutp | ( | FILE * | ) |
cdOutp This tells the code where to send output. The argument must be a previously opened file handle. All output will go to this file. If this routine is not called then all output will go to stdout, the standard c output
Definition at line 1704 of file cddrive.cpp.
References DEBUG_ENTRY, DEBUG_EXIT, and ioQQQ.
Referenced by main().
void cdPressure_depth | ( | double | TotalPressure[], | |
double | GasPressure[], | |||
double | RadiationPressure[] | |||
) |
cdPressure_depth This returns the pressure and its constituents for the last iteration. space was allocated in the calling routine for the vectors - before calling this, cdnZone should have been called to get the number of zones, then space allocated for the arrays
TotalPressure[] | total pressure, all forms | |
GasPressure[] | gas pressure | |
RadiationPressure[] | radiation pressure |
Definition at line 1038 of file cddrive.cpp.
References DEBUG_ENTRY, DEBUG_EXIT, t_struc::GasPressure, nzone, t_struc::pres_radiation_lines_curr, t_struc::pressure, and struc.
void cdPressure_last | ( | double * | TotalPressure, | |
double * | GasPressure, | |||
double * | RadiationPressure | |||
) |
cdPressure_last This returns the pressure and its constituents for the last computed zone.
*TotalPressure | total pressure, all forms | |
*GasPressure | gas pressure | |
*RadiationPressure | radiation pressure |
Definition at line 1067 of file cddrive.cpp.
References DEBUG_ENTRY, DEBUG_EXIT, t_pressure::pres_radiation_lines_curr, t_pressure::PresGasCurr, and pressure.
void cdPrintCommands | ( | FILE * | ) |
cdPrintCommands( FILE *) This routine prints all input commands into file whose handle is the argument
*ioOUT | [out] output file handle |
Definition at line 551 of file cddrive.cpp.
References t_input::chCardSav, input, and t_input::nSave.
Referenced by ConvFail(), and ShowMe().
void cdPrtWL | ( | FILE * | io, | |
float | wl | |||
) |
cdPrtWL print line wavelengths in Angstroms in the standard format - a wrapper for prt_wl which must be kept parallel with sprt_wl both of those live in pdt.c
[out] | *ioOUT | output file handle |
[in] | the | emission line wavelength |
Definition at line 171 of file cddrive.cpp.
References DEBUG_ENTRY, DEBUG_EXIT, and prt_wl().
int cdRead | ( | char * | ) |
cdRead This sends commands to the code. The normal set of commands described in Part I of Hazy must be entered into a null-terminated string. These strings are then fed to Cloudy with this command. The function returns the number of commands that can still be entered before the command stack is full. The code will stop if you try to continue giving it commands after the command has returned zero. This return value is the opposite of the standard - a non-zero return is normal
Definition at line 2034 of file cddrive.cpp.
References caps(), cdEXIT(), t_input::chCardSav, DEBUG_ENTRY, DEBUG_EXIT, grid, input, INPUT_LINE_LENGTH, ioQQQ, lgcdInitCalled, t_grid::lgGrid, lgInputComment(), t_optimize::lgNoVary, t_optimize::lgOptimr, t_input::lgSetNoBuffering, t_trace::lgTraceInput, t_optimize::lgVaryOn, NKRD, nMatch(), t_input::nSave, optimize, TotalInsanity(), and trace.
Referenced by main().
void cdReasonGeo | ( | FILE * | ) |
This prints the reason why the model stopped, and the model geometry, on the io file pointed to by the file handle
Definition at line 191 of file cddrive.cpp.
References t_warnings::chRgcln, DEBUG_ENTRY, DEBUG_EXIT, and warnings.
void cdSetExecTime | ( | void | ) |
void cdSurprises | ( | FILE * | ) |
produces list of surprises
Definition at line 306 of file cddrive.cpp.
References t_warnings::chBangln, DEBUG_ENTRY, DEBUG_EXIT, t_warnings::nbang, and warnings.
void cdTalk | ( | bool | ) |
cdTalk tells the code whether or not to produce any of its normal output, If the argument is true (or if it is not called at all) it produces output, produces no output if it is false
Definition at line 1740 of file cddrive.cpp.
References called, DEBUG_ENTRY, DEBUG_EXIT, t_called::lgTalk, and t_called::lgTalkForcedOff.
int cdTemp | ( | const char * | chLabel, | |
long int | IonStage, | |||
double * | TeMean, | |||
const char * | chWeight | |||
) |
Definition at line 1804 of file cddrive.cpp.
References caps(), t_elementnames::chElementNameShort, DEBUG_ENTRY, DEBUG_EXIT, elementnames, EmisLines, t_mean::H2MeanTempRadius, t_mean::H2MeanTempVolume, t_mean::H_21cm_spin_mean_radius, t_mean::HarMeanTempRadius, t_mean::HarMeanTempVolume, HFLines, INPUT_LINE_LENGTH, ioQQQ, ipH1s, ipH2p, ipH_LIKE, ipHYDROGEN, LIMELM, mean, MeanIonRadius(), MeanIonVolume(), SDIV(), SMALLFLOAT, EmLine::TauCon, t_mean::TempMeanRadius, and t_mean::TempMeanVolume.
Referenced by DynaPunchTimeDep(), lgCheckAsserts(), optimize_func(), PrtFinal(), punch_average(), and timestep_next().
double cdTemp_last | ( | void | ) |
cdTemp_last returns the temperature of the last zone on last iteration
Definition at line 1102 of file cddrive.cpp.
References phycon, and t_phycon::te.
void cdTimescales | ( | double * | TTherm, | |
double * | THRecom, | |||
double * | TH2 | |||
) |
cdTimescales returns the longest thermal, recombination, and H2 formation timescales that occurred in the previous model
*TTherm | the thermal cooling timescale | |
*THRecom | the hydrogen recombination timescale | |
*TH2 | the H2 formation timescale |
Definition at line 271 of file cddrive.cpp.
References DEBUG_ENTRY, DEBUG_EXIT, MAX2, t_timesc::time_H2_Dest_longest, t_timesc::time_H2_Form_longest, t_timesc::time_Hrecom_long, t_timesc::time_therm_long, and timesc.
void cdVersion | ( | char | chString[] | ) |
cdVersion The argument is a string with at least 8 characters that will receive a null terminated string with the version number of the code.
Definition at line 374 of file cddrive.cpp.
References cdEXIT(), t_version::chVersion, lgcdInitCalled, and version.
Referenced by lgCheckAsserts(), and writeCloudyDetails().
void cdWarnings | ( | FILE * | ) |
These routines produce lists of warnings, cautions, notes, surprises These are the routines that are called by cdErrors. Normally cdErrors and not these routines would be called by the user.
Definition at line 216 of file cddrive.cpp.
References t_warnings::chWarnln, DEBUG_ENTRY, DEBUG_EXIT, t_warnings::nwarn, and warnings.
Referenced by cdErrors(), optimize_func(), PunLineIntensity(), punResults(), and ShowMe().
long debugLine | ( | float | wavelength | ) |
debugLine provides a debugging hook into the main line array loops over whole array and finds every line that matches length, the wavelength, the argument to the function put breakpoint inside if test return value is number of matches, also prints all matches
[in] | the | emission line wavelength |
[out] | the | number of matches |
Definition at line 1266 of file cddrive.cpp.
References LineSave, LineSv, t_LineSave::nsum, and WavlenErrorGet().
struct timeval before [static] |
bool lgCalled = false [static] |
Definition at line 465 of file cddrive.cpp.
Referenced by cdExecTime(), cdSetExecTime(), ContBandsCreate(), da(), FeIIBandsCreate(), FeIIContCreate(), and ParseTable().