MercuryDPM  0.10
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Chute Class Reference

Chute adds three new effects to the HGrid: the gravity direction can be set using the ChuteAngle variable, a (smooth or rough) bottom wall is created by default, and some basic inflow and outflow routines are added. More...

#include <Chute.h>

+ Inheritance diagram for Chute:

Public Member Functions

 Chute ()
 This is the default constructor. All it does is set sensible defaults. More...
 
 Chute (MD &other)
 Copy-constructor for creates an HGRID problem from an existing MD problem. More...
 
 Chute (HGRID_base &other)
 
 Chute (HGRID_3D &other)
 
void constructor ()
 This is the actual constructor; it is called do both constructors above. More...
 
void make_chute_periodic ()
 This makes the chute periodic, in y. More...
 
bool get_IsPeriodic ()
 Get wether the chute is periodic. More...
 
void setup_particles_initial_conditions ()
 initialize particle position, velocity, radius More...
 
void read (std::istream &is)
 This function reads all chute data. More...
 
virtual void write (std::ostream &os)
 This function writes all chute data. More...
 
void print (std::ostream &os, bool print_all=false)
 This function std::couts all chute data. More...
 
void set_FixedParticleRadius (Mdouble new_)
 Allows radius of fixed particles to be changed. More...
 
Mdouble get_FixedParticleRadius ()
 Allows radius of fixed particles to be accessed. More...
 
void set_RandomizedBottom (int new_)
 Changes RandomizedBottom. More...
 
int get_RandomizedBottom ()
 Accesses RandomizedBottom. More...
 
void set_ChuteAngle (Mdouble new_)
 Sets gravity vector according to chute angle (in degrees) More...
 
void set_ChuteAngle (Mdouble new_, Mdouble gravity)
 Sets gravity vector according to chute angle (in degrees) More...
 
Mdouble get_ChuteAngle ()
 Gets chute angle (in radians) More...
 
Mdouble get_ChuteAngleDegrees ()
 
void set_max_failed (unsigned int new_)
 Allows radius of fixed particles to be changed. More...
 
unsigned int get_max_failed ()
 Allows radius of fixed particles to be accessed. More...
 
void set_InflowParticleRadius (Mdouble new_)
 Allows radius of inflow particles to be changed. More...
 
void set_InflowParticleRadius (Mdouble new_min, Mdouble new_max)
 Allows radius of inflow particles to be set to a range of values. More...
 
void set_MinInflowParticleRadius (Mdouble new_min)
 
void set_MaxInflowParticleRadius (Mdouble new_max)
 
Mdouble get_InflowParticleRadius ()
 Allows radius of inflow particles to be accessed. More...
 
Mdouble get_MinInflowParticleRadius ()
 Allows radius of inflow particles to be accessed. More...
 
Mdouble get_MaxInflowParticleRadius ()
 Allows radius of inflow particles to be accessed. More...
 
void set_InflowHeight (Mdouble new_)
 Changes inflow height. More...
 
Mdouble get_InflowHeight ()
 Accesses inflow height. More...
 
void set_InflowVelocity (Mdouble new_)
 Changes inflow velocity. More...
 
Mdouble get_InflowVelocity ()
 Accesses inflow velocity. More...
 
void set_InflowVelocityVariance (Mdouble new_)
 Changes inflow velocity variance. More...
 
Mdouble get_InflowVelocityVariance ()
 Accesses inflow velocity variance. More...
 
void set_InitialHeight (Mdouble new_)
 
Mdouble get_InitialHeight ()
 
void set_InitialVelocity (Mdouble new_)
 
Mdouble get_InitialVelocity ()
 
void set_InitialVelocityVariance (Mdouble new_)
 
Mdouble get_InitialVelocityVariance ()
 
void set_ChuteWidth (Mdouble new_)
 Access function that set the width of the chute. More...
 
Mdouble get_ChuteWidth ()
 
virtual void set_ChuteLength (Mdouble new_)
 
Mdouble get_ChuteLength ()
 
int readNextArgument (unsigned int &i, unsigned int argc, char *argv[])
 
void set_collision_time_and_restitution_coefficient (Mdouble tc, Mdouble eps)
 Sets k, disp such that it matches a given tc and eps for a collision of two inflow particles. More...
 
Mdouble get_collision_time ()
 Calculates collision time of two inflow particles. More...
 
Mdouble get_restitution_coefficient ()
 Calculates restitution coefficient of two inflow particles. More...
 
void set_dt ()
 Sets dt to 1/50-th of the collision time for two particles of mass P. More...
 
void set_dt (Mdouble dt)
 Sets dt. More...
 
BaseParticlegetSmallestParticle ()
 Returns the smallest particle (by mass) in the system. More...
 
BaseParticlegetLargestParticle ()
 Returns the smallest particle (by mass) in the system. More...
 
BaseParticleget_P0 ()
 
Mdouble get_SmallestParticleInteractionRadius ()
 Returns the radius of the smallest particle. More...
 
Mdouble get_LightestParticleMass ()
 Returns the radius of the smallest particle. More...
 
- Public Member Functions inherited from HGRID_3D
 HGRID_3D ()
 This is the default constructor. All it does is set senible defaults. More...
 
 HGRID_3D (MD &other)
 Copy-constructor for creates an HGRID problem from an existing MD problem. More...
 
 HGRID_3D (HGRID_base &other)
 
void constructor ()
 This is the actually constructor it is called do both constructors above. More...
 
- Public Member Functions inherited from HGRID_base
 HGRID_base ()
 This is the default constructor. All it does is set senible defaults. More...
 
 ~HGRID_base ()
 This is the default destructor. More...
 
 HGRID_base (MD &other)
 Copy-constructor for creates an HGRID problem from an existing MD problem. More...
 
void constructor ()
 This is the actually constructor it is called do both constructors above. More...
 
void HGRID_actions_before_time_loop ()
 This sets up the broad phase information, has to be done at this stage becuase it requires the partcle size. More...
 
void HGRID_actions_before_time_step ()
 This resets all the bucket information. More...
 
void set_HGRID_num_buckets (unsigned int new_num_buckets)
 This sets the number of buckets for the HGRID. More...
 
void set_HGRID_num_buckets_to_power ()
 set number of buckets to the smallest power of two bigger than the number of particles More...
 
void set_HGRID_num_buckets_to_power (unsigned int N)
 set number of buckets to the smallest power of two bigger than N More...
 
void read (std::istream &is)
 This function reads all HGRID data. More...
 
void write (std::ostream &os)
 This function writes all HGRID data. More...
 
void print (std::ostream &os, bool print_all)
 This function outputs all HGRID data. More...
 
Mdouble getHGridCurrentMaxRelativeDisplacement ()
 
Mdouble getHGridTotalCurrentMaxRelativeDisplacement ()
 
void setHGridUpdateEachTimeStep (bool updateEachTimeStep)
 
bool getHGridUpdateEachTimeStep ()
 
void setHGridMaxLevels (int HGridMaxLevels)
 
int getHGridMaxLevels ()
 
HGridMethod getHGridMethod ()
 
void setHGridMethod (HGridMethod hGridMethod)
 
HGridDistribution getHGridDistribution ()
 
void setHGridDistribution (HGridDistribution hGridDistribution)
 
Mdouble getHGridCellOverSizeRatio ()
 
void setHGridCellOverSizeRatio (Mdouble cellOverSizeRatio)
 
- Public Member Functions inherited from MD
void constructor ()
 A public constructor, which sets defaults so the problem can be solved off the shelf. More...
 
 MD ()
 
 MD (STD_save &other)
 
virtual ~MD ()
 
void info ()
 Set up a virtual info this will be provided from the inhertiance. More...
 
void solve ()
 The work horse of the code. More...
 
void solve (unsigned int argc, char *argv[])
 Read arguments before solving. More...
 
void solveWithMDCLR ()
 Tries to solve the problem using MDCLR. More...
 
Mdouble get_t ()
 Access function for the time. More...
 
void set_t (Mdouble new_t)
 Access function for the time. More...
 
int get_NSpecies ()
 Allows the number of Species to be accessed. More...
 
std::vector< CSpecies > & get_Species (void)
 Allows the species to be copied. More...
 
CSpeciesget_Species (int i)
 Allows the species to be accessed. More...
 
CSpeciesget_MixedSpecies (int i, int j)
 Allows the mixed species to be accessed. More...
 
void set_MixedSpecies (int i, int j, CSpecies &S)
 Allows the mixed species to be set. More...
 
void set_tmax (Mdouble new_tmax)
 Allows the upper time limit to be changed. More...
 
Mdouble get_tmax ()
 Allows the upper time limit to be accessed. More...
 
ParticleHandlergetParticleHandler ()
 
WallHandlergetWallHandler ()
 
BoundaryHandlergetBoundaryHandler ()
 
void set_savecount (int new_)
 Allows the number of time steps between saves to be changed, see also set_number_of_saves. More...
 
void set_save_count_all (int new_)
 
void set_save_count_data (int new_)
 
void set_save_count_ene (int new_)
 
void set_save_count_stat (int new_)
 
void set_save_count_fstat (int new_)
 
int get_savecount ()
 Allows the number of time steps between saves to be accessed. More...
 
int get_save_count ()
 
int get_save_count_data ()
 
int get_save_count_ene ()
 
int get_save_count_stat ()
 
int get_save_count_fstat ()
 
void set_do_stat_always (bool new_)
 Sets how often the data is saved using the number of saves wanted, tmax, and dt. See also set_savecount. More...
 
void set_number_of_saves (Mdouble N)
 
void set_number_of_saves_all (Mdouble N)
 
void set_number_of_saves_data (Mdouble N)
 
void set_number_of_saves_ene (Mdouble N)
 
void set_number_of_saves_stat (Mdouble N)
 
void set_number_of_saves_fstat (Mdouble N)
 
void set_plastic_k1_k2max_kc_depth (Mdouble k1_, Mdouble k2max_, Mdouble kc_, Mdouble depth_, unsigned int indSpecies=0)
 Allows the plastic constants to be changed. More...
 
void set_k1 (Mdouble new_, unsigned int indSpecies=0)
 
void set_k2max (Mdouble new_, unsigned int indSpecies=0)
 
void set_kc (Mdouble new_, unsigned int indSpecies=0)
 
void set_depth (Mdouble new_, unsigned int indSpecies=0)
 
Mdouble get_k1 (unsigned int indSpecies=0)
 Allows the plastic constants to be accessed. More...
 
Mdouble get_k2max (unsigned int indSpecies=0)
 
Mdouble get_kc (unsigned int indSpecies=0)
 
Mdouble get_depth (unsigned int indSpecies=0)
 
Mdouble get_plastic_dt (Mdouble mass, unsigned int indSpecies=0)
 
void set_k (Mdouble new_, unsigned int indSpecies=0)
 Allows the spring constant to be changed. More...
 
Mdouble get_k (int indSpecies=0)
 Allows the spring constant to be accessed. More...
 
void set_kt (Mdouble new_, unsigned int indSpecies=0)
 Allows the spring constant to be changed. More...
 
Mdouble get_kt (int indSpecies=0)
 Allows the spring constant to be accessed. More...
 
void set_krolling (Mdouble new_, unsigned int indSpecies=0)
 Allows the spring constant to be changed. More...
 
Mdouble get_krolling (int indSpecies=0)
 Allows the spring constant to be accessed. More...
 
void set_ktorsion (Mdouble new_, unsigned int indSpecies=0)
 Allows the spring constant to be changed. More...
 
Mdouble get_ktorsion (int indSpecies=0)
 Allows the spring constant to be accessed. More...
 
void set_rho (Mdouble new_, unsigned int indSpecies=0)
 Allows the density to be changed. More...
 
Mdouble get_rho (int indSpecies=0)
 Allows the density to be accessed. More...
 
void set_dispt (Mdouble new_, unsigned int indSpecies=0)
 Allows the tangential viscosity to be changed. More...
 
Mdouble get_dispt (unsigned int indSpecies=0)
 Allows the tangential viscosity to be accessed. More...
 
void set_disprolling (Mdouble new_, unsigned int indSpecies=0)
 Allows the tangential viscosity to be changed. More...
 
