SEVN
Loading...
Searching...
No Matches
IO.h
Go to the documentation of this file.
1//
2// Created by mario on 13/11/18.
3//
4
5#ifndef SEVN_REVISED_IO_H
6#define SEVN_REVISED_IO_H
7
8#include <iostream>
9#include <vector>
10#include <set>
11#include <dirent.h>
12#include <algorithm>
13#include <map>
14#include <sevnlog.h>
15#include <utilities.h>
16
17
18#include <starparameter.h>
19#include <fstream>
20#include <numeric> //for iota function
21#include <set>
22
23#include <sevnlog.h>
25
26#include <lookup_and_phases.h>
27using namespace Lookup;
28
29#include <params.h>
30
31#ifdef H5OUT
32#include <H5out.h>
33
34using sevnstd::H5out;
35#else
36#include <fstream>
37#include <iomanip>
38#endif
39
40#include <sys/stat.h> //GI271119: moved here from region inside ifdef H5OUT
41
42
43
44class Star;
45
46
47/*
48NB: Every IO constructor needs to call set_init_variable() at the beginning to properly set the following
49- tablesloaded = 0; Otherwise it will never load the tables even if load is called
50- nthreads = 1;
51- ntables = _Ntables;
52 */
53class IO {
54
55public:
56
57 IO(){
59 }
60
61
62
63 IO(int argc, char **argv){
64
66
67 load(argc, argv);
68 load_stars();
69
70 if (!get_output_folder_name().empty())
72
73 svlog.debug("Output folder name is "+get_output_folder_name());
74
75 }
76
77
78
79 ~IO(){
80 if(liststars.is_open())
81 liststars.close();
82 if(failedstars.is_open())
83 failedstars.close();
84 if(outputfile.is_open())
85 outputfile.close();
86 if(logfile.is_open())
87 logfile.close();
88 }
89
90
91 /* LOAD METHODS */
95 void load_stars();
101 void load(int n, char** val);
102
103
104
105 std::string get_logstring(){ return logstring;};
106 inline void reset_log(){logstring.clear();}
107
108 template <typename T> void fill_matrix_test(std::vector< std::vector<T> > &matrix, std::ifstream &file){
109
110 std::vector<T> vline;
111 std::string line, value;
112 std::istringstream stream;
113
114 std::cout<<" Filling matrix "<<std::endl;
115
116 for(;;){
117
118 vline.erase(vline.begin(), vline.end());
119
120 getline(file, line);
121 if(file.eof() || line.length()==0 ) break; //break if end of file or if a blank line is included.
122 stream.clear();
123 stream.str(line);
124
125 //If it is a comment do not read
126 if(line[0]=='/' or line[0]=='#')
127 continue;
128
129
130 for(;;){ //keep reading the line till its last element
131
132 if(stream >> value){
133 vline.push_back(utilities::s2n<T>(value, __FILE__, __LINE__));
134 stream.clear();
135 }
136 else
137 break;
138 }
139
140 matrix.push_back(vline);
141
142 }
143
144 }
145
146
147 //tables[ID][i][j][k]:
148 //ID = taken from enum lookup_names. It tells what kind of matrix you want to access
149 // i = metallicity index
150 // j = track number
151 // k = time on the j-th track
152
153
154
155
156
157 std::vector<std::vector<std::vector<std::vector<double>>>> tables,tables_HE;
158 std::vector<double> Z, Z_HE;
159 std::vector<std::vector<double>> allzams, allzams_HE;
160 std::vector< std::vector<std::string> > STARS_MATRIX;
161
162 std::random_device rd;
163
164 //TODO Let the user select the output columns (not just what add to the default one)
165 std::vector<std::string> printcolumns_star;
168 std::vector<std::string> printcolumns_binary; /*< As above, but for the properties of the binary system. Use -bcol flag to let the user add more columns
169 * to the default defined in IO::list_cols_binary*/
170
171 std::vector<size_t> printIDs_star;
172 std::vector<size_t> printIDs_binary;
173
174
175 size_t ntables;
176
178 std::string output_mode;
179 std::string binput_mode;
180 std::string winds_mode;
181 std::string RL_mode;
182 std::string tides_mode;
183 std::string GW_mode;
184 std::string mix_mode;
185 std::string COLL_mode;
186 std::string HARD_mode;
187 std::string CIRC_mode;
188 std::string SNK_mode;
189 std::string CE_mode;
190 std::string SEVNpath;
191
192
194 //TODO Transform all the paramters to parameters call
195 inline bool rseed_provided(){return svpar.get_bool("rseed");}
196
197
199
200
201 //variable to check if look-up tables have already been loaded
203
204
205 void print_output(std::vector<std::vector<double>> &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint=false);
206
207 inline void print_formatted_output(std::vector<std::vector<double>> &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint=false){
208
209 //This is not needed since the print_evolved_summary is called inside the call of binstar or star
210 //print_evolved_summary(_name, _rseed, _ID);
211
212 //TODO change the way we choose among different outputs. New class structure IO --> PRINT (virtual with instances) --> -- ASCII, HDF5, CSV
213 // here we will just call PRINT.do()
214
216
217 if(out == OutputOption::_ascii)
218 print_ascii(printmatrix, _name, _rseed, _ID, binaryprint);
219 else if (out == OutputOption::_csv)
220 print_csv(printmatrix, _name, _rseed, _ID, binaryprint);
221 else if (out == OutputOption::_binary)
222 print_bin(printmatrix, _name, _rseed, _ID, binaryprint);
223#ifdef H5OUT
224 else if (out == OutputOption::_hdf5)
225 print_hdf5(printmatrix, _name, binaryprint);
226#endif
227 else
228 svlog.critical("Output option not recognized: [" + output_mode +"] ", __FILE__, __LINE__,sevnstd::sevnio_error());
229
230 return;
231 }
232
233
240 void print_evolved_summary(const std::string &_name, const unsigned long &_rseed, const size_t &_ID);
241
248 void print_failed_summary(const std::string &_name, const unsigned long &_rseed, const size_t &_ID);
249
250 void print_failed_initilisation_summary(const size_t &_ID);
251
252 inline void print_params(std::string filename="used_params.svpar"){
253
254 std::string fname = get_output_folder_name()+"/"+filename;
255
256 std::ofstream output_file;
257 output_file.open(fname);
258 output_file<< svpar.print();
259 output_file.close();
260 }
261
266 void print_log(std::string filename="logfile.dat");
267
268
273 void log_put(std::string& loginfo);
274
275
276#ifdef DEBUG
283 void print_timelog(Star *s);
284#endif
285
286
287 void create_folder(const std::string &name) {
288 #if defined(__linux__)
289 int results = mkdir(name.c_str(), 0777);
290 #else
291 //The above code seems to not work properly for certain path name on macOS
292 int results = system(("mkdir -p "+name).c_str());
293 #endif
294
295 if(results){
296 svlog.pdebug("Directory exist",__FILE__,__LINE__);
297 }
298
299 //GI: this was extremely dangerous because it removes everything inside the folder
300 //if it already exists.
301 /*
302 if(results){
303 svlog.pdebug("Directory exist",__FILE__,__LINE__);
304
305 DIR *theFolder = opendir(name.c_str());
306 struct dirent *next_file;
307
308 while ( (next_file = readdir(theFolder)) != nullptr ){
309 std::string path = name + "/" + next_file->d_name;
310 remove(path.c_str());
311 }
312
313 closedir(theFolder);
314 }
315 */
316 }
317
318 //GET
319 inline std::string get_output_folder_name() { return output_folder_name;}
320 inline std::string get_SEVNpath() const { return SEVNpath;}
321
322 //load
330 std::vector<std::vector<double>> load_auxiliary_table(std::string name) const{
331
332 std::ifstream table_file;
333 std::vector<std::vector<double>> Matrix;
334
335 #ifdef _OPENMP
336 #pragma omp critical
337 #endif
338 {
339 table_file.open(get_SEVNpath() + "auxiliary_data/" + name);
340 //std::cout<<get_SEVNpath() + "auxiliary_data/" + name<<std::endl;
341 if (table_file.is_open()) {
342 fill_matrix(Matrix, table_file);
343 table_file.close();
344 } else
345 svlog.critical("Raised an error reading auxiliary table file " + name +
346 ". Check if the file exist, if you specified the right path in the run script, and if you have reading permission.",
347 __FILE__, __LINE__,
349 }
350
351 return Matrix;
352 }
353
354protected:
355 inline void set_init_variables(){
356
357 tablesloaded = 0;
359
360 };
361
362
363
364
365private:
366
367#ifdef H5OUT
368 static H5out h5; //used by each thread to print the HDF5 dataset
369 #pragma omp threadprivate(IO::h5)
370#endif
371 static std::ofstream liststars;
372 static std::ofstream failedstars;
373 static std::ofstream failedinits;
374 static std::ofstream outputfile; //GI 81119: File where to save the (non h5) output.
375 static std::ofstream logfile; //File to output the log
376 static std::string logstring; //File to store info to output in log, declared threadprivate
377
378#ifdef _OPENMP
379#pragma omp threadprivate(IO::liststars)
380#pragma omp threadprivate(IO::failedstars)
381#pragma omp threadprivate(IO::failedinits)
382#pragma omp threadprivate(IO::outputfile)
383#pragma omp threadprivate(IO::logfile)
384#pragma omp threadprivate(IO::logstring)
385#endif
386
387#ifdef DEBUG
388 static std::ofstream timelog;
389#pragma omp threadprivate(IO::timelog)
390#endif
391
392
393 bool load_called = false;
396 static std::vector<std::string> labels_STARMATRIX;
398 std::string output_folder_name="output";
399
400
401 std::vector<std::vector<double>> printmatrix;
402
404
405
406 //main
407 std::string tables_dir, tables_dir_HE, list_file; //folder where to find all the look-up tables
408 std::string list_cols_star;
409 std::string list_cols_binary;
412 //auxiliaryload
413 std::ifstream in;
414
415 std::vector<std::string> zstring, zstring_HE;
416
423 void columns_to_print(std::string &list_cols, std::vector<std::string> &printcolumns);
424
425 void read(std::vector<std::vector<std::vector<std::vector<double>>>>& tables,
426 const std::string& tables_dir, const std::vector<std::string>& zstring, std::vector<double>& Z);
427
429
432
433 }
434
435 void inspect_tables();
436 //It loads all the available tables, at all metallicities
437 void load_tables();
438 //It loads all the available tables for pure-HE stars (if any), at all metallicities
439
447 template <typename T> void fill_matrix(std::vector< std::vector<T> > &matrix, std::ifstream &file, bool reset=false) const{
448
449 std::vector<T> vline;
450 std::string line, value;
451 std::istringstream stream;
452
453 if (reset){
454 matrix.clear();
455 }
456
457 for(;;){
458
459 vline.erase(vline.begin(), vline.end());
460
461 getline(file, line);
462 if(file.eof() || line.length()==0 ) break; //break if end of file or if a blank line is included.
463 stream.clear();
464 stream.str(line);
465
466 //Skip comments
467 if (line[0]=='#' or line[0]=='/')
468 continue;
469
470
471 for(;;){ //keep reading the line till its last element
472 if(stream >> value and stream.str()[0]!='/' and stream.str()[0]!='#'){
473 vline.push_back(utilities::s2n<T>(value, __FILE__, __LINE__));
474 stream.clear();
475 }
476 else
477 break;
478 }
479
480 matrix.push_back(vline);
481
482 }
483
484 }
485
486
487 void print_list_summary(std::ofstream& outstream, std::string basename, const std::string &_name, const unsigned long &_rseed, const size_t &_ID);
488
489
490 //GI 81119: specific functions to be called by print_output depending on the output type
491 //void print_evolved_summary(const std::string &_name, const size_t &_ID);
492#ifdef H5OUT
493 void print_hdf5(std::vector<std::vector<double>> &printmatrix, const std::string &_name, const bool binaryprint);
494#endif
495
512 void print_formatted_ascii(const std::string &filename,std::vector<std::vector<double>> &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint, const std::string &separator,
513 const size_t &_w_id, const size_t &_w_name, const size_t &_w_header, const size_t &_precision, const std::string &comment);
514
515 void print_ascii(std::vector<std::vector<double>> &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint);
516 void print_csv(std::vector<std::vector<double>> &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint);
517 void print_bin(std::vector<std::vector<double>> &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint);
518
519
523 }
524
525 void inspect_dir(const std::string &motherdir, std::vector<std::string>& _zstring, std::vector<double>& _Z,std::string inspectdir="") {
526
527 std::string dir = motherdir + "/" + inspectdir;
528
529 //std::cout<<" inspectig dir = "<<dir<<std::endl;
530
531 if(dir.empty())
532 svlog.critical("You are trying to inspect an empty directory: " + dir, __FILE__, __LINE__);
533
534 dir += "/"; //safe instruction.. if the user forgets to add the / at the end of the directory string
535 auto directory = opendir(dir.c_str()); //from dirent.h
536
537
538 if(nullptr == directory)
539 svlog.critical("Cannot open directory " + dir, __FILE__, __LINE__);
540
541 dirent *gotobject = readdir(directory); //get the first object inside the directory
542
543
544 while(gotobject != nullptr) { //inspect all the objects inside the current directory
545 inspect_object(gotobject, motherdir,_zstring,_Z);
546 gotobject = readdir(directory);
547 }
548
549
550
551 closedir(directory);
552
553 }
554
555 void inspect_object(dirent *object, const std::string &motherdir, std::vector<std::string>& _zstring, std::vector<double>& _Z) {
556
557
558 if (object->d_name[0] == '.') { //exclude . and ..
559 return;
560 }
561
562 if (object->d_type == DT_DIR) {//the object is a directory
563
564 _zstring.emplace_back(object->d_name); //Vector containing the name of all the metallicity folders (GI why not directly casted from Z?)
565 //it's a directory, so process it... it should be a metallicity dir
566 _Z.push_back(utilities::dirname2n<double>(std::string(object->d_name), __FILE__, __LINE__)); //save the metallicity value... use the string_to_number function
567
568 //_tables_file.resize(_Z.size());
569
570 inspect_dir(motherdir, _zstring, _Z, std::string(object->d_name));//process a directory (a sub_directory)
571 return; //done inspection in the current sub-folder
572 }
573
574
575 //for each metallicity we fill the "tables_file vector... it contains all the tables we have for each different metallicity"
576 if (object->d_type == DT_REG) {
577
578 std::string filename = motherdir + "/" + _zstring[_zstring.size()-1] + "/" + std::string(object->d_name);
579
580 //GI: Do not read files that are not defined in filemap
581 if(filemap.find(std::string(object->d_name)) == filemap.end() and filemap_optional.find(std::string(object->d_name)) == filemap_optional.end()){
582 svlog.warning("The unexpected file '"+std::string(object->d_name)+"' has been found in the directory "+
583 motherdir + "/" + _zstring[_zstring.size()-1] + ". It will be not loaded. Check if this is a misspelled table."
584 ,__FILE__,__LINE__);
585 return;
586 }
587
588 if(filename.empty())
589 svlog.critical("This filename should not be empty: " + filename, __FILE__, __LINE__);
590
591
592 return; //return the name of the file
593 }
594
595
596 svlog.critical("This is nor a file or a directory: " + std::string(object->d_name), __FILE__, __LINE__);
597
598 }
599
600
601protected:
602
603
604
609 //TODO probably this can be made void (no need to return bool?)
611
612 //Z
613 if (!std::is_sorted(Z.begin(),Z.end()))
614 svlog.critical("Z table is not sorted",__FILE__,__LINE__,sevnstd::sevnio_error());
615 //ZHE
616 if (!std::is_sorted(Z_HE.begin(),Z_HE.end()))
617 svlog.critical("Z_HE table is not sorted",__FILE__,__LINE__,sevnstd::sevnio_error());
618 //Mass
619 for (auto& zams_table : allzams){
620 if (!std::is_sorted(zams_table.begin(),zams_table.end()))
621 svlog.critical("zams table is not sorted",__FILE__,__LINE__,sevnstd::sevnio_error());
622 }
623 //Mass HE
624 for (auto& zams_table : allzams_HE){
625 if (!std::is_sorted(zams_table.begin(),zams_table.end()))
626 svlog.critical("zams_HE table is not sorted",__FILE__,__LINE__,sevnstd::sevnio_error());
627 }
628
629 return true;
630
631 }
632
638 //TODO We should have a flag to understand if we are dealing with a binary or not.
639 //TODO 8 is hardcoded for now;
640 unsigned int N_expected = 8;
641 bool is_binary = STARS_MATRIX[0].size()>N_expected;
642 int inchoice=inputmapbin.at(binput_mode).first;
643
644 if (is_binary and inchoice==InputBinaryOption::_new){
645 labels_STARMATRIX={"Mass_0","Z_0","spin_0", "SN_0", "Tstart_0",
646 "Mass_1","Z_1","spin_1", "SN_1", "Tstart_1",
647 "a","e","Tend", "Dtout"};
648 }
649 else if (is_binary and inchoice==InputBinaryOption::_legacy)
650 labels_STARMATRIX={"Mass_0","Mass_1","Z_0","Z_1","spin_0","spin_1",
651 "a","e","Tend", "Tstart", "dt","SN_0","SN_1","Dtout"};
652 else if (!is_binary){
653 labels_STARMATRIX={"Mass","Z","spin", "SN", "Tstart", "Tend", "Dtout"};
654 }
655 else
656 svlog.critical("Option unkown",__FILE__,__LINE__,sevnstd::sevnio_error());
657 }
658
659 //TODO Put a safe get starmatrix table? It check if is has been initialised (i.e. is not empty) or not
660
661};
662
663
664
665
666
667#endif //SEVN_REVISED_IO_H
Definition: IO.h:53
void fill_matrix_test(std::vector< std::vector< T > > &matrix, std::ifstream &file)
Definition: IO.h:108
void print_evolved_summary(const std::string &_name, const unsigned long &_rseed, const size_t &_ID)
Definition: IO.cpp:406
void inspect_dir(const std::string &motherdir, std::vector< std::string > &_zstring, std::vector< double > &_Z, std::string inspectdir="")
Definition: IO.h:525
void print_formatted_output(std::vector< std::vector< double > > &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint=false)
Definition: IO.h:207
static std::ofstream failedinits
Definition: IO.h:373
void read(std::vector< std::vector< std::vector< std::vector< double > > > > &tables, const std::string &tables_dir, const std::vector< std::string > &zstring, std::vector< double > &Z)
Definition: IO.cpp:156
std::vector< std::string > printcolumns_binary
Definition: IO.h:168
std::random_device rd
Definition: IO.h:162
std::string GW_mode
Definition: IO.h:183
std::vector< std::string > zstring
Definition: IO.h:415
void print_log(std::string filename="logfile.dat")
Definition: IO.cpp:653
bool load_called
Definition: IO.h:393
std::string output_mode
Definition: IO.h:178
void inspect_object(dirent *object, const std::string &motherdir, std::vector< std::string > &_zstring, std::vector< double > &_Z)
Definition: IO.h:555
IO(int argc, char **argv)
Definition: IO.h:63
std::vector< std::vector< std::string > > STARS_MATRIX
Definition: IO.h:160
void load_tables()
Definition: IO.cpp:112
void print_failed_summary(const std::string &_name, const unsigned long &_rseed, const size_t &_ID)
Definition: IO.cpp:410
std::string tides_mode
Definition: IO.h:182
SEVNpar svpar
Definition: IO.h:198
~IO()
Definition: IO.h:79
std::vector< std::vector< double > > load_auxiliary_table(std::string name) const
Definition: IO.h:330
IO()
Definition: IO.h:57
std::string winds_mode
Definition: IO.h:180
static std::ofstream failedstars
Definition: IO.h:372
static std::ofstream outputfile
Definition: IO.h:374
std::string CIRC_mode
Definition: IO.h:187
static std::vector< std::string > labels_STARMATRIX
Definition: IO.h:396
std::string list_file
Definition: IO.h:407
std::vector< std::string > zstring_HE
Definition: IO.h:415
void print_formatted_ascii(const std::string &filename, std::vector< std::vector< double > > &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint, const std::string &separator, const size_t &_w_id, const size_t &_w_name, const size_t &_w_header, const size_t &_precision, const std::string &comment)
Definition: IO.cpp:445
static std::string logstring
Definition: IO.h:376
void load(int n, char **val)
Definition: IO.cpp:36
void print_csv(std::vector< std::vector< double > > &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint)
Definition: IO.cpp:564
std::vector< size_t > printIDs_binary
Definition: IO.h:172
static std::ofstream liststars
Definition: IO.h:371
int nthreads
Definition: IO.h:177
void reset_log()
Definition: IO.h:106
void log_put(std::string &loginfo)
Definition: IO.cpp:668
void load_stars()
Definition: IO.cpp:126
bool rseed_provided()
Parameters call.
Definition: IO.h:195
std::string output_folder_name
Definition: IO.h:398
std::string tables_dir_HE
Definition: IO.h:407
static std::ofstream logfile
Definition: IO.h:375
std::string SNK_mode
Definition: IO.h:188
void columns_to_print(std::string &list_cols, std::vector< std::string > &printcolumns)
Definition: IO.cpp:585
void print_ascii(std::vector< std::vector< double > > &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint)
Definition: IO.cpp:550
std::vector< std::vector< std::vector< std::vector< double > > > > tables_HE
Definition: IO.h:157
void inspect_tables()
Definition: IO.cpp:242
size_t ntables
Definition: IO.h:175
void print_bin(std::vector< std::vector< double > > &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint)
Definition: IO.cpp:579
void inspect_dirs()
Definition: IO.h:520
void print_failed_initilisation_summary(const size_t &_ID)
Definition: IO.cpp:414
std::vector< std::vector< double > > allzams
Definition: IO.h:159
std::vector< size_t > printIDs_star
Definition: IO.h:171
std::string get_logstring()
Definition: IO.h:105
std::string CE_mode
Definition: IO.h:189
void set_init_variables()
Definition: IO.h:355
bool check_sorted()
Definition: IO.h:610
std::ifstream in
Definition: IO.h:413
std::string binput_mode
Definition: IO.h:179
std::string HARD_mode
Definition: IO.h:186
void print_list_summary(std::ofstream &outstream, std::string basename, const std::string &_name, const unsigned long &_rseed, const size_t &_ID)
Definition: IO.cpp:333
int tablesloaded
Definition: IO.h:202
std::string list_cols_binary
Definition: IO.h:409
SevnLogging svlog
Definition: IO.h:403
std::string mix_mode
Definition: IO.h:184
std::string tables_dir
Definition: IO.h:407
std::string RL_mode
Definition: IO.h:181
std::vector< std::vector< double > > printmatrix
Definition: IO.h:401
std::string get_output_folder_name()
Definition: IO.h:319
std::vector< std::vector< double > > allzams_HE
Definition: IO.h:159
std::vector< std::vector< std::vector< std::vector< double > > > > tables
Definition: IO.h:157
void print_output(std::vector< std::vector< double > > &printmatrix, const std::string &_name, const unsigned long &_rseed, const size_t &_ID, const bool binaryprint=false)
Definition: IO.cpp:297
void fill_matrix(std::vector< std::vector< T > > &matrix, std::ifstream &file, bool reset=false) const
Definition: IO.h:447
std::vector< double > Z_HE
Definition: IO.h:158
std::string COLL_mode
Definition: IO.h:185
std::string list_cols_star
Definition: IO.h:408
std::string SEVNpath
Definition: IO.h:190
std::vector< double > Z
Definition: IO.h:158
std::string get_SEVNpath() const
Definition: IO.h:320
void print_params(std::string filename="used_params.svpar")
Definition: IO.h:252
void read_tables()
Definition: IO.h:428
void set_STARMATRIX_labels()
Definition: IO.h:637
void create_folder(const std::string &name)
Definition: IO.h:287
std::vector< std::string > printcolumns_star
Definition: IO.h:165
Definition: params.h:58
std::string print(bool use_default=false)
Definition: params.h:417
bool get_bool(std::string name)
Definition: params.h:158
Definition: star.h:39
Definition: sevnlog.h:43
void debug(std::string errstate, const char *file_input=nullptr, int line_input=-1) const
Definition: sevnlog.cpp:194
void critical(std::string errstate, const char *file_input=nullptr, int line_input=-1) const
Definition: sevnlog.cpp:85
void pdebug() const
Variadic prints.
Definition: sevnlog.h:191
void warning(std::string errstate, const char *file_input=nullptr, int line_input=-1) const
Definition: sevnlog.cpp:137
Definition: errhand.h:53
Definition: lookup_and_phases.h:17
OutputOption
Definition: lookup_and_phases.h:91
const FILEMAP filemap
Definition: lookup_and_phases.cpp:69
@ _Ntables
Definition: lookup_and_phases.h:38
const INPUTMAPBIN inputmapbin
Definition: lookup_and_phases.cpp:112
const FILEMAP filemap_optional
Definition: lookup_and_phases.cpp:78
const OUTPUTMAP outputmap
Definition: lookup_and_phases.cpp:92