MonodispersedDrum.cpp File Reference
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cmath>
#include "Mercury3D.h"
#include "Species/LinearViscoelasticFrictionSpecies.h"
#include "Walls/AxisymmetricIntersectionOfWalls.h"
#include "Walls/InfiniteWall.h"
#include "Boundaries/PeriodicBoundary.h"
#include <chrono>

Classes

class  DrumRot
 

Functions

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

Function Documentation

◆ main()

int main ( int argc  ,
char argv[] 
)
306 {
307 
308  // Start measuring elapsed time
309  //std::chrono::time_point<std::chrono::system_clock> startClock, endClock;
310  //startClock = std::chrono::system_clock::now();
311 
312 
314  problem.setName("MonodisperesedDrum");
315 
316  //setting locally-available variables to define key
317  //parameters such that they can be automatically included in
318  //the name of the file
319  //*******************Excitation Properties*****************************************
320  //Drum rotation rate (rpm)
321  double rotRateBasal = 1.0;
322 
323  //*******************Frictional Properties*****************************************
324  //sliding friction for species 1, 2 and wall
325  double muSWall = 0.61;
326  double muS1 = 0.19;
327 
328  //rolling friction for species 1, 2 and wall
329  double muRWall = 0.06;
330  double muR1 = 0.01;
331 
332  //torsion friction for species 1, 2 and wall
333  double muTWall = 0.0;
334  double muT1 = 0.000;
335 
336  double dimDrumRad = 15.0;
337  double drumRad = dimDrumRad*0.0005; // 45 * smallest particle radius -> dimDrumRad particles fit in drum diameter
338  //the dimensionless drum length (L/d_l)
339  double dimDrumLength = 4.0;
340  double drumLength = dimDrumLength*0.001; // dimDrumLength * smallest particle diameter
341 
342  // computes rpm based on froude number and drumRad
343  problem.setTimeMax(3.0);
344  problem.setTimeStep(1.0/(4000.0 * 50.0));
345  double froudeNumber = 0.22;
346  double rotRate = pow(froudeNumber*9.81/drumRad,0.5);//*(60.0/(2.0*3.1415926535));
347  logger(INFO, "rotRate = %", rotRate);
348  //Set the number of domains for parallel decomposition
349  //problem.setNumberOfDomains({2,1,1});
350 
351  //*******************Setting Up Filename******************************************
352  double dRatio;
353  double rhoRatio;
354 
355 
356 
357  problem.setDrumRadius(drumRad);// in meters
358 
359  problem.setXMin(-problem.getDrumRadius());
360  problem.setYMin(-0.5*drumLength);
361  problem.setZMin(-problem.getDrumRadius());
362 
363  problem.setXMax(problem.getDrumRadius());
364  problem.setYMax(0.5*drumLength);// in meters
365  problem.setZMax(problem.getDrumRadius());
366 
367  problem.setGravity(Vec3D(0.,0.,-9.81));
368  problem.setCOR(0.831,0.831);//drumWall, species1, species2
369  problem.setFractionalPolydispersity(0.0);//10% dispersity
370  problem.setDrumFillFraction(0.2);// At 0.5 the drum is 3/4 filled.
371  //redundant
372  //problem.setFrictionCoeff(.6,.19);//(particle-wall-friction,part-part-friction)
373  problem.setSlidingFriction(muSWall,muS1); //wall, species1, species2
374  problem.setRollingFriction(muRWall,muR1); //wall, species1, species2
375  problem.setTorsionFriction(muTWall,muT1); //wall, species1, species2
376 
377  problem.setRevolutionSpeed(rotRate);//rpm
378 
379  problem.setSaveCount(2000);
380  problem.readArguments(argc,argv);
381 
382  problem.dataFile.setFileType(FileType::ONE_FILE);
383  problem.restartFile.setFileType(FileType::ONE_FILE);
384  problem.fStatFile.setFileType(FileType::ONE_FILE);
385  problem.eneFile.setFileType(FileType::ONE_FILE);
386 
387  problem.solve();
388 
389  return 0;
390 }
@ 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.
Definition: MonodispersedDrum.cpp:17
EIGEN_DEVICE_FUNC const GlobalUnaryPowReturnType< Derived, ScalarExponent > pow(const Eigen::ArrayBase< Derived > &x, const ScalarExponent &exponent)
Definition: GlobalFunctions.h:137
Definition: Kernel/Math/Vector.h:30
#define INFO(i)
Definition: mumps_solver.h:54
Constructor for SteadyAxisymAdvectionDiffusion problem
Definition: steady_axisym_advection_diffusion.cc:213

References INFO, logger, ONE_FILE, Eigen::ArrayBase< Derived >::pow(), and problem.