Mdouble get_disprolling (unsigned int indSpecies=0)
 Allows the tangential viscosity to be accessed. More...
 
void set_disptorsion (Mdouble new_, unsigned int indSpecies=0)
 Allows the tangential viscosity to be changed. More...
 
Mdouble get_disptorsion (unsigned int indSpecies=0)
 Allows the tangential viscosity to be accessed. More...
 
void set_disp (Mdouble new_, unsigned int indSpecies=0)
 Allows the normal dissipation to be changed. More...
 
Mdouble get_disp (unsigned int indSpecies=0)
 Allows the normal dissipation to be accessed. More...
 
void set_dissipation (Mdouble new_, unsigned int indSpecies=0)
 Allows the normal dissipation to be changed. More...
 
Mdouble get_dissipation (unsigned int indSpecies=0)
 Allows the normal dissipation to be accessed. More...
 
void set_mu (Mdouble new_, unsigned int indSpecies=0)
 Allows the Coulomb friction coefficient to be changed. More...
 
Mdouble get_mu (unsigned int indSpecies=0)
 Allows the Coulomb friction coefficient to be accessed. More...
 
void set_murolling (Mdouble new_, unsigned int indSpecies=0)
 Allows the Coulomb friction coefficient to be changed. More...
 
Mdouble get_murolling (unsigned int indSpecies=0)
 Allows the Coulomb friction coefficient to be accessed. More...
 
void set_mutorsion (Mdouble new_, unsigned int indSpecies=0)
 Allows the Coulomb friction coefficient to be changed. More...
 
Mdouble get_mutorsion (unsigned int indSpecies=0)
 Allows the Coulomb friction coefficient to be accessed. More...
 
void set_rotation (bool new_)
 
bool get_rotation ()
 
void set_dim_particle (int new_, unsigned int indSpecies=0)
 Allows the dimension of the particle (f.e. for mass) to be changed. More...
 
int get_dim_particle (unsigned int indSpecies=0)
 Allows the dimension of the particle (f.e. for mass) to be accessed. More...
 
bool get_save_data_data ()
 Returns the data counter. More...
 
bool get_save_data_ene ()
 
bool get_save_data_fstat ()
 
bool get_save_data_stat ()
 
bool get_do_stat_always ()
 
void set_k_and_restitution_coefficient (Mdouble k_, Mdouble eps, Mdouble mass, unsigned int indSpecies=0)
 Sets k, disp such that it matches a given tc and eps for a collision of two copies of P. More...
 
void set_collision_time_and_restitution_coefficient (Mdouble tc, Mdouble eps, Mdouble mass, unsigned int indSpecies=0)
 Sets k, disp such that it matches a given tc and eps for a collision of two copies of P. More...
 
void set_collision_time_and_restitution_coefficient (Mdouble tc, Mdouble eps, Mdouble mass1, Mdouble mass2, unsigned int indSpecies=0)
 Set k, disp such that is matches a given tc and eps for a collision of two different masses. More...
 
void set_collision_time_and_normal_and_tangential_restitution_coefficient (Mdouble tc, Mdouble eps, Mdouble beta, Mdouble mass1, Mdouble mass2, unsigned int indSpecies=0)
 See CSpecies::set_collision_time_and_normal_and_tangential_restitution_coefficient. More...
 
void set_collision_time_and_normal_and_tangential_restitution_coefficient_nodispt (Mdouble tc, Mdouble eps, Mdouble beta, Mdouble mass1, Mdouble mass2, unsigned int indSpecies=0)
 See CSpecies::set_collision_time_and_normal_and_tangential_restitution_coefficient. More...
 
Mdouble get_collision_time (Mdouble mass, unsigned int indSpecies=0)
 Calculates collision time for two copies of a particle of given disp, k, mass. More...
 
Mdouble get_restitution_coefficient (Mdouble mass, unsigned int indSpecies=0)
 Calculates restitution coefficient for two copies of given disp, k, mass. More...
 
Mdouble get_xmin ()
 Get xmin. More...
 
Mdouble get_xmax ()
 Get xmax. More...
 
Mdouble get_ymin ()
 Gets ymin. More...
 
Mdouble get_ymax ()
 Gets ymax. More...
 
Mdouble get_zmin ()
 Gets zmin. More...
 
Mdouble get_zmax ()
 Gets zmax. More...
 
void set_xmin (Mdouble new_xmin)
 Sets xmin and walls, assuming the standard definition of walls as in the default constructor. More...
 
void set_ymin (Mdouble new_ymin)
 
void set_zmin (Mdouble new_zmin)
 Sets ymin and walls, assuming the standard definition of walls as in the default constructor. More...
 
void set_xmax (Mdouble new_xmax)
 Sets xmax and walls, assuming the standard definition of walls as in the default constructor. More...
 
void set_ymax (Mdouble new_ymax)
 Sets ymax and walls, assuming the standard definition of walls as in the default constructor. More...
 
void set_zmax (Mdouble new_zmax)
 Sets ymax and walls, assuming the standard definition of walls as in the default constructor. More...
 
void set_dt (Mdouble new_dt)
 Allows the time step dt to be changed. More...
 
Mdouble get_dt ()
 Allows the time step dt to be accessed. More...
 
void set_name (const char *name)
 Sets the name of the problem, used for the same data files. More...
 
void set_xballs_colour_mode (int new_cmode)
 Set the xball output mode. More...
 
void set_xballs_cmode (int new_cmode)
 
int get_xballs_cmode ()
 
void set_xballs_vector_scale (double new_vscale)
 Set the scale of vectors in xballs. More...
 
double get_xballs_vscale ()
 
void set_xballs_additional_arguments (std::string new_)
 Set the additional arguments for xballs. More...
 
std::string get_xballs_additional_arguments ()
 
void set_xballs_scale (Mdouble new_scale)
 Set the scale of the xballs problem. The default is fit to screen. More...
 
double get_xballs_scale ()
 
void set_gravity (Vec3D new_gravity)
 Allows the gravitational acceleration to be changed. More...
 
Vec3D get_gravity ()
 Allows the gravitational acceleration to be accessed. More...
 
void set_dim (int new_dim)
 Allows the dimension of the simulation to be changed. More...
 
int get_dim ()
 Allows the dimension of the simulation to be accessed. More...
 
int get_restart_version ()
 Gets restart_version. More...
 
void set_restart_version (int new_)
 Sets restart_version. More...
 
bool get_restarted ()
 Gets restarted. More...
 
Mdouble get_max_radius ()
 Sets restarted. More...
 
void set_restarted (bool new_)
 
bool get_append ()
 Gets restarted. More...
 
void set_append (bool new_)
 Sets restarted. More...
 
Mdouble get_ene_ela ()
 Gets ene_ela. More...
 
void set_ene_ela (Mdouble new_)
 Sets ene_ela. More...
 
void add_ene_ela (Mdouble new_)
 Sets ene_ela. More...
 
void Remove_Particle (int IP)
 This function removes partice IP from the vector of particles by moving the last particle in the vector to the position if IP Also it checks if the moved Particle has any tangentialsspring-information, which needs to be moved to a different particle, because tangential spring information always needs to be stored in the real particle with highest particle index. More...
 
Mdouble get_Mass_from_Radius (Mdouble radius, int indSpecies=0)
 
Mdouble get_maximum_velocity (BaseParticle &P)
 Calculates the maximum velocity allowed for a collision of two copies of P (for higher velocities particles could pass through each other) More...
 
virtual void removeParticle (int iP)
 
Mdouble get_maximum_velocity ()
 
void set_dt_by_mass (Mdouble mass)
 Sets dt to 1/50-th of the collision time for two particles of mass P. More...
 
void set_dt (BaseParticle &P)
 Sets dt to 1/50-th of the collision time for two copies of P. More...
 
void set_dt ()
 Sets dt to 1/50-th of the smallest possible collision time. More...
 
virtual void create_xballs_script ()
 This creates a scipt which can be used to load the xballs problem to display the data just generated. More...
 
virtual double getInfo (BaseParticle &P)
 Allows the user to set what is written into the info column in the data file. By default is store the Species ID number. More...
 
virtual void save_restart_data ()
 Stores all MD data. More...
 
int load_restart_data ()
 Loads all MD data. More...
 
int load_restart_data (std::string filename)
 
void statistics_from_restart_data (const char *name)
 Loads all MD data and plots statistics for all timesteps in the .data file. More...
 
virtual void write_v1 (std::ostream &os)
 Writes all MD data. More...
 
virtual void read_v1 (std::istream &is)
 Reads all MD data. More...
 
virtual void read_v2 (std::istream &is)
 
bool load_from_data_file (const char *filename, unsigned int format=0)
 This allows particle data to be reloaded from data files. More...
 
bool load_par_ini_file (const char *filename)
 allows the user to read par.ini files (useful to read MDCLR files) More...
 
bool read_next_from_data_file (unsigned int format=0)
 by default format do not pass an argument; only specify format if you have to read a special format (f.e. dim=2, but format=14 (3d format)) More...
 
int read_dim_from_data_file ()
 
bool find_next_data_file (Mdouble tmin, bool verbose=true)
 
void add_Species (CSpecies &S)
 
void add_Species (void)
 
void set_format (int new_)
 
int get_format ()
 
int readArguments (unsigned int argc, char *argv[])
 Can interpret main function input arguments that are passed by the driver codes. More...
 
- Public Member Functions inherited from STD_save
 STD_save ()
 Default constructor: sets the counter to 0 (i.e. no number will be included). More...
 
 STD_save (STD_save &other)
 Copy constructor. More...
 
void constructor ()
 
void inc_counter_in_file ()
 Increament the counter value stored in the file_counter by 1 and store the new value. More...
 
int read_run_num_from_file ()
 Read rom the counter file the counter. More...
 
void set_counter_from_file ()
 Sets the counter based on the current number stored in the counter file. More...
 
void save_info_to_disk ()
 Saves the information generated by info to disk in a file. More...
 
void set_counter (int new_counter)
 This set the counter, overriding the defaults. More...
 
int get_counter ()
 This returns the current value of the counter. More...
 
bool FileExists (std::string strFilename)
 Function to check if a file exists, is used to check if a run has already need done. More...
 
void auto_number ()
 
std::vector< intget_numbers (int size_x, int size_y)
 This turns a counter into two indexs for doing parmater studies. The indexs run from 1:size_x and 1:size_y where as the study number starts at 0. More...
 
int launch_new (const char *name, bool quick=false)
 This launch a code from within this code. Please pass the name of the code to run. More...
 
void set_name (const char *name)
 Sets the name of the problem, used for the same data files. More...
 
std::string get_name ()
 Allows the problem_name to be accessed. More...
 
std::fstream & get_data_file ()
 Allows the problem_name to be accessed. More...
 
std::fstream & get_stat_file ()
 Allows the problem_name to be accessed. More...
 
std::fstream & get_fstat_file ()
 Allows the problem_name to be accessed. More...
 
std::fstream & get_ene_file ()
 Allows the problem_name to be accessed. More...
 
void set_fstat_filename (std::string filename)
 
void set_data_filename (std::string filename)
 
void set_stat_filename (std::string filename)
 
void set_ene_filename (std::string filename)
 
void set_fstat_filename ()
 
void set_data_filename ()
 
void set_stat_filename ()
 
void set_ene_filename ()
 
std::string get_fstat_filename ()
 
std::string get_data_filename ()
 
std::string get_stat_filename ()
 
std::string get_ene_filename ()
 
void set_step_size (unsigned int new_)
 
unsigned int get_step_size ()
 
void set_options_fstat (unsigned int new_)
 set and get for file options More...
 
unsigned int get_options_fstat (void)
 
void set_options_data (unsigned int new_)
 
unsigned int get_options_data (void)
 
void set_options_stat (unsigned int new_)
 
unsigned int get_options_stat (void)
 
void set_options_restart (unsigned int new_)
 
unsigned int get_options_restart (void)
 
void set_options_ene (unsigned int new_)
 
unsigned int get_options_ene (void)
 
bool open_file (std::fstream &file, std::string filename, unsigned int options, std::fstream::openmode mode)
 
bool open_fstat_file (std::fstream::openmode mode=std::fstream::out)
 
bool open_data_file (std::fstream::openmode mode=std::fstream::out)
 
