cloudy  trunk
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
save.h
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2017 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 
4 #ifndef SAVE_H_
5 #define SAVE_H_
6 
7 #include "energy.h"
8 
9 class diatomics;
10 class TransitionProxy;
11 
12 /* save.h */
13 static const long LIMPUN = 100L;
14 
16 static const long VERSION_TRNCON = 20100901L;
17 
21 void SaveDo(
22  const char *chTime);
23 
25 double PrtLogLin( double value );
26 
34 void Save1Line(
35  const TransitionProxy & t ,
36  FILE * io ,
37  realnum xLimit ,
38  long index,
39  realnum DopplerWidth);
40 
45  FILE * io);
46 
51 void save_opacity(
52  FILE * io,
53  long int np);
54 
59 void SaveSpecial(
60  FILE* io ,
61  const char *chTime);
62 
63 
67 void SaveAllSpeciesLabelsLevels( FILE *ioPUN );
68 
69 
74 void SaveSpecies(
75  FILE* ioPUN,
76  long int ipPun );
77 
83 void SaveSpeciesPseudoCont( const long ipPun, const string &speciesLabel );
84 
91 void SaveSpeciesBands( const long ipPun, const string &speciesLabel,
92  const string &fileBands );
93 
99 void SaveSpeciesOptDep( const long int ipPun, const string &speciesLabel );
100 
101 class molecule;
102 
103 extern void mole_save(FILE *punit, const char speciesname[], const char args[], bool lgHeader, bool lgData, bool lgCoef, double depth);
104 
105 // debug_list -- list of species to print -- add multiple species to get net
106 // rate of change for all together, useful for understanding net sources
107 // sinks to networks
108 // ioOut -- stream
109 // lgPrintReagents -- print abundances of reagents
110 // NPRINT -- max number of reactions
111 // fprint -- minimum fraction of total rate which is worth printing
112 extern void mole_dominant_rates( const vector<const molecule *>& debug_list,
113  FILE *ioOut,
114  bool lgPrintReagents, size_t NPRINT, double fprint );
115 
116 extern void mole_print_species_reactions( molecule *speciesToPrint );
117 
118 
119 /* Print header for Save1LineData() function
120  * \param ioPUN file pointer to write to
121  */
122 void PrintLineDataHeader( FILE * ioPUN );
123 
124 
131 void Save1LineData(
132  const TransitionProxy & t ,
133  FILE * io,
134  bool lgCS_2 );
135 
141 void save_line(
142  FILE * ip,
143  const char *chDo,
144  bool lgEmergent,
145  long ipPun );
146 
150 void save_average(
151  long int ipPun);
152 
157 void Save_Line_RT(
158  FILE * ip);
159 
164 void saveFITSfile(
165  FILE* io,
166  int option );
167 
171 void SaveHeat(FILE* io);
172 
176 void CoolSave(FILE * io, const char chJob[]);
177 
182 void SaveGrid(FILE* pnunit, exit_type status);
183 
185 {
186 public:
188  FILE *ipPnunit;
189 };
190 
192 {
193 public:
194  string speciesLabel;
196  wlHi;
197  long nBins;
198 };
199 
201 {
202 public:
203  string filename;
204  string speciesLabel;
205 };
206 
207 struct t_save {
208 
210  {
211  for( long i=0; i < LIMPUN; ++i )
212  {
213  nLineList[i] = -1;
214  lgFITS[i] = false;
215  FITStype[i] = -1;
216  nAverageList[i] = -1;
217  p_lgSaveTitleDone[i] = false;
218  p_lgSaveHeaderDone[i] = false;
219  }
220  p_lgSaveHeaderNeeded = true;
221  }
222 
224  {
225  for( long i=0; i < LIMPUN; ++i )
226  {
227  SaveLineListFree(i);
228  SaveAverageFree(i);
229  }
230  }
231 
232  void SaveLineListFree(long i)
233  {
234  chLineListLabel[i].clear();
235  wlLineList[i].clear();
236  }
237  void SaveAverageFree(long i)
238  {
239  nAverageList[i] = 0;
240  chAverageType[i].clear();
241  chSaveSpecies[i].clear();
242  /* nAverageIonList is set of ions for averages */
243  nAverageIonList[i].clear();
244  /* nAverage2ndPar is set of second parameters for averages */
245  nAverage2ndPar[i].clear();
246  }
247 
252  vector<string> chLineListLabel[LIMPUN];
254  vector<realnum> wlLineList[LIMPUN];
257 
262  vector<string> chAverageType[LIMPUN];
264  vector<int> nAverageIonList[LIMPUN];
266  vector<int> nAverage2ndPar[LIMPUN];
267 
270 
273 
276 
285 
289 
292 
295 
298 
301 
303  long int nsave;
304 
306  char chSave[LIMPUN][5];
308 
310  char chOpcTyp[LIMPUN][5];
311 
316 
320 
321 private:
325 
329 
333 
334 public:
335  void SetSaveHeaderNeeded(bool lgVal) { p_lgSaveHeaderNeeded = lgVal; }
336 
338  bool lgSaveTitle(int ipPun) const
339  {
341  }
343 
345  bool lgSaveHeader(int ipPun) const
346  {
348  }
350 
355 
358 
360  string optname[LIMPUN];
361 
366 
368  char chSaveArgs[LIMPUN][5];
369 
370  vector<string> chSaveSpecies[LIMPUN];
371 
375 
377  bool lgFITS[LIMPUN];
378 
381 
385 
387  const char *chConSavEnr[LIMPUN];
388 
390  long int ipConPun;
391 
395 
399 
401  bool lgFLUSH;
402 
406 
409  string chGridPrefix;
410 
414 
418 
421  string chOutputFile;
422 
426  char chPunRltType[7];
427 
431  FILE* ipPoint;
433 
435  bool lgPunConv;
436  FILE* ipPunConv;
437 
438 
440  bool lgSDSOn;
441  FILE* ipSDSFile;
442 
446  FILE * ipDRout;
447  bool lgDROn,
448  lgDRPLst,
449  lgDRHash;
450 
451  /* set true save convergence base */
455 
457  FILE* ioRecom;
458  bool lgioRecom;
459 
462  long int LinEvery;
464 
466  long int ncSaveSkip;
467 
471 
476  // same thing but for absorption lines - default is unity, set to
477  // SaveLWidth if ABSORPTION keyword occurs on save line width command
479 
481 
482  // the frequency at which the continuum volume emissivity should be saved
485 
486  // Switches for save Database command
487  // Wavenumbers vs WLAng, Gf vs A, Collision Rates or not
489 
491  vector<string> contSaveSpeciesLabel;
492  vector<adjPseudoCont> setPseudoCont;
493 
496  vector<save_species_bands> specBands;
497 };
498 
499 extern t_save save;
500 
501 #endif /* SAVE_H_ */
bool lgPunLstIter[LIMPUN]
Definition: save.h:374
vector< string > chAverageType[LIMPUN]
Definition: save.h:262
bool p_lgSaveHeaderNeeded
Definition: save.h:332
vector< int > nAverageIonList[LIMPUN]
Definition: save.h:264
realnum punarg[LIMPUN][3]
Definition: save.h:357
bool lgPunContinuum
Definition: save.h:354
void SaveSpecial(FILE *io, const char *chTime)
void SaveHeat(FILE *io)
Definition: heat_save.cpp:22
void CoolSave(FILE *io, const char chJob[])
Definition: cool_save.cpp:20
STATIC long int ipPun
Definition: save_do.cpp:721
#define NORETURN
Definition: cpu.h:451
bool lgNoClobber[LIMPUN]
Definition: save.h:272
string chGridPrefix
Definition: save.h:409
realnum ResolutionAbs
Definition: save.h:478
bool lgDRHash
Definition: save.h:447
string chFilenamePrefix
Definition: save.h:413
string filename
Definition: save.h:203
vector< save_species_bands > specBands
Definition: save.h:496
void save_line(FILE *ip, const char *chDo, bool lgEmergent, long ipPun)
Definition: save_line.cpp:110
static const long VERSION_TRNCON
Definition: save.h:16
void Save1LineData(const TransitionProxy &t, FILE *io, bool lgCS_2)
bool lgSaveGrid_noclobber
Definition: save.h:284
char chOpcTyp[LIMPUN][5]
Definition: save.h:310
char chHashString[INPUT_LINE_LENGTH]
Definition: save.h:398
void SaveSpeciesBands(const long ipPun, const string &speciesLabel, const string &fileBands)
NORETURN void SaveLineData(FILE *io)
FILE * ipSDSFile
Definition: save.h:441
bool lgioRecom_noclobber
Definition: save.h:281
bool lgFLUSH
Definition: save.h:401
FILE * ioRecom
Definition: save.h:457
char chPunRltType[7]
Definition: save.h:426
FILE * ipPnunit
Definition: save.h:188
bool lgRealSave[LIMPUN]
Definition: save.h:288
Definition: mole.h:142
exit_type
Definition: cddefines.h:142
bool lgTraceConvergeBase_noclobber
Definition: save.h:283
bool lgEmergent[LIMPUN]
Definition: save.h:291
long int nsave
Definition: save.h:303
void mole_save(FILE *punit, const char speciesname[], const char args[], bool lgHeader, bool lgData, bool lgCoef, double depth)
void SaveAllSpeciesLabelsLevels(FILE *ioPUN)
void SaveDo(const char *chTime)
Definition: save_do.cpp:817
FILE * ipPunConv
Definition: save.h:436
bool lgCumulative[LIMPUN]
Definition: save.h:294
string optname[LIMPUN]
Definition: save.h:360
string SpeciesBandFile[LIMPUN]
Definition: save.h:495
long int LinEvery
Definition: save.h:462
void SaveSpeciesOptDep(const long int ipPun, const string &speciesLabel)
void save_opacity(FILE *io, long int np)
bool lg_separate_iterations[LIMPUN]
Definition: save.h:319
bool lgPunConv
Definition: save.h:435
realnum WeakHeatCool
Definition: save.h:470
FILE * ipTraceConvergeBase
Definition: save.h:454
static const long LIMPUN
Definition: save.h:13
~t_save()
Definition: save.h:223
void SaveGrid(FILE *pnunit, exit_type status)
Definition: save_do.cpp:4694
char chSaveArgs[LIMPUN][5]
Definition: save.h:368
void SaveAverageFree(long i)
Definition: save.h:237
void Save_Line_RT(FILE *ip)
Definition: save_line.cpp:328
long int ncSaveSkip
Definition: save.h:466
realnum wlLo
Definition: save.h:195
Definition: save.h:207
bool lgPunPoint
Definition: save.h:432
float realnum
Definition: cddefines.h:124
bool lgPunPoint_noclobber
Definition: save.h:280
bool lgLuminosityOld
Definition: save.h:405
const int INPUT_LINE_LENGTH
Definition: cddefines.h:301
bool lgSaveDataRates
Definition: save.h:488
long int nSaveEveryZone[LIMPUN]
Definition: save.h:365
bool lgQHSaveFile_noclobber
Definition: save.h:282
vector< int > nAverage2ndPar[LIMPUN]
Definition: save.h:266
bool lgLineListRatio[LIMPUN]
Definition: save.h:256
bool lgDRPLst
Definition: save.h:447
FILE * ipPoint
Definition: save.h:431
vector< string > chLineListLabel[LIMPUN]
Definition: save.h:252
bool lgSDSOn
Definition: save.h:440
void SaveTitleDone(int ipPun)
Definition: save.h:342
realnum wlHi
Definition: save.h:195
double PrtLogLin(double value)
Definition: save_do.cpp:724
SaveParams params[LIMPUN]
Definition: save.h:269
long nBins
Definition: save.h:197
void SaveLineListFree(long i)
Definition: save.h:232
vector< string > contSaveSpeciesLabel
Definition: save.h:491
bool lgSaveEveryZone[LIMPUN]
Definition: save.h:364
bool lgLinEvery
Definition: save.h:463
t_save()
Definition: save.h:209
void SaveHeaderDone(int ipPun)
Definition: save.h:349
bool lgPrtIsotropicCont[LIMPUN]
Definition: save.h:300
int FITStype[LIMPUN]
Definition: save.h:380
bool lgFITS[LIMPUN]
Definition: save.h:377
bool p_lgSaveTitleDone[LIMPUN]
Definition: save.h:324
void mole_dominant_rates(const vector< const molecule * > &debug_list, FILE *ioOut, bool lgPrintReagents, size_t NPRINT, double fprint)
vector< realnum > wlLineList[LIMPUN]
Definition: save.h:254
bool lgSaveDataGf
Definition: save.h:488
bool lgHashEndIter[LIMPUN]
Definition: save.h:394
Definition: energy.h:9
bool lgPrtOldStyleLogs[LIMPUN]
Definition: save.h:275
string chOutputFile
Definition: save.h:421
long nAverageList[LIMPUN]
Definition: save.h:260
bool lgTraceConvergeBase
Definition: save.h:452
bool lgSaveTitle(int ipPun) const
Definition: save.h:338
bool lgDROn
Definition: save.h:447
diatomics * whichDiatomToPrint[LIMPUN]
Definition: save.h:307
long ipEmisFreq[LIMPUN]
Definition: save.h:484
void SaveSpecies(FILE *ioPUN, long int ipPun)
string chSpeciesDominantRates[LIMPUN]
Definition: save.h:480
bool lgioRecom
Definition: save.h:458
const char * chConSavEnr[LIMPUN]
Definition: save.h:387
void saveFITSfile(FILE *io, int option)
Definition: save_fits.cpp:83
void SaveSpeciesPseudoCont(const long ipPun, const string &speciesLabel)
vector< string > chSaveSpecies[LIMPUN]
Definition: save.h:370
string speciesLabel
Definition: save.h:204
void save_average(long int ipPun)
bool lgTraceConvergeBaseHash
Definition: save.h:452
bool lgPunConv_noclobber
Definition: save.h:278
bool lgSubtrCont
Definition: save.h:297
bool lgSaveDataWn
Definition: save.h:488
t_save save
Definition: save.cpp:5
void SetSaveHeaderNeeded(bool lgVal)
Definition: save.h:335
FILE * ipDRout
Definition: save.h:446
realnum Resolution
Definition: save.h:475
string chRedirectPrefix
Definition: save.h:417
Energy emisfreq[LIMPUN]
Definition: save.h:483
bool lgSaveHeader(int ipPun) const
Definition: save.h:345
bool lgSaveToSeparateFiles[LIMPUN]
Definition: save.h:315
long int ipConPun
Definition: save.h:390
void mole_print_species_reactions(molecule *speciesToPrint)
long nLineList[LIMPUN]
Definition: save.h:250
char chSave[LIMPUN][5]
Definition: save.h:306
void PrintLineDataHeader(FILE *ioPUN)
bool lgPunchFits
Definition: save.h:384
vector< adjPseudoCont > setPseudoCont
Definition: save.h:492
string speciesLabel
Definition: save.h:194
bool lgDROn_noclobber
Definition: save.h:279
void Save1Line(const TransitionProxy &t, FILE *io, realnum xLimit, long index, realnum DopplerWidth)
Definition: save_do.cpp:4316
bool p_lgSaveHeaderDone[LIMPUN]
Definition: save.h:328