CGHandlerSelfTest.cpp File Reference
#include "Mercury3D.h"
#include "StatisticsVector.h"
#include "Walls/InfiniteWall.h"
#include "CG/CG.h"
#include "CG/TimeSmoothedCG.h"
#include "CG/TimeAveragedCG.h"
#include "CG/Functions/Lucy.h"
#include "CG/Functions/Linear.h"
#include "CG/Functions/Heaviside.h"
#include "CG/Functions/Gauss.h"
#include <cmath>
#include <iostream>
#include <iomanip>
#include <Species/LinearViscoelasticSpecies.h>

Classes

class  CGHandlerSelfTest
 In this file a cubic packing of 5^3 particles in a tri-axial box is created and allowed to settle under small gravity. After that Z statistics are calculated. More...
 

Functions

int main (int argc, char *argv[])
 

Function Documentation

◆ main()

int main ( int argc  ,
char argv[] 
)
93 {
94  //declare the DPM problem and set the name
96  problem.setName("CGHandlerSelfTest");
97 
98  //set gravity and the species properties
99  problem.setSystemDimensions(3);
100  problem.setGravity(Vec3D(0., 0., -1.));
101  auto species = problem.speciesHandler.copyAndAddObject(LinearViscoelasticSpecies());
102  species->setDensity(6.0 / constants::pi);
103  species->setCollisionTimeAndRestitutionCoefficient(.01, .1, 1.);
104 
105  //accordingly, set the time step, final time, and save count
106  problem.setTimeStep(.0002);
107  problem.setTimeMax(0.5); //a total of 5000 time steps
108  problem.setSaveCount(20);
109 
110  //define the different coarse-graining objects
112  cg0.statFile.setSaveCount(5);
113  cg0.statFile.setName(problem.getName() + ".LucyO.T.stat");
114  cg0.setTimeMax(0.2);
115  problem.cgHandler.copyAndAddObject(cg0);
116 
118  cg1.setWidthTime(0.01);
119  cg1.setTimeStep(problem.getTimeStep()*problem.dataFile.getSaveCount());
120  cg1.setTimeMax(0.2);
121  cg1.statFile.setSaveCount(5);
122  cg1.statFile.setName(problem.getName() + ".LucyO.TS.stat");
123  problem.cgHandler.copyAndAddObject(cg1);
124 
126  cg2.setTimeMin(0.3);
127  cg2.statFile.setSaveCount(5);
128  cg2.statFile.setName(problem.getName() + ".LucyO.TA.stat");
129  problem.cgHandler.copyAndAddObject(cg2);
130 
131  helpers::writeToFile(problem.getName()+".time.gnu","set title 'check if time-dependent, time-smoothed and time-averaged solutions agree'\n"
132  "set xlabel 't'\n "
133  "set ylabel 'volume-averaged contact force'\n"
134  "p 'CGHandlerSelfTest.LucyO.T.stat' u 1:24 w l t 'time-dependent', 'CGHandlerSelfTest.LucyO.TS.stat' u 1:24 w l t 'time-smoothed', 'CGHandlerSelfTest.LucyO.TA.stat' u (0):24 w p t 'time-averaged'"
135  );
136 
137 
138 // CG<CGCoordinates::Z> cgB;
139 // cgB.setNZ(200);
140 // cgB.setWidth(0.3);
141 // cgB.statFile.setSaveCount(20000);
142 // cgB.statFile.setName(problem.getName() + ".LucyZ.stat");
143 // problem.cgHandler.copyAndAddObject(cgB);
144 //
145 // CG<CGFunctions::LinearZ> cgC;
146 // cgC.setNZ(200);
147 // cgC.setWidth(0.3);
148 // cgC.statFile.setSaveCount(20000);
149 // cgC.statFile.setName(problem.getName() + ".LinearZ.stat");
150 // problem.cgHandler.copyAndAddObject(cgC);
151 //
152 // CG<CGFunctions::HeavisideZ> cgD;
153 // cgD.setNZ(200);
154 // cgD.setWidth(0.3);
155 // cgD.statFile.setSaveCount(20000);
156 // cgD.statFile.setName(problem.getName() + ".HeavisideZ.stat");
157 // problem.cgHandler.copyAndAddObject(cgD);
158 //
159 // CG<CGFunctions::GaussZ> cgE;
160 // cgE.setNZ(200);
161 // cgE.setWidth(0.1);
162 // cgE.statFile.setSaveCount(20000);
163 // cgE.statFile.setName(problem.getName() + ".GaussZ.stat");
164 // problem.cgHandler.copyAndAddObject(cgE);
165 //
166 // CG<CGCoordinates::XZ> cgF;
167 // cgF.setNX(30);
168 // cgF.setNZ(30);
169 // cgF.setWidth(0.45);
170 // cgF.statFile.setSaveCount(20000);
171 // cgF.statFile.setName(problem.getName() + ".LucyXZ.stat");
172 // problem.cgHandler.copyAndAddObject(cgF);
173 //
174 // CG<CGFunctions::LinearXZ> cgG;
175 // cgG.setNX(30);
176 // cgG.setNZ(30);
177 // cgG.setWidth(0.45);
178 // cgG.statFile.setSaveCount(20000);
179 // cgG.statFile.setName(problem.getName() + ".LinearXZ.stat");
180 // problem.cgHandler.copyAndAddObject(cgG);
181 //
182 // CG<CGFunctions::HeavisideXZ> cgH;
183 // cgH.setNX(30);
184 // cgH.setNZ(30);
185 // cgH.setWidth(0.45);
186 // cgH.statFile.setSaveCount(20000);
187 // cgH.statFile.setName(problem.getName() + ".HeavisideXZ.stat");
188 // problem.cgHandler.copyAndAddObject(cgH);
189 //
190 // CG<CGFunctions::GaussXZ> cgI;
191 // cgI.setNX(30);
192 // cgI.setNZ(30);
193 // cgI.setWidth(0.15);
194 // cgI.statFile.setSaveCount(20000);
195 // cgI.statFile.setName(problem.getName() + ".GaussXZ.stat");
196 // problem.cgHandler.copyAndAddObject(cgI);
197 //
198 // CG<CGCoordinates::XYZ> cgJ;
199 // cgJ.setNX(10);
200 // cgJ.setNY(10);
201 // cgJ.setNZ(10);
202 // cgJ.setWidth(0.45);
203 // cgJ.statFile.setSaveCount(20000);
204 // cgJ.statFile.setName(problem.getName() + ".LucyXYZ.stat");
205 // problem.cgHandler.copyAndAddObject(cgJ);
206 //
207 // CG<CGFunctions::LinearXYZ> cgK;
208 // cgK.setNX(10);
209 // cgK.setNY(10);
210 // cgK.setNZ(10);
211 // cgK.setWidth(0.45);
212 // cgK.statFile.setSaveCount(20000);
213 // cgK.statFile.setName(problem.getName() + ".LinearXYZ.stat");
214 // problem.cgHandler.copyAndAddObject(cgK);
215 //
216 // CG<CGFunctions::HeavisideXYZ> cgL;
217 // cgL.setNX(10);
218 // cgL.setNY(10);
219 // cgL.setNZ(10);
220 // cgL.setWidth(0.45);
221 // cgL.statFile.setSaveCount(20000);
222 // cgL.statFile.setName(problem.getName() + ".HeavisideXYZ.stat");
223 // problem.cgHandler.copyAndAddObject(cgL);
224 //
225 // CG<CGFunctions::GaussXYZ> cgM;
226 // cgM.setNX(10);
227 // cgM.setNY(10);
228 // cgM.setNZ(10);
229 // cgM.setWidth(0.15);
230 // cgM.statFile.setSaveCount(20000);
231 // cgM.statFile.setName(problem.getName() + ".GaussXYZ.stat");
232 // problem.cgHandler.copyAndAddObject(cgM);
233 //
234 // CG<CGFunctions::GaussY> cg7;
235 // cg7.setNY(200);
236 // cg7.setWidth(0.15);
237 // cg7.statFile.setSaveCount(20000);
238 // cg7.statFile.setName(problem.getName() + ".GaussY.stat");
239 // problem.cgHandler.copyAndAddObject(cg7);
240 //
241 // CG<CGFunctions::GaussX> cg8;
242 // cg8.setNX(200);
243 // cg8.setWidth(0.15);
244 // cg8.statFile.setSaveCount(20000);
245 // cg8.statFile.setName(problem.getName() + ".GaussX.stat");
246 // problem.cgHandler.copyAndAddObject(cg8);
247 //
248 // CG<CGFunctions::GaussYZ> cg9;
249 // cg9.setNY(30);
250 // cg9.setNZ(30);
251 // cg9.setWidth(0.15);
252 // cg9.statFile.setSaveCount(20000);
253 // cg9.statFile.setName(problem.getName() + ".GaussYZ.stat");
254 // problem.cgHandler.copyAndAddObject(cg9);
255 //
256 // CG<CGFunctions::GaussXY> cgA;
257 // cgA.setNX(30);
258 // cgA.setNY(30);
259 // cgA.setWidth(0.15);
260 // cgA.statFile.setSaveCount(20000);
261 // cgA.statFile.setName(problem.getName() + ".GaussXY.stat");
262 // problem.cgHandler.copyAndAddObject(cgA);
263 
264  //run the simulation
265  problem.solve(argc, argv);
266 }
Species< LinearViscoelasticNormalSpecies > LinearViscoelasticSpecies
Definition: LinearViscoelasticSpecies.h:11
File statFile
File class to handle the output into a .stat file.
Definition: BaseCG.h:363
void setTimeMin(Mdouble timeMin)
Sets timeMin_, the lower limit of the temporal domain.
Definition: BaseCG.cc:125
void setTimeMax(Mdouble timeMax)
Sets timeMax_, the upper limit of the temporal domain.
Definition: BaseCG.cc:130
In this file a cubic packing of 5^3 particles in a tri-axial box is created and allowed to settle und...
Definition: CGHandlerLargeSelfTest.cpp:18
Evaluates time-resolved continuum fields and writes the data into a stat file.
Definition: CG.h:55
void setName(const std::string &name)
Sets the file name, e.g. "Name.data".
Definition: File.cc:176
void setSaveCount(unsigned int saveCount)
Sets File::saveCount_.
Definition: File.cc:251
Evaluates time-averaged continuum fields and writes the data into a stat file.
Definition: TimeAveragedCG.h:39
Evaluates time-smoothed continuum fields and writes the data into a stat file.
Definition: TimeSmoothedCG.h:40
void setTimeStep(Mdouble timeStep) final
void setWidthTime(Mdouble widthTime) final
Definition: Kernel/Math/Vector.h:30
const Mdouble pi
Definition: ExtendedMath.h:23
bool writeToFile(const std::string &filename, const std::string &filecontent)
Writes a string to a file.
Definition: FileIOHelpers.cc:29
Constructor for SteadyAxisymAdvectionDiffusion problem
Definition: steady_axisym_advection_diffusion.cc:213

References constants::pi, problem, File::setName(), File::setSaveCount(), BaseCG::setTimeMax(), BaseCG::setTimeMin(), TimeSmoothedCG< Coordinates, BaseFunction, Fields >::setTimeStep(), TimeSmoothedCG< Coordinates, BaseFunction, Fields >::setWidthTime(), BaseCG::statFile, and helpers::writeToFile().