bool open_stat_file (std::fstream::openmode mode=std::fstream::out)
 
bool open_ene_file (std::fstream::openmode mode=std::fstream::out)
 
bool open_counted_file (std::fstream &file, std::string filenameNoCount, std::fstream::openmode mode)
 opens file needed if data is written in multiple files More...
 
bool increase_counter_fstat (std::fstream::openmode mode)
 
bool increase_counter_data (std::fstream::openmode mode)
 
bool increase_counter_stat (std::fstream::openmode mode)
 
bool increase_counter_ene (std::fstream::openmode mode)
 
void set_file_counter (int new_)
 
int get_file_counter ()
 

Protected Member Functions

virtual bool IsInsertable (BaseParticle &P)
 here, CheckObjects is called; returns true is the particle should be added More...
 
void add_particle (BaseParticle &P)
 adds particle to hgrid More...
 
void actions_before_time_step ()
 This is action before the time step is started. More...
 
virtual void add_particles ()
 Here we define the inflow. More...
 
void clean_chute ()
 Here we define the outflow. More...
 
void initialize_inflow_particle ()
 Sets initial values for particles that are created at the inflow. More...
 
virtual void create_inflow_particle ()
 Sets variable values for particles that are created at the inflow. More...
 
virtual void create_bottom ()
 Create the bottom of chute out of particles. More...
 
void cout_time ()
 std::couts time More...
 
Mdouble get_LargestParticleInteractionRadius ()
 
- Protected Member Functions inherited from HGRID_3D
void HGRID_UpdateParticleInHgrid (BaseParticle *obj)
 This adds a partcile to the Grid, called in the grid setup routies. More...
 
void HGRID_RemoveParticleFromHgrid (BaseParticle *obj)
 
virtual void CheckCell (int x, int y, int z, int l, BaseParticle *obj, HGrid *grid)
 Check collisions for a general cell. More...
 
virtual void CheckCell_current (int x, int y, int z, int l, HGrid *grid)
 Checks for a collision in the particles own cell. More...
 
void CheckObjAgainstGrid (HGrid *grid, BaseParticle *obj)
 Check if an Particle has a collision in the grid; avoids multiple checks. More...
 
void CheckObjAgainstWholeGrid (HGrid *grid, BaseParticle *obj)
 Check if an Particle has a collision in the grid. More...
 
bool TestCell (int x, int y, int z, int l, BaseParticle *obj, HGrid *grid)
 Tests obj against all particles in cell similar to CheckCell, but links to TestObject instead of compute_internal_forces. More...
 
bool TestObjAgainstGrid (HGrid *grid, BaseParticle *obj)
 Tests obj against all neighbouring particles similar to CheckObjAgainstGrid, but links to TestCell instead of CheckCell. More...
 
- Protected Member Functions inherited from HGRID_base
void InitBroadPhase ()
 This sets up the parameters required for the contact model. More...
 
void HGRID_InsertParticleToHgrid (BaseParticle *obj)
 Inserts a single Particle to current grid. More...
 
void broad_phase (BaseParticle *i)
 This makes the board_phase of contact point at the HGRID code. More...
 
virtual bool TestObject (BaseParticle *pI, BaseParticle *pJ)
 criterium for inserting a particle (returns false, if particles overlap;) More...
 
void HGRID_update_move (BaseParticle *iP, Mdouble move)
 
void HGRID_actions_before_integration ()
 
void HGRID_actions_after_integration ()
 
int readNextArgument (unsigned int &i, unsigned int argc, char *argv[])
 
- Protected Member Functions inherited from MD
virtual void compute_all_forces ()
 This does the force computation. More...
 
virtual void compute_internal_forces (BaseParticle *i)
 Computes the forces between particles (internal in the sence that the sum over all these forces is zero i.e. fully modelled forces) More...
 
CTangentialSpringgetTangentialSpring (BaseParticle *PI, BaseParticle *PJ, BaseParticle *PJreal)
 
CTangentialSpringgetTangentialSpringWall (BaseParticle *pI, int w)
 
virtual void compute_internal_forces (BaseParticle *P1, BaseParticle *P2)
 Computes the forces between particles (internal in the sence that the sum over all these forces is zero i.e. fully modelled forces) More...
 
void compute_plastic_internal_forces (BaseParticle *P1, BaseParticle *P2)
 Computes plastic forces between particles. More...
 
virtual void compute_external_forces (BaseParticle *PI)
 This is were the computation of external forces takes place (e.g. gravity) More...
 
virtual void compute_walls (BaseParticle *PI)
 This is were the walls are. More...
 
Mdouble computeShortRangeForceWithWall (BaseParticle *pI, int wall, CSpecies *pSpecies, Mdouble dist)
 
Mdouble computeShortRangeForceWithParticle (BaseParticle *PI, BaseParticle *PJ, BaseParticle *PJreal, CSpecies *pSpecies, Mdouble dist)
 
virtual void actions_before_time_loop ()
 This is actions before the start of the main time loop. More...
 
virtual void HGRID_InsertParticleToHgrid (BaseParticle *obj UNUSED)
 This is action before the time step is started. More...
 
virtual void HGRID_UpdateParticleInHgrid (BaseParticle *obj UNUSED)
 
virtual void HGRID_RemoveParticleFromHgrid (BaseParticle *obj UNUSED)
 
virtual bool get_HGRID_UpdateEachTimeStep ()
 
virtual void actions_after_solve ()
 This is actions at the end of the code, but before the files are closed. More...
 
virtual void actions_after_time_step ()
 This is action after the time step is finished. More...
 
virtual void output_xballs_data ()
 Output xball data for Particle i. More...
 
virtual void output_xballs_data_particle (int i)
 This function outputs the location and velocity of the particle in a format the xballs progream can read. More...
 
virtual void start_ene ()
 Functions for ene file. More...
 
virtual void fstat_header ()
 
virtual void output_ene ()
 This function outputs statistical data - The default is to compute the rotational kinetic engergy, linear kinetic energy, and the centre of mass. More...
 
virtual void initialize_statistics ()
 Functions for statistics. More...
 
virtual void output_statistics ()
 
virtual void gather_statistics_collision (int index1 UNUSED, int index2 UNUSED, Vec3D Contact UNUSED, Mdouble delta UNUSED, Mdouble ctheta UNUSED, Mdouble fdotn UNUSED, Mdouble fdott UNUSED, Vec3D P1_P2_normal_ UNUSED, Vec3D P1_P2_tangential UNUSED)
 
virtual void process_statistics (bool usethese UNUSED)
 
virtual void finish_statistics ()
 
virtual void set_initial_pressures_for_pressure_controlled_walls ()
 
virtual void do_integration_before_force_computation (BaseParticle *pI)
 This is were the integration is done. More...
 
virtual void checkInteractionWithBoundaries ()
 
virtual void do_integration_after_force_computation (BaseParticle *pI)
 This is were the integration is done. More...
 
void set_FixedParticles (unsigned int n)
 
void initialize_tangential_springs ()
 
void compute_particle_masses ()
 Computes the mass of each particle. More...
 
virtual bool continue_solve ()
 
void reset_DeltaMax ()
 sets the history parameter DeltaMax of all particles to zero More...
 
void reset_TangentialSprings ()
 sets the history parameter TangentialSprings of all particles to zero More...
 

Protected Attributes

Mdouble FixedParticleRadius
 
int RandomizedBottom
 
Mdouble ChuteAngle
 
Mdouble MinInflowParticleRadius
 
Mdouble MaxInflowParticleRadius
 
Mdouble InflowVelocity
 
Mdouble InflowVelocityVariance
 
Mdouble InflowHeight
 
int max_failed
 
int num_created
 
TangentialSpringParticle P0
 
- Protected Attributes inherited from MD
std::vector< CSpeciesSpecies
 These are the particle parameters like dissipation etc. More...
 
- Protected Attributes inherited from STD_save
std::stringstream problem_name
 Stores the problem_name. More...
 
std::stringstream data_filename
 These store the save file names, by default they are derived from problem_name. More...
 
std::stringstream stat_filename
 
std::stringstream fstat_filename
 
std::stringstream ene_filename
 
std::fstream data_file
 Stream used for data files. More...
 
std::fstream stat_file
 
std::fstream fstat_file
 
std::fstream ene_file
 
unsigned int options_fstat
 Indicators if files are created or not 0: file will not be created 1: file will be written in one file 2: file will be written in multiple files. More...
 
unsigned int options_data
 
unsigned int options_stat
 
unsigned int options_ene
 
unsigned int options_restart
 
unsigned int file_counter
 Counter needed if file will be written in multiple files. More...
 
unsigned int step_size
 

Private Attributes

bool is_periodic
 

Additional Inherited Members

- Public Attributes inherited from HGRID_base
HGridgrid
 
- Public Attributes inherited from MD
RNG random
 

Detailed Description

Chute adds three new effects to the HGrid: the gravity direction can be set using the ChuteAngle variable, a (smooth or rough) bottom wall is created by default, and some basic inflow and outflow routines are added.

Definition at line 34 of file Chute.h.

Constructor & Destructor Documentation

Chute::Chute ( )
inline

This is the default constructor. All it does is set sensible defaults.

Definition at line 38 of file Chute.h.

References constructor().

39  {
40  constructor();
41  #ifdef CONSTUCTOR_OUTPUT
42  std::cerr << "Chute() finished" << std::endl;
43  #endif
44  }
void constructor()
This is the actual constructor; it is called do both constructors above.
Definition: Chute.cc:30
Chute::Chute ( MD other)
inline

Copy-constructor for creates an HGRID problem from an existing MD problem.

Definition at line 48 of file Chute.h.

References constructor().

48  : MD(other), HGRID_3D(other)
49  {
50  constructor();
51  #ifdef CONSTUCTOR_OUTPUT
52  std::cerr << "Chute(MD& other) finished" << std::endl;
53  #endif
54  }
MD()
Definition: MD.h:75
void constructor()
This is the actual constructor; it is called do both constructors above.
Definition: Chute.cc:30
HGRID_3D()
This is the default constructor. All it does is set senible defaults.
Definition: HGRID_3D.h:40
Chute::Chute ( HGRID_base other)
inline

Definition at line 55 of file Chute.h.

References constructor().

55  : MD(other), HGRID_3D(other)
56  {
57  constructor();
58  #ifdef CONSTUCTOR_OUTPUT
59  std::cerr << "Chute(HGRID_base& other) finished" << std::endl;
60  #endif
61  }
MD()
Definition: MD.h:75
void constructor()
This is the actual constructor; it is called do both constructors above.
Definition: Chute.cc:30
HGRID_3D()
This is the default constructor. All it does is set senible defaults.
Definition: HGRID_3D.h:40
Chute::Chute ( HGRID_3D other)
inline

Definition at line 62 of file Chute.h.

References constructor().

62  : MD(other), HGRID_3D(other)
63  {
64  constructor();
65  #ifdef CONSTUCTOR_OUTPUT
66  std::cerr << "Chute(HGRID_3D& other) finished" << std::endl;
67  #endif
68  }
MD()
Definition: MD.h:75
void constructor()
This is the actual constructor; it is called do both constructors above.
Definition: Chute.cc:30
HGRID_3D()
This is the default constructor. All it does is set senible defaults.
Definition: HGRID_3D.h:40

Member Function Documentation

void Chute::actions_before_time_step ( )
protectedvirtual

This is action before the time step is started.

Reimplemented from MD.

Reimplemented in ChuteBottom.

Definition at line 107 of file Chute.cc.

References add_particles(), and clean_chute().

107  {
108  add_particles();
109  clean_chute();
110 }
void clean_chute()
Here we define the outflow.
Definition: Chute.cc:364
virtual void add_particles()
Here we define the inflow.
Definition: Chute.cc:346
void Chute::add_particle ( BaseParticle P)
protected

adds particle to hgrid

Definition at line 96 of file Chute.cc.

References BaseHandler< T >::copyAndAddObject(), MD::getParticleHandler(), HGRID_base::grid, HGRID_3D::HGRID_UpdateParticleInHgrid(), and HGrid::InsertParticleToHgrid().

Referenced by IsInsertable().

