Particles on a chute with a multilayered bottom

Problem description:

File roughBottomSelfTest.cpp treats particles cascading down an inclined chute with a rough bottom consisting of multiple layers of fixed particles. The entire code of this problem can be viewed here: Particles on a chute with a multilayered bottom.

Headers

Before the main function

Main function

int main()
{
//Print description
logger(INFO, "\nDemo of the chute flow with a rough bottom");
//Construct the problem and assign a name
Chute roughBottomSelfTest;
roughBottomSelfTest.setName("roughBottomMultiLayer");
//Set time stepping parameters
roughBottomSelfTest.setTimeStep(1e-4);
roughBottomSelfTest.setTimeMax(0.1);
//Set output parameter: write to the output files every 50 time steps
roughBottomSelfTest.setSaveCount(50);
//Set the particle radii and the type of the rough bottom
roughBottomSelfTest.setInflowParticleRadius(0.5);
roughBottomSelfTest.setFixedParticleRadius(0.5);
roughBottomSelfTest.setRoughBottomType(MULTILAYER);
//Set the particle properties
species->setDensity(6.0/constants::pi);
species->setStiffness(2e5);
species->setDissipation(25.0);
//Set the chute properties
roughBottomSelfTest.setChuteAngleAndMagnitudeOfGravity(24.0, 1.0);
roughBottomSelfTest.setChuteLength(3.0);
roughBottomSelfTest.setChuteWidth(3.0);
//Solve the system
roughBottomSelfTest.solve();
}
@ MULTILAYER
Definition: Chute.h:32
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Species< LinearViscoelasticNormalSpecies > LinearViscoelasticSpecies
Definition: LinearViscoelasticSpecies.h:11
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
int main(int argc, char *argv[])
Definition: T_protectiveWall.cpp:194
std::enable_if<!std::is_pointer< U >::value, U * >::type copyAndAddObject(const U &object)
Creates a copy of a Object and adds it to the BaseHandler.
Definition: BaseHandler.h:360
Creates chutes with different bottoms. Inherits from Mercury3D (-> MercuryBase -> DPMBase).
Definition: Chute.h:44
void setChuteWidth(Mdouble chuteWidth)
Sets the chute width (Y-direction)
Definition: Chute.cc:1018
void setInflowParticleRadius(Mdouble inflowParticleRadius)
Sets the radius of the inflow particles to a single one (i.e. ensures a monodisperse inflow).
Definition: Chute.cc:827
void setRoughBottomType(RoughBottomType roughBottomType)
Sets the type of rough bottom of the chute.
Definition: Chute.cc:693
virtual void setChuteLength(Mdouble chuteLength)
Sets the chute length (X-direction)
Definition: Chute.cc:1038
void setChuteAngleAndMagnitudeOfGravity(Mdouble chuteAngle, Mdouble gravity)
Sets gravity vector according to chute angle (in degrees)
Definition: Chute.cc:768
void setFixedParticleRadius(Mdouble fixedParticleRadius)
Sets the particle radius of the fixed particles which constitute the (rough) chute bottom.
Definition: Chute.cc:632
void setSaveCount(unsigned int saveCount)
Sets File::saveCount_ for all files (ene, data, fstat, restart, stat)
Definition: DPMBase.cc:386
SpeciesHandler speciesHandler
A handler to that stores the species type i.e. LinearViscoelasticSpecies, etc.
Definition: DPMBase.h:1433
void setName(const std::string &name)
Allows to set the name of all the files (ene, data, fstat, restart, stat)
Definition: DPMBase.cc:400
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 solve()
The work horse of the code.
Definition: DPMBase.cc:4334
void setDissipation(Mdouble dissipation)
Allows the normal dissipation to be changed.
Definition: LinearViscoelasticNormalSpecies.cc:96
void setStiffness(Mdouble new_k)
Allows the spring constant to be changed.
Definition: LinearViscoelasticNormalSpecies.cc:72
void setDensity(Mdouble density)
Definition: ParticleSpecies.cc:88
#define INFO(i)
Definition: mumps_solver.h:54
const Mdouble pi
Definition: ExtendedMath.h:23

Reference:

Thornton, A. R., Weinhart, T., Luding, S., & Bokhove, O. (2012). Frictional dependence of shallow-granular flows from discrete particle simulations. The European Physical Journal E, 35(12), 127.
Weinhart, T., Thornton, A. R., Luding, S., & Bokhove, O. (2012). Closure relations for shallow granular flows from particle simulations. Granular matter, 14(4), 531-552.

(Return to Overview of advanced tutorials)