MercuryDPM  0.11
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TangentialSpringUnitTest.cpp File Reference
#include <iostream>
#include "Species/LinearViscoelasticSlidingFrictionSpecies.h"
#include "DPMBase.h"
#include "Particles/BaseParticle.h"
#include "Logger.h"

Go to the source code of this file.

Classes

class  TangentialSpringUnitTest
 In this file, the rolling behaviour of the tangential spring is tested. This is done by placing one normal partilce on top of a fixed partilce and letting graviry roll it over the other particle until it losses contact. More...
 

Functions

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

Variables

Logger< Log::ERRORtestLogger ("Tangential Spring Unit Test")
 

Function Documentation

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

Definition at line 61 of file TangentialSpringUnitTest.cpp.

References BaseHandler< T >::begin(), BaseHandler< T >::copyAndAddObject(), FATAL, DPMBase::getTime(), logger, DPMBase::particleHandler, constants::pi, DPMBase::setGravity(), Files::setName(), DPMBase::setTimeMax(), DPMBase::setTimeStep(), DPMBase::solve(), and DPMBase::speciesHandler.

62 {
63 
64  TangentialSpringUnitTest tangentialSpringUnitTestProblem;
65  auto species = tangentialSpringUnitTestProblem.speciesHandler.copyAndAddObject(LinearViscoelasticSlidingFrictionSpecies());
66  tangentialSpringUnitTestProblem.setName("TangentialSpringUnitTest");
67  species->setDensity(6./constants::pi);
68  species->setCollisionTimeAndRestitutionCoefficient(1e-3,.2,1./8);
69  species->setSlidingStiffness(species->getStiffness()*2/7);
70  species->setSlidingFrictionCoefficient(1e20);
71  tangentialSpringUnitTestProblem.setTimeStep(2e-5);
72  //tangentialSpringUnitTestProblem.setFileType(FileType::NO_FILE);
73  tangentialSpringUnitTestProblem.setGravity(Vec3D(0,0,-1));
74  tangentialSpringUnitTestProblem.setTimeMax(2.5);
75  tangentialSpringUnitTestProblem.solve(argc,argv);
76 
77  std::vector<BaseParticle*>::iterator pIt = tangentialSpringUnitTestProblem.particleHandler.begin();
78 
79  if (!(*pIt)->getPosition().isEqualTo(Vec3D(0.5,0.5,0.25), 1e-7)) logger(FATAL, "First particles is in the wrong position. It is %",(*pIt)->getPosition());
80  if (!(*pIt)->getVelocity().isEqualTo(Vec3D(0.0,0.0,0.0) , 1e-7)) logger(FATAL, "First particle has the wrong velocity");
81  ++pIt;
82 
83  if (!((*pIt)->getPosition().isEqualTo(Vec3D(0.961524052956078, 0.5, 0.450153103106219), 1e-7))) logger(FATAL, "Second particle has the wrong position. It is % at time %",(*pIt)->getPosition(),tangentialSpringUnitTestProblem.getTime());
84  if (!(*pIt)->getVelocity().isEqualTo(Vec3D(0.325869890236916, 0, -0.623251003973752) , 1e-7)) logger(FATAL, "Second particle has the wrong velocity. It is %",(*pIt)->getVelocity());
85  if (!(*pIt)->getAngularVelocity().isEqualTo(Vec3D(0.0,2.11896618998424,0.0) , 1e-7)) logger(FATAL, "Second particles has the wrong angular velocity. It is %", (*pIt)->getAngularVelocity());
86 
87 }
void solve()
The work horse of the code.
Definition: DPMBase.cc:1895
In this file, the rolling behaviour of the tangential spring is tested. This is done by placing one n...
void setTimeMax(Mdouble newTMax)
Allows the upper time limit to be changed.
Definition: DPMBase.cc:179
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
Species< LinearViscoelasticNormalSpecies, SlidingFrictionSpecies > LinearViscoelasticSlidingFrictionSpecies
void setGravity(Vec3D newGravity)
Allows to modify the gravity vector.
Definition: DPMBase.cc:431
const std::vector< T * >::const_iterator begin() const
Gets the begin of the const_iterator over all Object in this BaseHandler.
Definition: BaseHandler.h:482
void setName(const std::string &name)
Allows to set the name of all the files (ene, data, fstat, restart, stat)
Definition: Files.cc:149
U * copyAndAddObject(const U &O)
Creates a copy of a Object and adds it to the BaseHandler.
Definition: BaseHandler.h:268
const Mdouble pi
Definition: ExtendedMath.h:42
ParticleHandler particleHandler
An object of the class ParticleHandler, contains the pointers to all the particles created...
Definition: DPMBase.h:878
LL< Log::FATAL > FATAL
Fatal log level.
Definition: Logger.cc:25
SpeciesHandler speciesHandler
A handler to that stores the species type i.e. elastic, linear visco-elastic... et cetera...
Definition: DPMBase.h:868
void setTimeStep(Mdouble newDt)
Allows the time step dt to be changed.
Definition: DPMBase.cc:353
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:45
Mdouble getTime() const
Access function for the time.
Definition: DPMBase.cc:158

Variable Documentation

Logger<Log::ERROR> testLogger("Tangential Spring Unit Test")