17 #include "../Dem/Xml.h"
30 vector <string> flags ;
32 vector <vector <double> > boundaries ;
36 string save =
"CoarseGrained";
37 double windowsize = 1 ;
38 double cuttoff = 2.5 ;
45 if (!in.is_open()) { printf(
"[Input] file cannot be open\n"); return ;}
52 auto pbcprint = [](
int a) {
string s =
"" ;
for (;
a>0;
a>>=1) s = ((
a&1)?
"y":
"n") + s ;
return s ;} ;
53 printf(
"\n-----\n%s\nSkipping: %d\nFinal time: %d\nDensity: %g\nFlags: ", dump.c_str(), skipT, maxT, rho) ;
54 for (
auto v: flags) printf(
"%s ", v.c_str()) ;
56 for (
auto v: boxes) printf(
"%d ", v) ;
57 printf(
"\nPBCs: %s\nWindowSize: %g\nCut-off: %g\nDeltas: ", pbcprint(pbc).c_str(), windowsize, cuttoff) ;
58 for (
auto v: Delta) printf(
"%g ", v) ;
59 printf(
"\nBoundaries:") ;
60 for (
auto v:boundaries)
66 printf(
"\n-----\n\n") ; fflush(stdout) ;
69 int parsing (istream & in) ;
76 char line[5000] ;
int id ;
int rien, dimension ;
double mass,
radius ;
79 if (line[0]==
'#') {in.getline(line, 5000) ;
return 0; }
81 if (!strcmp(line,
"directory"))
86 if (! experimental::filesystem::exists(dump))
88 printf(
"[ERR] file do not exist: %s\n", dump.c_str());
91 else if (!strcmp(line,
"dimensions"))
93 in >> dimension ; in >> rien ;
94 Delta.resize(dimension, 0) ;
95 boxes.resize(dimension, 0) ;
96 boundaries.resize(2, vector<double> (dimension, 0)) ;
98 else if (!strcmp(line,
"boundary"))
100 int walldim ;
char type[50] ;
double dmin, dmax ;
101 in >> walldim ; in >>
type ; in>>dmin ; in >> dmax ;
102 boundaries[0][walldim]= dmin ;
103 boundaries[1][walldim]= dmax ;
104 if (!strcmp(
type,
"PBC"))
106 pbc |= (1<<walldim) ;
107 Delta[walldim] = dmax-dmin ;
111 else if (!strcmp(line,
"gravity")) {in.getline(line, 5000) ;
return 1; }
112 else if (!strcmp(line,
"set"))
115 if (!strcmp(line,
"rho")) in >> rho ;
116 else if (!strcmp(line,
"Kn")) {in.getline(line, 5000) ;
return 1;}
117 else if (!strcmp(line,
"Kt")) {in.getline(line, 5000) ;
return 1;}
118 else if (!strcmp(line,
"GammaN")) {in.getline(line, 5000) ;
return 1;}
119 else if (!strcmp(line,
"GammaT")) {in.getline(line, 5000) ;
return 1;}
120 else if (!strcmp(line,
"Mu")) {in.getline(line, 5000) ;
return 1;}
121 else if (!strcmp(line,
"T")) {in.getline(line, 5000) ;
return 1;}
122 else if (!strcmp(line,
"tdump")) {in.getline(line, 5000) ;
return 1;}
123 else if (!strcmp(line,
"orientationtracking")) {in.getline(line, 5000) ;
return 1;}
124 else if (!strcmp(line,
"skin")) {in.getline(line, 5000) ;
return 1;}
125 else if (!strcmp(line,
"dumps")) {in.getline(line, 5000) ;
return 1;}
126 else if (!strcmp(line,
"tinfo")) {in.getline(line, 5000) ;
return 1;}
127 else if (!strcmp(line,
"dt")) {in.getline(line, 5000) ;
return 1;}
129 else if (!strcmp(line,
"radius"))
131 int id ;
double value ;
132 in >> id ; in>>
value ;
135 else if (!strcmp(line,
"mass"))
137 int id ;
double value ;
138 in >> id ; in>>
value ;
141 else if (!strcmp(line,
"auto"))
144 if (!strcmp(line,
"rho"))
148 else if (!strcmp(line,
"location")) {in.getline(line, 5000) ;
return 1; }
149 else if (!strcmp(line,
"inertia")) {in.getline(line, 5000) ;
return 1 ; }
150 else if (!strcmp(line,
"mass")) {in.getline(line, 5000) ;
return 1 ; }
152 else if (!strcmp(line,
"CG"))
155 if (!strcmp(line,
"skiptime")) in >> skipT ;
156 else if (!strcmp(line,
"maxtime")) in >> maxT ;
157 else if (!strcmp(line,
"flags"))
160 for (
int i=0 ; i<nb ; i++)
163 flags.push_back(line) ;
166 else if (!strcmp(line,
"boxes"))
167 for (
auto &v : boxes)
169 else if (!strcmp(line,
"bound"))
171 int dim ;
double bmin, bmax ;
172 in>>dim >> bmin >> bmax ;
173 boundaries[0][dim] = bmin ;
174 boundaries[1][dim] = bmax ;
176 else if (!strcmp(line,
"radius"))
178 else if (!strcmp(line,
"windowsize"))
181 cuttoff = 2*windowsize ;
183 else if (!strcmp(line,
"cutoff"))
188 printf(
"[Input] Unknown command in input file |CG %s|\n", line) ;
190 else if (!strcmp(line,
"location")){in.getline(line, 5000) ;
return 1 ; }
191 else if (!strcmp(line,
"velocity")){in.getline(line, 5000) ;
return 1 ; }
192 else if (!strcmp(line,
"omega")){in.getline(line, 5000) ;
return 1 ; }
193 else if (!strcmp(line,
"freeze")){in.getline(line, 5000) ;
return 1 ; }
194 else if (!strcmp(line,
"gravity")){in.getline(line, 5000) ;
return 1 ; }
195 else if (!strcmp(line,
"gravityangle")){in.getline(line, 5000) ;
return 1 ; }
196 else if (!strcmp(line,
"event")) {in.getline(line, 5000) ;
return 1 ; }
198 printf(
"[Input] Unknown command in input file |%s|\n", line) ;
double Volume(int d, double R)
Compute a sphere volume in dimension D.
Definition: Coarsing.cpp:1785
@ radius
Definition: Typedefs.h:19
@ mass
Definition: Typedefs.h:19
type
The type the bitset is encoded with.
Definition: bitset.hpp:44
void save(Archive &ar, SetT const &set)
Definition: set.hpp:42
Definition: json.hpp:5678
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1282
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1181
Contains the parameters of the simulation & CG.
Definition: IOLiggghts.h:67
void disp()
Definition: IONDDEM.h:50
string dump
Definition: IONDDEM.h:26
int parsing(istream &in)
Definition: IONDDEM.h:74
double rho
Definition: IONDDEM.h:29
void from_file(char path[])
Definition: IONDDEM.h:40
vector< double > radius
Definition: IONDDEM.h:35
vector< double > Delta
Definition: IONDDEM.h:34