96  {
97  //Puts the particle in the Particle list
99  //This places the particle in this grid
100  grid->InsertParticleToHgrid(getParticleHandler().getLastObject());
101  //This computes where the particle currectly is in the grid
102 #ifndef ContactListHgrid
104 #endif
105 }
void InsertParticleToHgrid(BaseParticle *obj)
This insert a particle given by CParticle in to the HGrid (i.e. it sets up the particle grid properts...
Definition: HGRID.cc:69
void HGRID_UpdateParticleInHgrid(BaseParticle *obj)
This adds a partcile to the Grid, called in the grid setup routies.
Definition: HGRID_3D.cc:220
void copyAndAddObject(const T &O)
Creates a copy of a Object and adds it to the BaseHandler.
Definition: BaseHandler.h:93
HGrid * grid
Definition: HGRID_base.h:131
ParticleHandler & getParticleHandler()
Definition: MD.h:147
void Chute::add_particles ( )
protectedvirtual

Here we define the inflow.

New particles are created at the inflow, subject to criteria the user can set.

Definition at line 346 of file Chute.cc.

References create_inflow_particle(), IsInsertable(), max_failed, num_created, and P0.

Referenced by actions_before_time_step().

347 {
348  int failed = 0;
349 
350  //try max_failed times to find new insertable particle
351  while (failed<=max_failed){
353  if (IsInsertable(P0)) {
354  failed = 0;
355  num_created++;
356  } else failed++;
357  };
358 }
virtual void create_inflow_particle()
Sets variable values for particles that are created at the inflow.
Definition: Chute.cc:126
int max_failed
Definition: Chute.h:259
int num_created
Definition: Chute.h:260
virtual bool IsInsertable(BaseParticle &P)
here, CheckObjects is called; returns true is the particle should be added
Definition: Chute.cc:388
TangentialSpringParticle P0
Definition: Chute.h:262
void Chute::clean_chute ( )
protected

Here we define the outflow.

New particles are destroyed at the outflow, subject to criteria the user can set.

Definition at line 364 of file Chute.cc.

References BaseParticle::get_Position(), MD::get_xmax(), MD::get_xmin(), BaseHandler< T >::getNumberOfObjects(), BaseHandler< T >::getObject(), MD::getParticleHandler(), MD::removeParticle(), and Vec3D::X.

Referenced by actions_before_time_step().

365 {
366  //clean outflow every 100 timesteps
367  static int count = 0, maxcount = 100;
368  if (count>maxcount)
369  {
370  count = 0;
371  // delete all outflowing particles
372  for (unsigned int i=0;i<getParticleHandler().getNumberOfObjects();)
373  {
374 
375  if (getParticleHandler().getObject(i)->get_Position().X>get_xmax()||getParticleHandler().getObject(i)->get_Position().X<get_xmin())//||getParticleHandler().getObject(i)->Position.Z+getParticleHandler().getObject(i)->Radius<zmin)
376 
377  {
378  #ifdef DEBUG_OUTPUT_FULL
379  std::cout << "erased:" << getParticleHandler().getObject(i) << std::endl;
380  #endif
381  removeParticle(i);
382  }
383  else i++;
384  }
385  } else count++;
386 }
Mdouble X
Definition: Vector.h:44
T * getObject(const unsigned int id) const
Gets a pointer to the Object at the specified index in the BaseHandler.
Definition: BaseHandler.h:176
Mdouble get_xmin()
Get xmin.
Definition: MD.h:305
unsigned int getNumberOfObjects() const
Gets the number of Object in this BaseHandler.
Definition: BaseHandler.h:199
const Vec3D & get_Position() const
virtual void removeParticle(int iP)
Definition: MD.h:420
ParticleHandler & getParticleHandler()
Definition: MD.h:147
Mdouble get_xmax()
Get xmax.
Definition: MD.h:307
void Chute::constructor ( )

This is the actual constructor; it is called do both constructors above.

This is the actually constructor it is called do both constructors above.

Definition at line 30 of file Chute.cc.

References initialize_inflow_particle(), is_periodic, num_created, set_ChuteAngle(), set_FixedParticleRadius(), set_InflowHeight(), set_InflowParticleRadius(), set_InflowVelocity(), set_InflowVelocityVariance(), set_max_failed(), and set_RandomizedBottom().

Referenced by Chute().

30  {
31  is_periodic=false;
34  set_ChuteAngle(0.0);
35 
36  set_max_failed(1);
37  num_created = 0;
39  set_InflowVelocity(0.1);
41  set_InflowHeight(0.02);
43 }
void set_InflowVelocity(Mdouble new_)
Changes inflow velocity.
Definition: Chute.h:146
void set_InflowVelocityVariance(Mdouble new_)
Changes inflow velocity variance.
Definition: Chute.h:153
void set_ChuteAngle(Mdouble new_)
Sets gravity vector according to chute angle (in degrees)
Definition: Chute.h:102
void set_max_failed(unsigned int new_)
Allows radius of fixed particles to be changed.
Definition: Chute.h:112
void set_InflowHeight(Mdouble new_)
Changes inflow height.
Definition: Chute.h:139
bool is_periodic
Definition: Chute.h:266
int num_created
Definition: Chute.h:260
void set_RandomizedBottom(int new_)
Changes RandomizedBottom.
Definition: Chute.h:97
void initialize_inflow_particle()
Sets initial values for particles that are created at the inflow.
Definition: Chute.cc:113
void set_FixedParticleRadius(Mdouble new_)
Allows radius of fixed particles to be changed.
Definition: Chute.h:92
void set_InflowParticleRadius(Mdouble new_)
Allows radius of inflow particles to be changed.
Definition: Chute.h:117
void Chute::cout_time ( )
protectedvirtual

std::couts time

Reimplemented from MD.

Definition at line 148 of file Chute.cc.

References MD::get_t(), MD::get_tmax(), BaseHandler< T >::getNumberOfObjects(), and MD::getParticleHandler().

148  {
149  std::cout << "\rt=" << std::setprecision(3) << std::left << std::setw(6) << get_t()
150  << ", tmax=" << std::setprecision(3) << std::left << std::setw(6) << get_tmax()
151  << ", N=" << std::setprecision(3) << std::left << std::setw(6) << getParticleHandler().getNumberOfObjects()
152  << "\r";
153  std::cout.flush();
154 }
Mdouble get_t()
Access function for the time.
Definition: MD.h:108
Mdouble get_tmax()
Allows the upper time limit to be accessed.
Definition: MD.h:144
unsigned int getNumberOfObjects() const
Gets the number of Object in this BaseHandler.
Definition: BaseHandler.h:199
ParticleHandler & getParticleHandler()
Definition: MD.h:147
void Chute::create_bottom ( )
protectedvirtual

Create the bottom of chute out of particles.

Creates the bottom of the chute; either smooth, grid-like or random ///.

Todo:
Does the bottom we always has to be this particle?

Definition at line 254 of file Chute.cc.

References BaseHandler< T >::copyAndAddObject(), WallHandler::copyAndAddWall(), BaseHandler< T >::end(), get_FixedParticleRadius(), BaseParticle::get_Radius(), RNG::get_RN(), MD::get_xmax(), MD::get_xmin(), MD::get_ymax(), MD::get_ymin(), MD::get_zmin(), MD::getParticleHandler(), MD::getWallHandler(), HGRID_base::HGRID_actions_before_time_loop(), HGRID_base::HGRID_actions_before_time_step(), IsInsertable(), ChuteBottom::make_rough_bottom(), MD::random, RandomizedBottom, InfiniteWall::set(), set_InflowParticleRadius(), BaseParticle::set_Position(), BaseParticle::set_Radius(), Vec3D::X, and Vec3D::Y.

Referenced by setup_particles_initial_conditions(), and ChuteBottom::setup_particles_initial_conditions().

254  {
255  if (fabs(get_FixedParticleRadius())<1e-12) // smooth bottom
256  {
257  //bottom wall
258  InfiniteWall w0;
259  w0.set(Vec3D(0.0, 0.0, -1.0), -get_zmin());
261  }
262  else //rough bottom
263  {
264  // Define standard fixed particle
268  F0.set_Position(Vec3D(0.0,0.0,0.0));
269 
270  //define grid parameters
271  Mdouble dx = 2.0 * F0.get_Radius();
272  Mdouble dy = 2.0 * F0.get_Radius();
273  int nx = std::max(1,(int)floor((get_xmax()-get_xmin())/dx));
274  int ny = std::max(1,(int)floor((get_ymax()-get_ymin())/dy));
275  dx = (get_xmax()-get_xmin())/nx; dy = (get_ymax()-get_ymin())/ny;
276 
277  if (!RandomizedBottom) { // grid-like fixed-particle bottom
278  for (int i=0; i<nx; i++)
279  for (int j=0; j<ny; j++)
280  {
281  F0.set_Position(Vec3D(F0.get_Radius() + dx * i,F0.get_Radius() + dy * j,0.0));
283  }
284 
285  } else if (RandomizedBottom==1) { // random fixed-particle bottom
286  std::cout << "create rough chute bottom, fixed z" << std::endl;
287 
288  Mdouble dx = 2.0 * F0.get_Radius();
289  Mdouble dy = 2.0 * F0.get_Radius();
290  int nx = std::max(1,(int)floor((get_xmax()-get_xmin())/dx));
291  int ny = std::max(1,(int)floor((get_ymax()-get_ymin())/dy));
292  dx = (get_xmax()-get_xmin())/nx; dy = (get_ymax()-get_ymin())/ny;
293 
294  //bottom wall
295  InfiniteWall w0;
296  w0.set(Vec3D(0.0, 0.0, -1.0), -(get_zmin()-.5*F0.get_Radius()));
298 
299  //add first particle to initialize HGRID
300 
301  //The position components are first stored in a Vec3D, because if you pass them directly into set_Position the compiler is allowed to change the order in which the numbers are generated
302  Vec3D position;
303  position.X=random.get_RN(F0.get_Radius(), get_xmax() - F0.get_Radius());
304  position.Y=random.get_RN(get_ymin()+F0.get_Radius(), get_ymax()-F0.get_Radius());
305  F0.set_Position(position);
307 
310 
311  //now add more particles
312  int failed = 0;
313  while (failed<500)
314  {
315  //The position components are first stored in a Vec3D, because if you pass them directly into set_Position the compiler is allowed to change the order in which the numbers are generated
316  position.X=random.get_RN(F0.get_Radius(), get_xmax() - F0.get_Radius());
317  position.Y=random.get_RN(get_ymin()+F0.get_Radius(), get_ymax()-F0.get_Radius());
318  F0.set_Position(position);
319  if (IsInsertable(F0))
320  failed = 0;
321  else
322  failed++;
323  }
324  } else {
325  //this pointer is the current MD class, so the bottom is create with the particles properties from the MD class
326  ChuteBottom bottom(*this);
327  bottom.set_InflowParticleRadius(get_FixedParticleRadius());
328  bottom.make_rough_bottom(getParticleHandler());
329  std::cout<<"Starting to destruct ChuteBottom"<<std::endl;
330  }
331  std::cout<<"Destructed ChuteBottom"<<std::endl;
332  //finally, fix particles to the floor
333  for (std::vector<BaseParticle*>::iterator it= getParticleHandler().begin(); it!=getParticleHandler().end(); ++it)
334  (*it)->fixParticle();
335 
336 
337 
338  }
339 }
Mdouble get_zmin()
Gets zmin.
Definition: MD.h:313
Mdouble X
Definition: Vector.h:44
void copyAndAddObject(const T &O)
Creates a copy of a Object and adds it to the BaseHandler.
Definition: BaseHandler.h:93
Used by Chute::create_bottom to create an unordered particle layer.
Definition: ChuteBottom.h:36
Mdouble get_RN(Mdouble min, Mdouble max)
This is a random generating routine can be used for initial positions.
Definition: RNG.cc:32
int RandomizedBottom
Definition: Chute.h:251
RNG random
Definition: MD.h:515
Mdouble get_ymax()
Gets ymax.
Definition: MD.h:311
Mdouble get_Radius() const
WallHandler & getWallHandler()
Definition: MD.h:148
Mdouble get_ymin()
Gets ymin.
Definition: MD.h:309
Mdouble get_xmin()
Get xmin.
Definition: MD.h:305
void copyAndAddWall(const BaseWall &B)
Creates a copy of a BaseWall and adds it to the WallHandler.
Definition: WallHandler.cc:84
double Mdouble
Definition: ExtendedMath.h:33
virtual bool IsInsertable(BaseParticle &P)
here, CheckObjects is called; returns true is the particle should be added
Definition: Chute.cc:388
const std::vector< T * >::const_iterator end() const
Gets the end of the const_iterator over all BaseBoundary in this BaseHandler.
Definition: BaseHandler.h:233
void set(Vec3D normal_, Mdouble position_)
Defines a standard wall, given an outward normal vector s. t. normal*x=position.
Definition: InfiniteWall.h:75
Mdouble Y
Definition: Vector.h:44
void set_Radius(const Mdouble _new)
This is a class defining walls.
Definition: InfiniteWall.h:42
ParticleHandler & getParticleHandler()
Definition: MD.h:147
Mdouble get_xmax()
Get xmax.
Definition: MD.h:307
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:40
void HGRID_actions_before_time_step()
This resets all the bucket information.
Definition: HGRID_base.cc:221
void set_Position(const Vec3D &_new)
void HGRID_actions_before_time_loop()
This sets up the broad phase information, has to be done at this stage becuase it requires the partcl...
Definition: HGRID_base.cc:66
Mdouble get_FixedParticleRadius()
Allows radius of fixed particles to be accessed.
Definition: Chute.h:94
void Chute::create_inflow_particle ( )
protectedvirtual

Sets variable values for particles that are created at the inflow.

Reimplemented in ChuteWithHopperAndInset, and ChuteWithHopper.

Definition at line 126 of file Chute.cc.

References BaseParticle::compute_particle_mass(), FixedParticleRadius, BaseParticle::get_Radius(), RNG::get_RN(), MD::get_xmin(), MD::get_ymax(), MD::get_ymin(), MD::get_zmax(), MD::get_zmin(), InflowVelocity, InflowVelocityVariance, MaxInflowParticleRadius, MinInflowParticleRadius, P0, MD::random, BaseParticle::set_Position(), BaseParticle::set_Radius(), BaseParticle::set_Velocity(), MD::Species, Vec3D::X, Vec3D::Y, and Vec3D::Z.

Referenced by add_particles().

127 {
130 
131  Vec3D position,velocity;
132 
133  position.X= get_xmin() + P0.get_Radius();
135  position.Y = get_ymin() + P0.get_Radius();
136  else
137  position.Y = random.get_RN(get_ymin() + P0.get_Radius(), get_ymax() - P0.get_Radius());
139  P0.set_Position(position);
140 
141  //The velocity components are first stored in a Vec3D, because if you pass them directly into set_Velocity the compiler is allowed to change the order in which the numbers are generated
145  P0.set_Velocity(velocity);
146 }
Mdouble InflowVelocity
Definition: Chute.h:256
Mdouble get_zmin()
Gets zmin.
Definition: MD.h:313
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
Mdouble X
Definition: Vector.h:44
void compute_particle_mass(std::vector< CSpecies > &Species)
Compute Particle mass function, which required a reference to the Species vector. It copmuters the Pa...
Mdouble get_RN(Mdouble min, Mdouble max)
This is a random generating routine can be used for initial positions.
Definition: RNG.cc:32
Mdouble InflowVelocityVariance
Definition: Chute.h:257
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
RNG random
Definition: MD.h:515
Mdouble get_ymax()
Gets ymax.
Definition: MD.h:311
Mdouble get_Radius() const
Mdouble get_ymin()
Gets ymin.
Definition: MD.h:309
Mdouble get_xmin()
Get xmin.
Definition: MD.h:305
TangentialSpringParticle P0
Definition: Chute.h:262
Mdouble Y
Definition: Vector.h:44
void set_Radius(const Mdouble _new)
void set_Velocity(const Vec3D &_new)
Mdouble FixedParticleRadius
Definition: Chute.h:250
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:40
void set_Position(const Vec3D &_new)
Mdouble Z
Definition: Vector.h:44
Mdouble get_zmax()
Gets zmax.
Definition: MD.h:315
Mdouble Chute::get_ChuteAngle ( )
inline

Gets chute angle (in radians)

Todo:
Thomas: This should return the angle in degrees

Definition at line 108 of file Chute.h.

References ChuteAngle.

Referenced by ChuteWithHopperAndInset::add_hopper(), ChuteWithHopper::add_hopper(), ChuteWithHopperAndInset::add_Inset(), ChuteWithHopper::create_inflow_particle(), ChuteWithHopperAndInset::create_inflow_particle(), and ChuteWithHopper::set_Hopper().

108 {return ChuteAngle;}
Mdouble ChuteAngle
Definition: Chute.h:252
Mdouble Chute::get_ChuteAngleDegrees ( )
inline

Definition at line 109 of file Chute.h.

References ChuteAngle, and constants::pi.

109 {return ChuteAngle*180./constants::pi;}
const Mdouble pi
Definition: ExtendedMath.h:54
Mdouble ChuteAngle
Definition: Chute.h:252
Mdouble Chute::get_ChuteLength ( )
inline

Definition at line 188 of file Chute.h.

References MD::get_xmax().

188 {return get_xmax();}
Mdouble get_xmax()
Get xmax.
Definition: MD.h:307
Mdouble Chute::get_ChuteWidth ( )
inline

Definition at line 186 of file Chute.h.

References MD::get_ymax().

186 {return get_ymax();}
Mdouble get_ymax()
Gets ymax.
Definition: MD.h:311
Mdouble Chute::get_collision_time ( )

Calculates collision time of two inflow particles.

Definition at line 165 of file Chute.cc.

References BaseParticle::compute_particle_mass(), MD::get_collision_time(), BaseParticle::get_IndSpecies(), BaseParticle::get_Mass(), MaxInflowParticleRadius, MinInflowParticleRadius, P0, BaseParticle::set_Radius(), and MD::Species.

Referenced by ChuteBottom::make_rough_bottom(), and set_dt().

165  {
169 }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
void compute_particle_mass(std::vector< CSpecies > &Species)
Compute Particle mass function, which required a reference to the Species vector. It copmuters the Pa...
int get_IndSpecies() const
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
Mdouble get_Mass() const
Mdouble get_collision_time(Mdouble mass, unsigned int indSpecies=0)
Calculates collision time for two copies of a particle of given disp, k, mass.
Definition: MD.h:300
TangentialSpringParticle P0
Definition: Chute.h:262
void set_Radius(const Mdouble _new)
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Mdouble Chute::get_FixedParticleRadius ( )
inline

Allows radius of fixed particles to be accessed.

Definition at line 94 of file Chute.h.

References FixedParticleRadius.

Referenced by create_bottom(), and ChuteBottom::setup_particles_initial_conditions().

94 {return FixedParticleRadius;}
Mdouble FixedParticleRadius
Definition: Chute.h:250
Mdouble Chute::get_InflowHeight ( )
inline

Accesses inflow height.

Definition at line 143 of file Chute.h.

References InflowHeight.

Referenced by get_InitialHeight().

143 {return InflowHeight;}
Mdouble InflowHeight
Definition: Chute.h:258
Mdouble Chute::get_InflowParticleRadius ( )
inline

Allows radius of inflow particles to be accessed.

Definition at line 132 of file Chute.h.

References MaxInflowParticleRadius, and MinInflowParticleRadius.

Referenced by ChuteBottom::make_rough_bottom(), and ChuteBottom::setup_particles_initial_conditions().

Mdouble MinInflowParticleRadius
Definition: Chute.h:254
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Mdouble Chute::get_InflowVelocity ( )
inline

Accesses inflow velocity.

Definition at line 150 of file Chute.h.

References InflowVelocity.

Referenced by get_InitialVelocity().

150 {return InflowVelocity;}
Mdouble InflowVelocity
Definition: Chute.h:256
Mdouble Chute::get_InflowVelocityVariance ( )
inline

Accesses inflow velocity variance.

Definition at line 157 of file Chute.h.

References InflowVelocityVariance.

Referenced by get_InitialVelocityVariance().

157 {return InflowVelocityVariance;}
Mdouble InflowVelocityVariance
Definition: Chute.h:257
Mdouble Chute::get_InitialHeight ( )
inline

Definition at line 163 of file Chute.h.

References get_InflowHeight().

163  {
164  std::cerr << "WARNING : get_InitialHeight(Mdouble) is a deprecated function, use get_InflowHeight(Mdouble) instead." << std::endl;
165  return get_InflowHeight();
166  }
Mdouble get_InflowHeight()
Accesses inflow height.
Definition: Chute.h:143
Mdouble Chute::get_InitialVelocity ( )
inline

Definition at line 171 of file Chute.h.

References get_InflowVelocity().

171  {
172  std::cerr << "WARNING : get_InitialVelocity(Mdouble) is a deprecated function, use get_InflowVelocity(Mdouble) instead." << std::endl;
173  return get_InflowVelocity();
174  }
Mdouble get_InflowVelocity()
Accesses inflow velocity.
Definition: Chute.h:150
Mdouble Chute::get_InitialVelocityVariance ( )
inline

Definition at line 179 of file Chute.h.

References get_InflowVelocityVariance().

179  {
180  std::cerr << "WARNING : get_InitialVelocityVariance(Mdouble) is a deprecated function, use get_InflowVelocityVariance(Mdouble) instead." << std::endl;
182  }
Mdouble get_InflowVelocityVariance()
Accesses inflow velocity variance.
Definition: Chute.h:157
bool Chute::get_IsPeriodic ( )
inline

Get wether the chute is periodic.

Definition at line 77 of file Chute.h.

References is_periodic.

77 {return is_periodic;}
bool is_periodic
Definition: Chute.h:266
Mdouble Chute::get_LargestParticleInteractionRadius ( )
protected

Definition at line 209 of file Chute.cc.

References BaseHandler< T >::end(), FixedParticleRadius, MD::getParticleHandler(), and MaxInflowParticleRadius.

209  {
211  for (std::vector<BaseParticle*>::iterator it = getParticleHandler().begin(); it!=getParticleHandler().end(); ++it)
212  max_rad=std::max(max_rad,(*it)->get_InteractionRadius());
213  return max_rad;
214 
215 }
double Mdouble
Definition: ExtendedMath.h:33
const std::vector< T * >::const_iterator end() const
Gets the end of the const_iterator over all BaseBoundary in this BaseHandler.
Definition: BaseHandler.h:233
Mdouble FixedParticleRadius
Definition: Chute.h:250
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
ParticleHandler & getParticleHandler()
Definition: MD.h:147
Mdouble Chute::get_LightestParticleMass ( )

Returns the radius of the smallest particle.

Definition at line 218 of file Chute.cc.

References BaseParticle::compute_particle_mass(), BaseParticle::get_Mass(), ParticleHandler::getLightestParticle(), MD::getParticleHandler(), MinInflowParticleRadius, P0, BaseParticle::set_Radius(), and MD::Species.

Referenced by readNextArgument().

218  {
222  Mdouble MassP0 = P0.get_Mass();
223  return std::min(Mass,MassP0);
224 }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
void compute_particle_mass(std::vector< CSpecies > &Species)
Compute Particle mass function, which required a reference to the Species vector. It copmuters the Pa...
BaseParticle * getLightestParticle() const
Gets a pointer to the lightest BaseParticle (by mass) in this ParticleHandler.
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
Mdouble get_Mass() const
double Mdouble
Definition: ExtendedMath.h:33
TangentialSpringParticle P0
Definition: Chute.h:262
void set_Radius(const Mdouble _new)
ParticleHandler & getParticleHandler()
Definition: MD.h:147
unsigned int Chute::get_max_failed ( )
inline

Allows radius of fixed particles to be accessed.

Definition at line 114 of file Chute.h.

References max_failed.

114 {return max_failed;}
int max_failed
Definition: Chute.h:259
Mdouble Chute::get_MaxInflowParticleRadius ( )
inline

Allows radius of inflow particles to be accessed.

Definition at line 136 of file Chute.h.

References MaxInflowParticleRadius.

Referenced by ChuteBottom::setup_particles_initial_conditions().

136 {return MaxInflowParticleRadius;}
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Mdouble Chute::get_MinInflowParticleRadius ( )
inline

Allows radius of inflow particles to be accessed.

Definition at line 134 of file Chute.h.

References MinInflowParticleRadius.

Referenced by ChuteBottom::setup_particles_initial_conditions().

134 {return MinInflowParticleRadius;}
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
BaseParticle* Chute::get_P0 ( )
inline

Definition at line 211 of file Chute.h.

References P0.

211 {return &P0;}
TangentialSpringParticle P0
Definition: Chute.h:262
int Chute::get_RandomizedBottom ( )
inline

Accesses RandomizedBottom.

Definition at line 99 of file Chute.h.

References RandomizedBottom.

99 {return RandomizedBottom;}
int RandomizedBottom
Definition: Chute.h:251
Mdouble Chute::get_restitution_coefficient ( )

Calculates restitution coefficient of two inflow particles.

Definition at line 171 of file Chute.cc.

References BaseParticle::compute_particle_mass(), BaseParticle::get_IndSpecies(), BaseParticle::get_Mass(), MD::get_restitution_coefficient(), MaxInflowParticleRadius, MinInflowParticleRadius, P0, BaseParticle::set_Radius(), and MD::Species.

171  {
175 }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
void compute_particle_mass(std::vector< CSpecies > &Species)
Compute Particle mass function, which required a reference to the Species vector. It copmuters the Pa...
int get_IndSpecies() const
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
Mdouble get_restitution_coefficient(Mdouble mass, unsigned int indSpecies=0)
Calculates restitution coefficient for two copies of given disp, k, mass.
Definition: MD.h:302
Mdouble get_Mass() const
TangentialSpringParticle P0
Definition: Chute.h:262
void set_Radius(const Mdouble _new)
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Mdouble Chute::get_SmallestParticleInteractionRadius ( )

Returns the radius of the smallest particle.

Definition at line 200 of file Chute.cc.

References BaseHandler< T >::end(), FixedParticleRadius, MD::getParticleHandler(), and MinInflowParticleRadius.

200  {
202  if (FixedParticleRadius)
203  min_rad = std::min(min_rad,FixedParticleRadius);
204  for (std::vector<BaseParticle*>::iterator it = getParticleHandler().begin(); it!=getParticleHandler().end(); ++it)
205  min_rad=std::min(min_rad,(*it)->get_InteractionRadius());
206  return min_rad;
207 }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
double Mdouble
Definition: ExtendedMath.h:33
const std::vector< T * >::const_iterator end() const
Gets the end of the const_iterator over all BaseBoundary in this BaseHandler.
Definition: BaseHandler.h:233
Mdouble FixedParticleRadius
Definition: Chute.h:250
ParticleHandler & getParticleHandler()
Definition: MD.h:147
BaseParticle * Chute::getLargestParticle ( )
virtual

Returns the smallest particle (by mass) in the system.

Reimplemented from MD.

Definition at line 189 of file Chute.cc.

References BaseParticle::compute_particle_mass(), BaseParticle::get_Radius(), BaseHandler< T >::getNumberOfObjects(), BaseHandler< T >::getObject(), MD::getParticleHandler(), MaxInflowParticleRadius, P0, BaseParticle::set_Radius(), and MD::Species.

189  {
192  BaseParticle* pP = &P0;
193  for (unsigned int i=0; i<getParticleHandler().getNumberOfObjects(); i++) {
195  }
196  return pP;
197 }
void compute_particle_mass(std::vector< CSpecies > &Species)
Compute Particle mass function, which required a reference to the Species vector. It copmuters the Pa...
T * getObject(const unsigned int id) const
Gets a pointer to the Object at the specified index in the BaseHandler.
Definition: BaseHandler.h:176
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
Mdouble get_Radius() const
TangentialSpringParticle P0
Definition: Chute.h:262
unsigned int getNumberOfObjects() const
Gets the number of Object in this BaseHandler.
Definition: BaseHandler.h:199
void set_Radius(const Mdouble _new)
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
ParticleHandler & getParticleHandler()
Definition: MD.h:147
BaseParticle * Chute::getSmallestParticle ( )
virtual

Returns the smallest particle (by mass) in the system.

Reimplemented from MD.

Definition at line 178 of file Chute.cc.

References BaseParticle::compute_particle_mass(), BaseParticle::get_Mass(), BaseHandler< T >::getNumberOfObjects(), BaseHandler< T >::getObject(), MD::getParticleHandler(), MinInflowParticleRadius, P0, BaseParticle::set_Radius(), and MD::Species.

178  {
181  BaseParticle* pP = &P0;
182  for (unsigned int i=0; i<getParticleHandler().getNumberOfObjects(); i++) {
184  }
185  return pP;
186 }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
void compute_particle_mass(std::vector< CSpecies > &Species)
Compute Particle mass function, which required a reference to the Species vector. It copmuters the Pa...
T * getObject(const unsigned int id) const
Gets a pointer to the Object at the specified index in the BaseHandler.
Definition: BaseHandler.h:176
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
Mdouble get_Mass() const
TangentialSpringParticle P0
Definition: Chute.h:262
unsigned int getNumberOfObjects() const
Gets the number of Object in this BaseHandler.
Definition: BaseHandler.h:199
void set_Radius(const Mdouble _new)
ParticleHandler & getParticleHandler()
Definition: MD.h:147
void Chute::initialize_inflow_particle ( )
protected

Sets initial values for particles that are created at the inflow.

Definition at line 113 of file Chute.cc.

References BaseParticle::compute_particle_mass(), MinInflowParticleRadius, P0, BaseParticle::set_Angle(), BaseParticle::set_AngularVelocity(), BaseParticle::set_Position(), BaseParticle::set_Radius(), BaseParticle::set_Velocity(), and MD::Species.

Referenced by constructor().

114 {
115  //Position, maybe also radius and velocity, is reset in create_inflow_particle()
118  P0.set_Angle(Vec3D(0.0,0.0,0.0));
119  P0.set_AngularVelocity(Vec3D(0.0,0.0,0.0));
120  //P0.get_TangentialSprings().reset();
121  P0.set_Position(Vec3D(1e20,1e20,1e20));
122  P0.set_Velocity(Vec3D(0.0,0.0,0.0));
123 }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
void compute_particle_mass(std::vector< CSpecies > &Species)
Compute Particle mass function, which required a reference to the Species vector. It copmuters the Pa...
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
TangentialSpringParticle P0
Definition: Chute.h:262
void set_Radius(const Mdouble _new)
void set_Velocity(const Vec3D &_new)
void set_AngularVelocity(const Vec3D &_new)
void set_Angle(const Vec3D &_new)
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:40
void set_Position(const Vec3D &_new)
bool Chute::IsInsertable ( BaseParticle P)
protectedvirtual

here, CheckObjects is called; returns true is the particle should be added

todo{Maybe also check if the last particle in a Particular level is removed}

Definition at line 388 of file Chute.cc.

References add_particle(), HGrid::ComputeHashBucketIndex(), BaseParticle::get_HGRID_NextObject(), BaseHandler< T >::getLastObject(), MD::getParticleHandler(), HGRID_base::grid, HGRID_3D::HGRID_UpdateParticleInHgrid(), HGrid::objectBucket, BaseHandler< T >::removeLastObject(), and HGRID_3D::TestObjAgainstGrid().

Referenced by add_particles(), create_bottom(), and ChuteBottom::setup_particles_initial_conditions().

388  {
389 
390  add_particle(P);
391  //std::cout<<"Adding particle "<<P<<std::endl;
392  if(TestObjAgainstGrid(grid,getParticleHandler().getLastObject()))
393  {
394 #ifdef ContactListHgrid
396 #endif
397  //std::cout<<"Past"<<std::endl;
398  return true;
399  }
400  else
401  {
402  //std::cout<<"Past niet"<<std::endl;
404 #ifndef ContactListHgrid
405  int bucket = grid->ComputeHashBucketIndex(getParticleHandler().getLastObject()->get_HGRID_x(),getParticleHandler().getLastObject()->get_HGRID_y(), getParticleHandler().getLastObject()->get_HGRID_z(), getParticleHandler().getLastObject()->get_HGRID_Level());
407 #endif
409  return false;
410  }
411 }
void HGRID_UpdateParticleInHgrid(BaseParticle *obj)
This adds a partcile to the Grid, called in the grid setup routies.
Definition: HGRID_3D.cc:220
T * getLastObject() const
Gets a pointer to the last Object in this BaseHandler.
Definition: BaseHandler.h:192
BaseParticle * get_HGRID_NextObject() const
void removeLastObject()
Removes the last Object from the BaseHandler.
Definition: BaseHandler.h:147
bool TestObjAgainstGrid(HGrid *grid, BaseParticle *obj)
Tests obj against all neighbouring particles similar to CheckObjAgainstGrid, but links to TestCell in...
Definition: HGRID_3D.cc:310
int ComputeHashBucketIndex(int x, int y, int z, int l)
Computes hash bucket index in range [0, NUM_BUCKETS-1].
Definition: HGRID.cc:93
void add_particle(BaseParticle &P)
adds particle to hgrid
Definition: Chute.cc:96
HGrid * grid
Definition: HGRID_base.h:131
ParticleHandler & getParticleHandler()
Definition: MD.h:147
BaseParticle ** objectBucket
objectBucket[b] stores pointer to first element in hash bucket b; initially all NULL ...
Definition: HGRID.h:58
void Chute::make_chute_periodic ( )
inline

This makes the chute periodic, in y.

Definition at line 74 of file Chute.h.

References is_periodic.

74 {is_periodic=true;}
bool is_periodic
Definition: Chute.h:266
void Chute::print ( std::ostream &  os,
bool  print_all = false 
)
virtual

This function std::couts all chute data.

Reimplemented from MD.

Reimplemented in ChuteWithHopperAndInset.

Definition at line 88 of file Chute.cc.

References ChuteAngle, FixedParticleRadius, InflowHeight, InflowVelocity, InflowVelocityVariance, max_failed, MaxInflowParticleRadius, MinInflowParticleRadius, num_created, constants::pi, HGRID_base::print(), and RandomizedBottom.

Referenced by ChuteWithHopperAndInset::print(), and ChuteWithHopper::print().

88  {
89  HGRID_base::print(os, print_all);
90  os << " FixedParticleRadius:" << FixedParticleRadius << ", InflowParticleRadius: [" << MinInflowParticleRadius << "," << MaxInflowParticleRadius << "]," << std::endl
91  << " RandomizedBottom:" << RandomizedBottom << ", ChuteAngle:" << ChuteAngle/constants::pi*180. << ", max_failed:" << max_failed << ", num_created:" << num_created << "," << std::endl
92  << " InflowVelocity:" << InflowVelocity << ", InflowVelocityVariance:" << InflowVelocityVariance << ", InflowHeight:" << InflowHeight << std::endl;
93 }
Mdouble InflowVelocity
Definition: Chute.h:256
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
int RandomizedBottom
Definition: Chute.h:251
int max_failed
Definition: Chute.h:259
void print(std::ostream &os, bool print_all)
This function outputs all HGRID data.
Definition: HGRID_base.cc:121
Mdouble InflowVelocityVariance
Definition: Chute.h:257
int num_created
Definition: Chute.h:260
const Mdouble pi
Definition: ExtendedMath.h:54
Mdouble FixedParticleRadius
Definition: Chute.h:250
Mdouble ChuteAngle
Definition: Chute.h:252
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Mdouble InflowHeight
Definition: Chute.h:258
void Chute::read ( std::istream &  is)
virtual

This function reads all chute data.

Reimplemented from MD.

Reimplemented in ChuteWithHopper, and ChuteWithHopperAndInset.

Definition at line 46 of file Chute.cc.

References ChuteAngle, FixedParticleRadius, MD::get_restart_version(), InflowHeight, InflowVelocity, InflowVelocityVariance, max_failed, MaxInflowParticleRadius, MinInflowParticleRadius, num_created, constants::pi, RandomizedBottom, and HGRID_base::read().

Referenced by ChuteWithHopperAndInset::read(), and ChuteWithHopper::read().

46  {
47  HGRID_base::read(is);
48  //read out the full line first, so if there is an error it does not affect the read of the next line
49  std::string line_string;
50  getline(is,line_string);
51  std::cout<<"Chuteline="<<line_string<<std::endl;
52  std::stringstream line (std::stringstream::in | std::stringstream::out);
53  line << line_string;
54 
55  if (get_restart_version()==1) {
59  } else {
60  std::string dummy;
61  line >> dummy >> FixedParticleRadius >> dummy >> MinInflowParticleRadius >> dummy >> MaxInflowParticleRadius
62  >> dummy >> RandomizedBottom >> dummy >> ChuteAngle >> dummy >> max_failed >> dummy >> num_created
63  >> dummy >> InflowVelocity >> dummy >> InflowVelocityVariance >> dummy >> InflowHeight;
64  }
65  //if the Chute Angle is given in degrees, move to radians;
66  if (ChuteAngle>1.0) ChuteAngle *= constants::pi/180.;
67 }
Mdouble InflowVelocity
Definition: Chute.h:256
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
int RandomizedBottom
Definition: Chute.h:251
int max_failed
Definition: Chute.h:259
Mdouble InflowVelocityVariance
Definition: Chute.h:257
int num_created
Definition: Chute.h:260
const Mdouble pi
Definition: ExtendedMath.h:54
Mdouble FixedParticleRadius
Definition: Chute.h:250
Mdouble ChuteAngle
Definition: Chute.h:252
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Mdouble InflowHeight
Definition: Chute.h:258
int get_restart_version()
Gets restart_version.
Definition: MD.h:372
void read(std::istream &is)
This function reads all HGRID data.
Definition: HGRID_base.cc:99
int Chute::readNextArgument ( unsigned int i,
unsigned int  argc,
char *  argv[] 
)
virtual

Reimplemented from MD.

Reimplemented in ChuteWithHopper, and ChuteWithHopperAndInset.

Definition at line 414 of file Chute.cc.

References MD::get_disp(), MD::get_dispt(), MD::get_k(), MD::get_kt(), get_LightestParticleMass(), HGRID_base::readNextArgument(), set_ChuteAngle(), set_ChuteLength(), set_ChuteWidth(), set_FixedParticleRadius(), set_InflowHeight(), set_InflowParticleRadius(), set_InflowVelocity(), set_max_failed(), set_RandomizedBottom(), MD::set_zmax(), and MD::Species.

Referenced by ChuteWithHopperAndInset::readNextArgument(), and ChuteWithHopper::readNextArgument().

414  {
415  if (!strcmp(argv[i],"-inflowHeight")) {
416  set_InflowHeight(atof(argv[i+1]));
417  set_zmax(atof(argv[i+1]));
418  } else if (!strcmp(argv[i],"-inflowVelocity")) {
419  set_InflowVelocity(atof(argv[i+1]));
420  } else if (!strcmp(argv[i],"-chuteAngle")) {
421  set_ChuteAngle(atof(argv[i+1]));
422  } else if (!strcmp(argv[i],"-chuteLength")) {
423  set_ChuteLength(atof(argv[i+1]));
424  } else if (!strcmp(argv[i],"-chuteWidth")) {
425  set_ChuteWidth(atof(argv[i+1]));
426  } else if (!strcmp(argv[i],"-fixedParticleRadius")) {
427  set_FixedParticleRadius(atof(argv[i+1]));
428  } else if (!strcmp(argv[i],"-max_failed")) {
429  set_max_failed(atoi(argv[i+1]));
430  } else if (!strcmp(argv[i],"-inflowParticleRadiusRange")) {
431  set_InflowParticleRadius(atof(argv[i+1]),atof(argv[i+2]));
432  i++;
433  } else if (!strcmp(argv[i],"-inflowParticleRadius")) {
434  set_InflowParticleRadius(atof(argv[i+1]));
435  } else if (!strcmp(argv[i],"-randomizedBottom")) {
436  set_RandomizedBottom(atof(argv[i+1]));
437  } else if (!strcmp(argv[i],"-k_eps")) {
439  //~ Mdouble Mass = getParticleHandler().get_LightestParticle()->get_Mass();
440  Species[0].set_k_and_restitution_coefficient(atof(argv[i+1]), atof(argv[i+2]), Mass);
441  std::cout << "reset contact properties of lightest Particle (mass=" << Mass << ") to k=" << get_k() << " and disp=" << get_disp() << std::endl;
442  i+=1;
443  } else if (!strcmp(argv[i],"-tc_eps")) {
445  Species[0].set_collision_time_and_restitution_coefficient(atof(argv[i+1]), atof(argv[i+2]), Mass);
446  std::cout << "reset contact properties of lightest Particle (mass=" << Mass << ") to k=" << get_k() << " and disp=" << get_disp() << std::endl;
447  i+=1;
448  } else if (!strcmp(argv[i],"-tc_eps_beta")) {
450  Species[0].set_collision_time_and_normal_and_tangential_restitution_coefficient(atof(argv[i+1]), atof(argv[i+2]), atof(argv[i+3]), Mass);
451  std::cout << "reset contact properties of lightest Particle (mass=" << Mass << ") to k=" << get_k() << ", disp=" << get_disp() << ", kt=" << get_kt() << " and dispt=" << get_dispt() << std::endl;
452  i+=2;
453  } else return HGRID_3D::readNextArgument(i, argc, argv); //if argv[i] is not found, check the commands in HGRID_3D
454  return true; //returns true if argv[i] is found
455 }
void set_zmax(Mdouble new_zmax)
Sets ymax and walls, assuming the standard definition of walls as in the default constructor.
Definition: MD.h:334
Mdouble get_dispt(unsigned int indSpecies=0)
Allows the tangential viscosity to be accessed.
Definition: MD.h:226
Mdouble get_LightestParticleMass()
Returns the radius of the smallest particle.
Definition: Chute.cc:218
void set_InflowVelocity(Mdouble new_)
Changes inflow velocity.
Definition: Chute.h:146
void set_ChuteAngle(Mdouble new_)
Sets gravity vector according to chute angle (in degrees)
Definition: Chute.h:102
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
void set_max_failed(unsigned int new_)
Allows radius of fixed particles to be changed.
Definition: Chute.h:112
void set_InflowHeight(Mdouble new_)
Changes inflow height.
Definition: Chute.h:139
void set_RandomizedBottom(int new_)
Changes RandomizedBottom.
Definition: Chute.h:97
double Mdouble
Definition: ExtendedMath.h:33
void set_ChuteWidth(Mdouble new_)
Access function that set the width of the chute.
Definition: Chute.h:185
Mdouble get_k(int indSpecies=0)
Allows the spring constant to be accessed.
Definition: MD.h:206
Mdouble get_kt(int indSpecies=0)
Allows the spring constant to be accessed.
Definition: MD.h:210
virtual void set_ChuteLength(Mdouble new_)
Definition: Chute.h:187
Mdouble get_disp(unsigned int indSpecies=0)
Allows the normal dissipation to be accessed.
Definition: MD.h:239
int readNextArgument(unsigned int &i, unsigned int argc, char *argv[])
Definition: HGRID_base.cc:277
void set_FixedParticleRadius(Mdouble new_)
Allows radius of fixed particles to be changed.
Definition: Chute.h:92
void set_InflowParticleRadius(Mdouble new_)
Allows radius of inflow particles to be changed.
Definition: Chute.h:117
void Chute::set_ChuteAngle ( Mdouble  new_)
inline

Sets gravity vector according to chute angle (in degrees)

Definition at line 102 of file Chute.h.

References MD::get_gravity(), Vec3D::GetLength(), MD::gravity, and set_ChuteAngle().

Referenced by constructor(), ChuteBottom::make_rough_bottom(), readNextArgument(), and set_ChuteAngle().

102 {Mdouble gravity = get_gravity().GetLength(); if (gravity==0) {std::cerr<<"WARNING: zero gravity";} set_ChuteAngle(new_, gravity);}
void set_ChuteAngle(Mdouble new_)
Sets gravity vector according to chute angle (in degrees)
Definition: Chute.h:102
double Mdouble
Definition: ExtendedMath.h:33
Vec3D gravity
Gravitational acceleration.
Definition: MD.h:663
Mdouble GetLength() const
Definition: Vector.h:248
Vec3D get_gravity()
Allows the gravitational acceleration to be accessed.
Definition: MD.h:364
void Chute::set_ChuteAngle ( Mdouble  new_,
Mdouble  gravity 
)
inline

Sets gravity vector according to chute angle (in degrees)

Definition at line 104 of file Chute.h.

References ChuteAngle, constants::pi, and MD::set_gravity().

104 {if (new_>=-90.0&&new_<=90.0) {ChuteAngle = new_*constants::pi/180.0; set_gravity(Vec3D(sin(ChuteAngle), 0.0, -cos(ChuteAngle))*gravity);} else std::cerr << "WARNING : Chute angle must be within [-90,90]" << std::endl;}
const Mdouble pi
Definition: ExtendedMath.h:54
Mdouble ChuteAngle
Definition: Chute.h:252
Vec3D gravity
Gravitational acceleration.
Definition: MD.h:663
void set_gravity(Vec3D new_gravity)
Allows the gravitational acceleration to be changed.
Definition: MD.h:362
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:40
virtual void Chute::set_ChuteLength ( Mdouble  new_)
inlinevirtual

Reimplemented in ChuteWithHopper, and ChuteWithHopperAndInset.

Definition at line 187 of file Chute.h.

References MD::set_xmax().

Referenced by readNextArgument().

187 {set_xmax(new_);}
void set_xmax(Mdouble new_xmax)
Sets xmax and walls, assuming the standard definition of walls as in the default constructor.
Definition: MD.h:328
void Chute::set_ChuteWidth ( Mdouble  new_)
inline

Access function that set the width of the chute.

Definition at line 185 of file Chute.h.

References MD::set_ymax().

Referenced by readNextArgument().

185 {set_ymax(new_);}
void set_ymax(Mdouble new_ymax)
Sets ymax and walls, assuming the standard definition of walls as in the default constructor.
Definition: MD.h:331
void Chute::set_collision_time_and_restitution_coefficient ( Mdouble  tc,
Mdouble  eps 
)

Sets k, disp such that it matches a given tc and eps for a collision of two inflow particles.

Definition at line 157 of file Chute.cc.

References BaseParticle::compute_particle_mass(), MD::get_dissipation(), BaseParticle::get_Mass(), BaseParticle::get_Radius(), MD::get_rho(), MaxInflowParticleRadius, MinInflowParticleRadius, P0, constants::pi, MD::set_dissipation(), MD::set_k(), BaseParticle::set_Radius(), MD::Species, and sqr.

Referenced by ChuteBottom::make_rough_bottom().

157  {
160  set_dissipation(- P0.get_Mass() / tc * log(eps));
162  std::cout << "collision time and restitution coefficient is set for a particle of radius " << P0.get_Radius() << " and density " << get_rho() << std::endl;
163 }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
void compute_particle_mass(std::vector< CSpecies > &Species)
Compute Particle mass function, which required a reference to the Species vector. It copmuters the Pa...
#define sqr(a)
Definition: ExtendedMath.h:36
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
Mdouble get_dissipation(unsigned int indSpecies=0)
Allows the normal dissipation to be accessed.
Definition: MD.h:243
Mdouble get_Radius() const
Mdouble get_Mass() const
const Mdouble pi
Definition: ExtendedMath.h:54
Mdouble get_rho(int indSpecies=0)
Allows the density to be accessed.
Definition: MD.h:222
TangentialSpringParticle P0
Definition: Chute.h:262
void set_Radius(const Mdouble _new)
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
void set_dissipation(Mdouble new_, unsigned int indSpecies=0)
Allows the normal dissipation to be changed.
Definition: MD.h:241
void set_k(Mdouble new_, unsigned int indSpecies=0)
Allows the spring constant to be changed.
Definition: MD.h:204
void Chute::set_dt ( )
inline

Sets dt to 1/50-th of the collision time for two particles of mass P.

Definition at line 202 of file Chute.h.

References get_collision_time(), and set_dt().

Referenced by ChuteBottom::make_rough_bottom(), and set_dt().

202 {std::cout<<"Chute set_dt"<<std::endl;set_dt(.02 * get_collision_time());}
void set_dt()
Sets dt to 1/50-th of the collision time for two particles of mass P.
Definition: Chute.h:202
Mdouble get_collision_time()
Calculates collision time of two inflow particles.
Definition: Chute.cc:165
void Chute::set_dt ( Mdouble  dt)
inline

Sets dt.

Definition at line 204 of file Chute.h.

References MD::set_dt().

204 {MD::set_dt(dt);}
void set_dt()
Sets dt to 1/50-th of the smallest possible collision time.
Definition: MD.h:447
Mdouble dt
These are numerical constants like the time step size.
Definition: MD.h:671
void Chute::set_FixedParticleRadius ( Mdouble  new_)
inline

Allows radius of fixed particles to be changed.

Definition at line 92 of file Chute.h.

References FixedParticleRadius.

Referenced by constructor(), ChuteBottom::make_rough_bottom(), and readNextArgument().

92 {if (new_ >= 0.0) FixedParticleRadius=new_; else std::cerr << "WARNING : Fixed particle radius must be greater than or equal to zero" << std::endl;}
Mdouble FixedParticleRadius
Definition: Chute.h:250
void Chute::set_InflowHeight ( Mdouble  new_)
inline

Changes inflow height.

Definition at line 139 of file Chute.h.

References InflowHeight, MaxInflowParticleRadius, MinInflowParticleRadius, and MD::set_zmax().

Referenced by constructor(), ChuteBottom::make_rough_bottom(), readNextArgument(), and set_InitialHeight().

139  {
140  if (new_ >= MinInflowParticleRadius+MaxInflowParticleRadius) { InflowHeight=new_; set_zmax(1.2*InflowHeight); } else std::cerr << "WARNING : Inflow height not changed to " << new_ << ", value must be greater than or equal to diameter of inflow particle" << std::endl;
141  }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
void set_zmax(Mdouble new_zmax)
Sets ymax and walls, assuming the standard definition of walls as in the default constructor.
Definition: MD.h:334
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Mdouble InflowHeight
Definition: Chute.h:258
void Chute::set_InflowParticleRadius ( Mdouble  new_)
inline

Allows radius of inflow particles to be changed.

Definition at line 117 of file Chute.h.

References MaxInflowParticleRadius, and MinInflowParticleRadius.

Referenced by constructor(), create_bottom(), and readNextArgument().

117  {
118  if (new_>=0.0) {MinInflowParticleRadius=MaxInflowParticleRadius=new_;} else std::cerr << "WARNING : Inflow particle must be greater than or equal to zero" << std::endl;
119  }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
void Chute::set_InflowParticleRadius ( Mdouble  new_min,
Mdouble  new_max 
)
inline

Allows radius of inflow particles to be set to a range of values.

Definition at line 121 of file Chute.h.

References MaxInflowParticleRadius, and MinInflowParticleRadius.

121  {
122  if (new_min>=0.0) {MinInflowParticleRadius=new_min;} else std::cerr << "WARNING : Min. inflow particle radius must be nonnegative" << std::endl;
123  if (new_max>=new_min) {MaxInflowParticleRadius=new_max;} else std::cerr << "WARNING : Max. inflow particle radius must be >= min. inflow particle radius" << std::endl;
124  }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
void Chute::set_InflowVelocity ( Mdouble  new_)
inline

Changes inflow velocity.

Definition at line 146 of file Chute.h.

References InflowVelocity.

Referenced by constructor(), readNextArgument(), and set_InitialVelocity().

146  {
147  if (new_ >= 0.0) InflowVelocity=new_; else std::cerr << "WARNING : Inflow velocity not changed, value must be greater than or equal to zero" << std::endl;
148  }
Mdouble InflowVelocity
Definition: Chute.h:256
void Chute::set_InflowVelocityVariance ( Mdouble  new_)
inline

Changes inflow velocity variance.

Definition at line 153 of file Chute.h.

References InflowVelocityVariance.

Referenced by constructor(), and set_InitialVelocityVariance().

153  {
154  if (new_>=0.0&&new_<=1.0) InflowVelocityVariance=new_; else std::cerr << "WARNING : Inflow velocity variance not changed, value must be within [0,1]" << std::endl;
155  }
Mdouble InflowVelocityVariance
Definition: Chute.h:257
void Chute::set_InitialHeight ( Mdouble  new_)
inline

Definition at line 159 of file Chute.h.

References set_InflowHeight().

159  {
160  std::cerr << "WARNING : set_InitialHeight(Mdouble) is a deprecated function, use set_InflowHeight(Mdouble) instead." << std::endl;
161  set_InflowHeight(new_);
162  }
void set_InflowHeight(Mdouble new_)
Changes inflow height.
Definition: Chute.h:139
void Chute::set_InitialVelocity ( Mdouble  new_)
inline

Definition at line 167 of file Chute.h.

References set_InflowVelocity().

167  {
168  std::cerr << "WARNING : set_InitialVelocity(Mdouble) is a deprecated function, use set_InflowVelocity(Mdouble) instead." << std::endl;
169  set_InflowVelocity(new_);
170  }
void set_InflowVelocity(Mdouble new_)
Changes inflow velocity.
Definition: Chute.h:146
void Chute::set_InitialVelocityVariance ( Mdouble  new_)
inline

Definition at line 175 of file Chute.h.

References set_InflowVelocityVariance().

175  {
176  std::cerr << "WARNING : set_InitialVelocityVariance(Mdouble) is a deprecated function, use set_InflowVelocityVariance(Mdouble) instead." << std::endl;
178  }
void set_InflowVelocityVariance(Mdouble new_)
Changes inflow velocity variance.
Definition: Chute.h:153
void Chute::set_max_failed ( unsigned int  new_)
inline

Allows radius of fixed particles to be changed.

Definition at line 112 of file Chute.h.

References max_failed.

Referenced by constructor(), and readNextArgument().

112 {max_failed = new_;}
int max_failed
Definition: Chute.h:259
void Chute::set_MaxInflowParticleRadius ( Mdouble  new_max)
inline

Definition at line 128 of file Chute.h.

References MaxInflowParticleRadius, and MinInflowParticleRadius.

128  {
129  if (new_max>=MinInflowParticleRadius) {MaxInflowParticleRadius=new_max;} else std::cerr << "WARNING : Max. inflow particle radius must be >= min. inflow particle radius" << std::endl;
130  }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
void Chute::set_MinInflowParticleRadius ( Mdouble  new_min)
inline

Definition at line 125 of file Chute.h.

References MaxInflowParticleRadius, and MinInflowParticleRadius.

125  {
126  if (new_min<=MaxInflowParticleRadius) {MinInflowParticleRadius=new_min;} else std::cerr << "WARNING : Max. inflow particle radius must be >= min. inflow particle radius" << std::endl;
127  }
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
void Chute::set_RandomizedBottom ( int  new_)
inline

Changes RandomizedBottom.

Definition at line 97 of file Chute.h.

References RandomizedBottom.

Referenced by constructor(), ChuteBottom::make_rough_bottom(), and readNextArgument().

97 {RandomizedBottom = new_;}
int RandomizedBottom
Definition: Chute.h:251
void Chute::setup_particles_initial_conditions ( )
virtual

initialize particle position, velocity, radius

This initially set up the particles///.

Reimplemented from MD.

Reimplemented in ChuteBottom, ChuteWithHopper, ChuteWithHopperAndInset, and ChuteWithHopperAndInset.

Definition at line 229 of file Chute.cc.

References BaseHandler< T >::copyAndAddObject(), WallHandler::copyAndAddWall(), create_bottom(), MD::get_ymax(), MD::get_ymin(), MD::getBoundaryHandler(), MD::getWallHandler(), is_periodic, PeriodicBoundary::set(), and InfiniteWall::set().

Referenced by ChuteWithHopperAndInset::setup_particles_initial_conditions(), and ChuteWithHopper::setup_particles_initial_conditions().

230 {
231  //set side walls - solid if not a periodic
232  if (is_periodic)
233  {
234  PeriodicBoundary b0;
235  b0.set(Vec3D( 0.0, 1.0, 0.0), get_ymin(), get_ymax());
237  }
238  else
239  {
240  InfiniteWall w0;
241  w0.set(Vec3D( 0.0,-1.0, 0.0), -get_ymin());
243  w0.set(Vec3D( 0.0, 1.0, 0.0), get_ymax());
245  }
246 
247  //creates the bottom of the chute
248  create_bottom();
249 }
void copyAndAddObject(const T &O)
Creates a copy of a Object and adds it to the BaseHandler.
Definition: BaseHandler.h:93
Mdouble get_ymax()
Gets ymax.
Definition: MD.h:311
bool is_periodic
Definition: Chute.h:266
Defines a pair of periodic walls. The particles are in {x: position_left<=normal*x
virtual void create_bottom()
Create the bottom of chute out of particles.
Definition: Chute.cc:254
WallHandler & getWallHandler()
Definition: MD.h:148
Mdouble get_ymin()
Gets ymin.
Definition: MD.h:309
void copyAndAddWall(const BaseWall &B)
Creates a copy of a BaseWall and adds it to the WallHandler.
Definition: WallHandler.cc:84
void set(Vec3D normal_, Mdouble position_)
Defines a standard wall, given an outward normal vector s. t. normal*x=position.
Definition: InfiniteWall.h:75
BoundaryHandler & getBoundaryHandler()
Definition: MD.h:149
This is a class defining walls.
Definition: InfiniteWall.h:42
void set(Vec3D normal_, Mdouble position_left_, Mdouble position_right_)
Defines a periodic wall, given a normal vector s.t.
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:40
void Chute::write ( std::ostream &  os)
virtual

This function writes all chute data.

Reimplemented from MD.

Reimplemented in ChuteWithHopper, and ChuteWithHopperAndInset.

Definition at line 70 of file Chute.cc.

References ChuteAngle, FixedParticleRadius, InflowHeight, InflowVelocity, InflowVelocityVariance, max_failed, MaxInflowParticleRadius, MinInflowParticleRadius, num_created, constants::pi, RandomizedBottom, and HGRID_base::write().

Referenced by ChuteWithHopperAndInset::write(), and ChuteWithHopper::write().

70  {
71  HGRID_base::write(os);
72  os<< "FixedParticleRadius " << FixedParticleRadius
73  << " MinInflowParticleRadius " << MinInflowParticleRadius
74  << " MaxInflowParticleRadius " << MaxInflowParticleRadius
75  << std::endl
76  << "RandomizedBottom " << RandomizedBottom
77  << " ChuteAngle " << ChuteAngle/constants::pi*180.
78  << " max_failed " << max_failed
79  << " num_created " << num_created
80  << std::endl
81  << "InflowVelocity " << InflowVelocity
82  << " InflowVelocityVariance " << InflowVelocityVariance
83  << " InflowHeight " << InflowHeight
84  << std::endl;
85 }
Mdouble InflowVelocity
Definition: Chute.h:256
Mdouble MinInflowParticleRadius
Definition: Chute.h:254
int RandomizedBottom
Definition: Chute.h:251
int max_failed
Definition: Chute.h:259
Mdouble InflowVelocityVariance
Definition: Chute.h:257
int num_created
Definition: Chute.h:260
const Mdouble pi
Definition: ExtendedMath.h:54
void write(std::ostream &os)
This function writes all HGRID data.
Definition: HGRID_base.cc:113
Mdouble FixedParticleRadius
Definition: Chute.h:250
Mdouble ChuteAngle
Definition: Chute.h:252
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Mdouble InflowHeight
Definition: Chute.h:258

Member Data Documentation

Mdouble Chute::InflowHeight
protected

Definition at line 258 of file Chute.h.

Referenced by get_InflowHeight(), print(), read(), set_InflowHeight(), and write().

Mdouble Chute::InflowVelocity
protected
Mdouble Chute::InflowVelocityVariance
protected
bool Chute::is_periodic
private
int Chute::max_failed
protected
int Chute::num_created
protected
int Chute::RandomizedBottom
protected

Definition at line 251 of file Chute.h.

Referenced by create_bottom(), get_RandomizedBottom(), print(), read(), set_RandomizedBottom(), and write().


The documentation for this class was generated from the following files: