DensitySizeSegregation.cpp File Reference
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cmath>
#include "Chute.h"
#include "Boundaries/PeriodicBoundary.h"
#include "Walls/InfiniteWall.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <Species/LinearViscoelasticFrictionSpecies.h>

Classes

class  SegregationPeriodic
 This class does segregation problems in a periodic chute. More...
 

Functions

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

Function Documentation

◆ main()

int main ( int argc  UNUSED,
char *argv[]  UNUSED 
)
Todo:
TW:should be lightest particle, but computeMass has to be automated first
341 {
343 
344  // Problem parameters, name tmax and two types of particles
345  problem.setName("DensitySizeSegregation");
346  //This should be set to 100 for full problems.
347  problem.setTimeMax(50000);
348  problem.speciesHandler.copyAndAddObject(problem.speciesHandler.getObject(0));
349  problem.speciesHandler.copyAndAddObject(problem.speciesHandler.getObject(0));
350 
351 
352 
353 
354  // Chute properties
355  problem.setFixedParticleRadius(0.5);
356  problem.setRoughBottomType(MULTILAYER);
357  problem.setChuteAngleAndMagnitudeOfGravity(26.0, 1.0);
358  problem.setChuteLength(20);
359  problem.setChuteWidth(10);
360  problem.setZMax(70);
361  problem.setMaxFailed(6);
362  problem.makeChutePeriodic();
363 
364  //solve
366  //std::cout << "Maximum allowed speed of particles: " << problem.particleHandler.getSmallestParticle()->calculateMaximumVelocity() << std::endl; // speed allowed before particles move through each other!
367  problem.setTimeStep(5.e-3 / 50.0);//initially it was auto-set
368  //This is based on the fact in general you get too much data, so prob at worst you want to turn it into a 20 at 60fps (which is its self overkill)
369  problem.setSaveCount(helpers::getSaveCountFromNumberOfSavesAndTimeMaxAndTimeStep(20*60, problem.getTimeMax(), problem.getTimeStep()));
370  //problem.setSaveCount(helpers::getSaveCountFromNumberOfSavesAndTimeMaxAndTimeStep(20*60,getTimeMax(),getTimeStep()));
371  //problem.setSaveCount(1);
372  logger(INFO, "dt=%", problem.getTimeStep());
373 
374  problem.autoNumber();
375 
376 
377  //This set to colouring based of size and small vectors
378  problem.setXBallsColourMode(7);
379  problem.setXBallsVectorScale(1);
380  problem.setXBallsAdditionalArguments("-v0 -solidf");
381 
382 
383  //solves the problems
384  problem.solve();
385 
386  //Make sure the restart data is upto date at the end
387  problem.writeRestartFile();
388 }
@ MULTILAYER
Definition: Chute.h:32
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
This class does segregation problems in a periodic chute.
Definition: Chute/segregation.cpp:18
#define INFO(i)
Definition: mumps_solver.h:54
unsigned int getSaveCountFromNumberOfSavesAndTimeMaxAndTimeStep(unsigned int numberOfSaves, Mdouble timeMax, Mdouble timeStep)
Returns the correct saveCount if the total number of saves, the final time and the time step is known...
Definition: FormulaHelpers.cc:75
Constructor for SteadyAxisymAdvectionDiffusion problem
Definition: steady_axisym_advection_diffusion.cc:213

References helpers::getSaveCountFromNumberOfSavesAndTimeMaxAndTimeStep(), INFO, logger, MULTILAYER, and problem.