SlowDown Algorithmic Regularization (SDAR)
Algorithmic Regularization with slowdown method for integrating few-body motions
io.h
Go to the documentation of this file.
1 #pragma once
2 #include <vector>
3 
4 namespace COMM {
5 
8  std::vector<double*> d_f64;
9  std::vector<long long int*> d_s64;
10  std::vector<int*> d_s32;
11  std::vector<std::string*> d_str;
12 
13  public:
14  void store(double* _item) {
15  d_f64.push_back(_item);
16  }
17 
18  void store(long long int* _item) {
19  d_s64.push_back(_item);
20  }
21 
22  void store(int* _item) {
23  d_s32.push_back(_item);
24  }
25 
26  void store(std::string* _item) {
27  d_str.push_back(_item);
28  }
29 
30  void writeAscii(FILE *_fout) {
31  for(size_t i=0; i<d_f64.size(); i++) fprintf(_fout, "%26.15e ", *d_f64[i]);
32  for(size_t i=0; i<d_s64.size(); i++) fprintf(_fout, "%lld ", *d_s64[i]);
33  for(size_t i=0; i<d_s32.size(); i++) fprintf(_fout, "%d ", *d_s32[i]);
34  for(size_t i=0; i<d_str.size(); i++) fprintf(_fout, "%s ",d_str[i]->c_str());
35  fprintf(_fout,"\n");
36  }
37 
38  void readAscii(FILE *_fin) {
39  size_t rcount=0;
40  for(size_t i=0; i<d_f64.size(); i++) {
41  rcount=fscanf(_fin, "%lf ", d_f64[i]);
42  if (rcount<1) {
43  std::cerr<<"Error: Data reading fails! requiring data number is 1, only obtain "<<rcount<<".\n";
44  abort();
45  }
46  }
47  for(size_t i=0; i<d_s64.size(); i++) {
48  rcount=fscanf(_fin, "%lld ", d_s64[i]);
49  if (rcount<1) {
50  std::cerr<<"Error: Data reading fails! requiring data number is 1, only obtain "<<rcount<<".\n";
51  abort();
52  }
53  }
54  for(size_t i=0; i<d_s32.size(); i++) {
55  rcount=fscanf(_fin, "%d ", d_s32[i]);
56  if (rcount<1) {
57  std::cerr<<"Error: Data reading fails! requiring data number is 1, only obtain "<<rcount<<".\n";
58  abort();
59  }
60  }
61  for(size_t i=0; i<d_str.size(); i++) {
62  char dtmp[1024];
63  rcount=fscanf(_fin, "%s ", dtmp);
64  if (rcount<1) {
65  std::cerr<<"Error: Data reading fails! requiring data number is 1, only obtain "<<rcount<<".\n";
66  abort();
67  }
68  *d_str[i] = dtmp;
69  }
70  }
71 
72  };
73 
74  // IO Params
75  template <class Type>
76  struct IOParams{
77  Type value;
78  const char* name;
79  const char* defaulted;
80 
81  IOParams(IOParamsContainer& _ioc, const Type& _value, const char* _name, const char* _defaulted=NULL): value(_value), name(_name), defaulted(_defaulted) {
82  _ioc.store(&value);
83  }
84 
85  void print(std::ostream& os) const{
86  os<<name<<": "<<value<<std::endl;
87  }
88  };
89 
90  template <class Type>
91  std::ostream& operator <<(std::ostream& os, const IOParams<Type>& par) {
92  if (par.defaulted!=NULL) os<<par.name<<": "<<par.defaulted;
93  else os<<par.name<<": "<<par.value;
94  return os;
95  }
96 }
COMM
Definition: binary_tree.h:8
COMM::IOParams::value
Type value
Definition: io.h:77
COMM::IOParamsContainer
IO Params container.
Definition: io.h:7
COMM::IOParamsContainer::store
void store(long long int *_item)
Definition: io.h:18
COMM::IOParamsContainer::store
void store(int *_item)
Definition: io.h:22
COMM::IOParams::print
void print(std::ostream &os) const
Definition: io.h:85
COMM::IOParamsContainer::store
void store(double *_item)
Definition: io.h:14
COMM::IOParams::IOParams
IOParams(IOParamsContainer &_ioc, const Type &_value, const char *_name, const char *_defaulted=NULL)
Definition: io.h:81
COMM::operator<<
std::ostream & operator<<(std::ostream &os, const IOParams< Type > &par)
Definition: io.h:91
COMM::IOParamsContainer::readAscii
void readAscii(FILE *_fin)
Definition: io.h:38
COMM::IOParamsContainer::writeAscii
void writeAscii(FILE *_fout)
Definition: io.h:30
COMM::IOParams::defaulted
const char * defaulted
Definition: io.h:79
COMM::IOParams
Definition: io.h:76
COMM::IOParams::name
const char * name
Definition: io.h:78
COMM::IOParamsContainer::store
void store(std::string *_item)
Definition: io.h:26