SinterForceUnitTest.cpp File Reference
#include "DPMBase.h"
#include <iostream>
#include <vector>
#include <Species/SinterSpecies.h>
#include <Logger.h>

Classes

class  SinterForceUnitTest
 [T11:contactModel] More...
 

Functions

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

Function Documentation

◆ main()

int main ( int argc  UNUSED,
char *argv[]  UNUSED 
)
58 {
60  double k1=5.0;
61  sf.radius = 2e-6;
63  sf.species->setPlasticParameters(k1, 5.0*k1, k1, 0.5);
65  sf.setSystemDimensions(3);
66  sf.species->setSinterRate(1000);
67 
69  sf.species->setDissipation(5e5*mass);
70  sf.setTimeStep(sf.species->computeTimeStep(mass)*2.0);
71  sf.setTimeMax(sf.getTimeStep()*400.0);
73  sf.setSaveCount(1);
74 
75  logger(INFO,"Testing particle particles collision for elastic plastic forces. \n"
76  "This will be done for several values of scaled relative velocity chi");
77 
78  //Set up constant data that will be used
79  const std::vector<double> chi = {0.34, 0.69, 1.05, 1.25};
80 
81  //Loop over all test cases
82  for (int i=0; i<4; i++)
83  {
84  logger(INFO, "Running for chi=%",chi[i]);
85  sf.set_chi(chi[i]);
86  std::stringstream ss("");
87  ss << "SinterForceUnitTest" << sf.get_chi();
88  sf.setName(ss.str().c_str());
89  sf.solve();
90  sf.writeRestartFile();
91  }
92 
93  //A longer simulation, with sintering activated
94  sf.set_chi(1.15);
95  sf.setName("LongSinterForceUnitTest");
96  sf.setSaveCount(2500);
97  sf.setTimeMax(5e-4);
98  sf.solve();
99  sf.writeRestartFile();
100 
101  logger(INFO, "Execute 'gnuplot SinterForceUnitTest.gnu' to view output");
102  helpers::writeToFile("SinterForceUnitTest.gnu",
103  "set xlabel 'displacement'\n"
104  "set ylabel 'force'\n"
105  "plot 'SinterForceUnitTest1.05.fstat' u 7:9 w lp\n"
106  );
107 
108  logger(INFO, "Execute 'gnuplot LongSinterForceUnitTest.gnu' to view output");
109  helpers::writeToFile("LongSinterForceUnitTest.gnu",
110  "sinterRate = 1000\n"
111  "radius = 2e-6\n"
112  "set xlabel 'time'\n"
113  "set ylabel 'displacement'\n"
114  "plot 'LongSinterForceUnitTest.fstat' u 1:(sqrt(2.0*$7/radius)), sqrt((sinterRate*x)+0.5**2)\n"
115  //"plot 'LongSinterForceUnitTest.fstat' u 1:(sqrt(2.0*$7/radius)), sqrt((2.0/radius*sinterRate*x)+0.77**2)\n"
116  //"plot 'LongSinterForceUnitTest.fstat' u 1:(sqrt(2.0*$7/radius)), sqrt(sinterRate*x)\n"
117  );
118 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
@ ONE_FILE
all data will be written into/ read from a single file called name_
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
void setSaveCount(unsigned int saveCount)
Sets File::saveCount_ for all files (ene, data, fstat, restart, stat)
Definition: DPMBase.cc:386
void setName(const std::string &name)
Allows to set the name of all the files (ene, data, fstat, restart, stat)
Definition: DPMBase.cc:400
Mdouble getTimeStep() const
Returns the simulation time step.
Definition: DPMBase.cc:1241
void setParticleDimensions(unsigned int particleDimensions)
Sets the particle dimensionality.
Definition: DPMBase.cc:1439
void setFileType(FileType fileType)
Sets File::fileType_ for all files (ene, data, fstat, restart, stat)
Definition: DPMBase.cc:437
virtual void writeRestartFile()
Stores all the particle data for current save time step to a "restart" file, which is a file simply i...
Definition: DPMBase.cc:2979
void setTimeStep(Mdouble newDt)
Sets a new value for the simulation time step.
Definition: DPMBase.cc:1225
void setTimeMax(Mdouble newTMax)
Sets a new value for the maximum simulation duration.
Definition: DPMBase.cc:864
void setSystemDimensions(unsigned int newDim)
Sets the system dimensionality.
Definition: DPMBase.cc:1408
void solve()
The work horse of the code.
Definition: DPMBase.cc:4334
void setDensity(Mdouble density)
Definition: ParticleSpecies.cc:88
Mdouble getDensity() const
Allows density_ to be accessed.
Definition: ParticleSpecies.cc:98
[T11:contactModel]
Definition: SinterForceUnitTest.cpp:15
SinterSpecies * species
Definition: SinterForceUnitTest.cpp:54
void set_chi(double new_)
Definition: SinterForceUnitTest.cpp:49
Mdouble radius
Definition: SinterForceUnitTest.cpp:53
double get_chi()
Definition: SinterForceUnitTest.cpp:50
#define INFO(i)
Definition: mumps_solver.h:54
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
T cubic(const T val)
calculates the cube of a number
Definition: ExtendedMath.h:95

References mathsFunc::cubic(), e(), SinterForceUnitTest::get_chi(), ParticleSpecies::getDensity(), DPMBase::getTimeStep(), i, INFO, logger, ONE_FILE, constants::pi, SinterForceUnitTest::radius, SinterForceUnitTest::set_chi(), ParticleSpecies::setDensity(), DPMBase::setFileType(), DPMBase::setName(), DPMBase::setParticleDimensions(), DPMBase::setSaveCount(), DPMBase::setSystemDimensions(), DPMBase::setTimeMax(), DPMBase::setTimeStep(), DPMBase::solve(), SinterForceUnitTest::species, DPMBase::writeRestartFile(), and helpers::writeToFile().