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

ChuteWithHopper has a hopper as inflow. More...

#include <ChuteWithHopper.h>

+ Inheritance diagram for ChuteWithHopper:

Public Member Functions

 ChuteWithHopper (Chute &other)
 This is a copy constructor for Chute problems. More...
 
 ChuteWithHopper (HGRID_3D &other)
 
 ChuteWithHopper (HGRID_base &other)
 
 ChuteWithHopper (MD &other)
 
 ChuteWithHopper ()
 This is the default constructor. More...
 
void constructor ()
 This is the actually constructor, get called by all constructors above. More...
 
void set_HopperFillPercentage (Mdouble new_fill)
 
virtual void setup_particles_initial_conditions ()
 initialize particle position, velocity, radius More...
 
void add_hopper ()
 This creates the hopper on top of the chute, see diagram in class description for details of the points. More...
 
virtual void create_inflow_particle ()
 This creates an inflow particle in the top 50% of the hopper i.e. More...
 
void set_HopperLowestPoint (Mdouble point)
 
Mdouble get_HopperLowestPoint ()
 
void set_Hopper (Mdouble ExitLength, Mdouble ExitHeight, Mdouble Angle, Mdouble Length, Mdouble Height)
 
Mdouble get_MaximumVelocityInducedByGravity ()
 Allows chute length to be accessed. More...
 
Mdouble get_ChuteLength ()
 Allows chute length to be accessed. More...
 
void set_ChuteLength (Mdouble new_)
 Allows chute length to be changed. More...
 
void set_centerHopper (bool new_)
 
void set_lowerFillHeight (Mdouble new_)
 
void set_shift (Mdouble new_)
 
virtual 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...
 
virtual void print (std::ostream &os)
 
void lift_hopper (Mdouble distance)
 This lifts the hopper above the plane of the chute. More...
 
Mdouble get_lift_hopper ()
 
void set_hopper_dim (Mdouble new_hopper_dim)
 
void set_align_base (bool new_align)
 
int readNextArgument (unsigned int &i, unsigned int argc, char *argv[])
 
- Public Member Functions inherited from Chute
 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 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 ()
 
Mdouble get_ChuteLength ()
 
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 Attributes

Mdouble HopperLength
 Dimension of the hopper in vertical direction. More...
 
Mdouble HopperHeight
 Dimension of the hopper in horizontal direction. More...
 
Mdouble HopperAngle
 Angle between the two pieces of the hopper walls. More...
 
Mdouble HopperExitLength
 Dimension of the hopper exit in vertical direction. More...
 
Mdouble HopperExitHeight
 Dimension of the hopper exit in vertical direction. More...
 
Mdouble shift
 The x position where the Chute starts (defined as the beginning of the hopper) More...
 
Mdouble lowerFillHeight
 Relative height (in [0,1)) above which the hopper is replenished with new particles. More...
 
bool centerHopper
 If this flag is set, the hopper will be constructed in the xy-center of the domain, and not next to the xmin-domain boundary; by default off. More...
 
- Protected Attributes inherited from Chute
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

Mdouble lift
 This is the vertical distance the chute is lifted above the plane. More...
 
unsigned int hopper_dim
 This is the dimension of the hopper, my default it is one dimensional and hence does not have side wall. More...
 
bool align_base
 This is the flag, which sets if the chute bottom is aligned with the hopper, by default it is. More...
 
Mdouble fill_percent
 This is which percentage of the hopper is used for creating new partices;. More...
 
Mdouble HopperLowestPoint
 The z coordinate of the right C point (when the left C point is in the origin) More...
 

Additional Inherited Members

- Public Attributes inherited from HGRID_base
HGridgrid
 
- Public Attributes inherited from MD
RNG random
 
- Protected Member Functions inherited from Chute
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_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...
 

Detailed Description

ChuteWithHopper has a hopper as inflow.

The hopper has two parts as follows to create the finite hopper walls, we take vector between two wall points in xz-plane, then rotate clockwise and make unit length.

hopper.jpg
Sketch of the hopper

A,B,C denote three points on the left and right hopper walls which are used to construct the hopper shift denotes the space by which the chute has to be shifted to the right such that the hopper is in the domain Note the wall direction has to be set seperately either period of walls.

Definition at line 38 of file ChuteWithHopper.h.

Constructor & Destructor Documentation

ChuteWithHopper::ChuteWithHopper ( Chute other)
inline

This is a copy constructor for Chute problems.

Bug:
This copy construct is untested

Definition at line 77 of file ChuteWithHopper.h.

References constructor().

77 : MD(other), Chute(other) {constructor();}
MD()
Definition: MD.h:75
Chute()
This is the default constructor. All it does is set sensible defaults.
Definition: Chute.h:38
void constructor()
This is the actually constructor, get called by all constructors above.
ChuteWithHopper::ChuteWithHopper ( HGRID_3D other)
inline

Definition at line 78 of file ChuteWithHopper.h.

References constructor().

78 : MD(other), Chute(other) {constructor();}
MD()
Definition: MD.h:75
Chute()
This is the default constructor. All it does is set sensible defaults.
Definition: Chute.h:38
void constructor()
This is the actually constructor, get called by all constructors above.
ChuteWithHopper::ChuteWithHopper ( HGRID_base other)
inline

Definition at line 79 of file ChuteWithHopper.h.

References constructor().

79 : MD(other), Chute(other) {constructor();}
MD()
Definition: MD.h:75
Chute()
This is the default constructor. All it does is set sensible defaults.
Definition: Chute.h:38
void constructor()
This is the actually constructor, get called by all constructors above.
ChuteWithHopper::ChuteWithHopper ( MD other)
inline

Definition at line 80 of file ChuteWithHopper.h.

References constructor().

80 : MD(other), Chute(other) {constructor();}
MD()
Definition: MD.h:75
Chute()
This is the default constructor. All it does is set sensible defaults.
Definition: Chute.h:38
void constructor()
This is the actually constructor, get called by all constructors above.
ChuteWithHopper::ChuteWithHopper ( )
inline

This is the default constructor.

Definition at line 83 of file ChuteWithHopper.h.

References constructor().

83 {constructor();}
void constructor()
This is the actually constructor, get called by all constructors above.

Member Function Documentation

void ChuteWithHopper::add_hopper ( )
inline

This creates the hopper on top of the chute, see diagram in class description for details of the points.

"0.5*(HopperLength+HopperExitLength) / tan(HopperAngle)" is the minimum heigth of the hopper, to make sure things should flow down and not to the sides.

todo{Why shift by arbitrary number of 40, when centerHopper=True}

Definition at line 110 of file ChuteWithHopper.h.

References A, FiniteWall::add_finite_wall(), centerHopper, Chute::ChuteAngle, WallHandler::copyAndAddWall(), Cross(), BaseHandler< T >::end(), Chute::get_ChuteAngle(), MD::get_ymax(), MD::get_ymin(), Vec3D::GetLength2, MD::getParticleHandler(), MD::getWallHandler(), hopper_dim, HopperAngle, HopperExitHeight, HopperExitLength, HopperHeight, HopperLength, HopperLowestPoint, lift, set_shift(), MD::set_zmax(), shift, Vec3D::X, and Vec3D::Z.

Referenced by setup_particles_initial_conditions().

110  {
111  //hopper walls
112  //to create the finite hopper walls, we take vector between two wall points in xz-plane, then rotate clockwise and make unit length
113  // A\ /A
114  // \ / A,B,C denote three points on the left and right hopper walls which are used to construct the hopper
115  // \ / shift denotes the space by which the chute has to be shifted to the right such that the hopper is in the domain
116  // B| |B
117  // | |
118  // | |C
119  // C|
120 
121  Vec3D A, B, C, temp, normal;
122 
123  Mdouble s = sin(get_ChuteAngle());
124  Mdouble c = cos(get_ChuteAngle());
126 
128  //HopperHeight is now an input variable
129  //HopperHeight = HopperLowestPoint + 1.1 * 0.5*(HopperLength+HopperExitLength) / tan(HopperAngle);
130 
131  Mdouble HopperCornerHeight = HopperHeight - 0.5*(HopperLength-HopperExitLength) / tan(HopperAngle);
132  // Waarom had ik deze ook al weer gecomment?
133  //if (HopperCornerHeight<=0.0) { HopperHeight += -HopperCornerHeight + P0.get_Radius(); HopperCornerHeight = P0.get_Radius(); }
134 
135 
136  //first we create the left hopper wall
137 
138  //coordinates of A,B,C in (vertical parallel to flow,vertical normal to flow, horizontal) direction
140  B = Vec3D(0.0, 0.0, HopperCornerHeight);
141  C = Vec3D(0.0, 0.0, 0.0);
142 
143 
144 
145  //now rotate the coordinates of A,B,C to be in (x,y,z) direction
146  A = Vec3D(c*A.X-s*A.Z, 0.0, s*A.X+c*A.Z);
147  B = Vec3D(c*B.X-s*B.Z, 0.0, s*B.X+c*B.Z);
148  C = Vec3D(c*C.X-s*C.Z, 0.0, s*C.X+c*C.Z);
149  // the position of A determines shift and zmax
151  if (centerHopper) set_shift(-A.X+40);
152  else set_shift(-A.X);
153  set_zmax(A.Z);
154  A.X +=shift;
155  B.X +=shift;
156  C.X +=shift;
157 
158  //This lifts the hopper a distance above the chute
159  A.Z+=lift;
160  B.Z+=lift;
161  C.Z+=lift;
162 
163  //create a finite wall from B to A and from C to B on the left hand side
164  FiniteWall w_Left;
165  temp = B-A;
166  normal = Vec3D(temp.Z,0.0,-temp.X) / sqrt(temp.GetLength2());
167  w_Left.add_finite_wall(normal, Dot(normal,A));
168  temp = C-B;
169  normal = Vec3D(temp.Z,0.0,-temp.X) / sqrt(temp.GetLength2());
170  w_Left.add_finite_wall(normal, Dot(normal,B));
171  temp = A-C;
172  normal = Vec3D(temp.Z,0.0,-temp.X)/sqrt(temp.GetLength2());
173  w_Left.add_finite_wall(normal,Dot(normal,C));
174  getWallHandler().copyAndAddWall(w_Left);
175 
176  //next, do the same for the right wall
178  B = Vec3D(0.5*(HopperLength+HopperExitLength)-0.5*(HopperLength-HopperExitLength), 0.0, HopperCornerHeight);
180 
181  //This rotates the right points
182  A = Vec3D(c*A.X-s*A.Z+shift, 0.0, s*A.X+c*A.Z);
183  B = Vec3D(c*B.X-s*B.Z+shift, 0.0, s*B.X+c*B.Z);
184  C = Vec3D(c*C.X-s*C.Z+shift, 0.0, s*C.X+c*C.Z);
185 
186  //This lifts the hopper a distance above the chute
187  A.Z+=lift;
188  B.Z+=lift;
189  C.Z+=lift;
190 
191  //create a finite wall from B to A and from C to B on the right hand side
192  FiniteWall w_Right;
193  temp = A-B;
194  normal = Vec3D(temp.Z,0.0,-temp.X) / sqrt(temp.GetLength2());
195  w_Right.add_finite_wall(normal, Dot(normal,A));
196  temp = B-C;
197  normal = Vec3D(temp.Z,0.0,-temp.X) / sqrt(temp.GetLength2());
198  w_Right.add_finite_wall(normal, Dot(normal,B));
199  temp = C-A;
200  normal = Vec3D(temp.Z,0.0,-temp.X) / sqrt(temp.GetLength2());
201  w_Right.add_finite_wall(normal, Dot(normal,C));
202  getWallHandler().copyAndAddWall(w_Right);
203 
204  set_zmax(A.Z);
205 
206  if (hopper_dim == 2)
207  {
208  //coordinates of A,B,C in (vertical parallel to flow,vertical normal to flow, horizontal) direction
209  A = Vec3D(0.0, (get_ymax()-get_ymin()-HopperLength)/2.0, HopperHeight);
210  B = Vec3D(0.0, (get_ymax()-get_ymin()-HopperExitLength)/2.0, HopperCornerHeight);
211  C = Vec3D(0.0, (get_ymax()-get_ymin()-HopperExitLength)/2.0, 0.0);
212 
213 
214 
215  //now rotate the coordinates of A,B,C to be in (x,y,z) direction
216  A = Vec3D(c*A.X-s*A.Z, A.Y, s*A.X+c*A.Z);
217  B = Vec3D(c*B.X-s*B.Z, B.Y, s*B.X+c*B.Z);
218  C = Vec3D(c*C.X-s*C.Z, C.Y, s*C.X+c*C.Z);
219  // the position of A determines shift and zmax
220  A.X +=shift;
221  B.X +=shift;
222  C.X +=shift;
223 
224  //This lifts the hopper a distance above the chute
225  A.Z+=lift;
226  B.Z+=lift;
227  C.Z+=lift;
228 
229 
230 
231  //create a finite wall from B to A and from C to B
232  FiniteWall w_Back;
233  temp = B-A;
234  normal=Cross(Vec3D(-c,0,-s),temp)/sqrt(temp.GetLength2());
235  //normal = Vec3D(0.0,temp.Z,-temp.Y) / sqrt(temp.GetLength2());
236  w_Back.add_finite_wall(normal, Dot(normal,A));
237  temp = C-B;
238  //normal = Vec3D(0.0,temp.Z,-temp.Y) / sqrt(temp.GetLength2());
239  normal=Cross(Vec3D(-c,0,-s),temp)/sqrt(temp.GetLength2());
240  w_Back.add_finite_wall(normal, Dot(normal,B));
241  temp = A-C;
242  //normal = Vec3D(0.0,temp.Z,-temp.Y)/sqrt(temp.GetLength2());
243  normal=Cross(Vec3D(-c,0,-s),temp)/sqrt(temp.GetLength2());
244  w_Back.add_finite_wall(normal,Dot(normal,C));
245  getWallHandler().copyAndAddWall(w_Back);
246 
247  //Now for the right y-wall
248  A = Vec3D(0.0, (get_ymax()-get_ymin()+HopperLength)/2.0,HopperHeight);
249  B = Vec3D(0.0, (get_ymax()-get_ymin()+HopperExitLength)/2.0,HopperCornerHeight);
250  C = Vec3D(0.0, (get_ymax()-get_ymin()+HopperExitLength)/2.0,0.0);
251 
252  //now rotate the coordinates of A,B,C to be in (x,y,z) direction
253  A = Vec3D(c*A.X-s*A.Z, A.Y, s*A.X+c*A.Z);
254  B = Vec3D(c*B.X-s*B.Z, B.Y, s*B.X+c*B.Z);
255  C = Vec3D(c*C.X-s*C.Z, C.Y, s*C.X+c*C.Z);
256  // the position of A determines shift and zmax
257  A.X +=shift;
258  B.X +=shift;
259  C.X +=shift;
260 
261  //This lifts the hopper a distance above the chute
262  A.Z+=lift;
263  B.Z+=lift;
264  C.Z+=lift;
265 
266  //create a finite wall from B to A and from C to B
267  FiniteWall w_Front;
268  temp = A-B;
269  normal=Cross(Vec3D(-c,0,-s),temp)/sqrt(temp.GetLength2());
270  //normal = Vec3D(0.0,-temp.Z,temp.Y) / sqrt(temp.GetLength2());
271  w_Front.add_finite_wall(normal, Dot(normal,A));
272  temp = B-C;
273  //normal = Vec3D(0.0,-temp.Z,temp.Y) / sqrt(temp.GetLength2());
274  normal=Cross(Vec3D(-c,0,-s),temp)/sqrt(temp.GetLength2());
275  w_Front.add_finite_wall(normal, Dot(normal,B));
276  temp = C-A;
277  //normal = Vec3D(0.0,-temp.Z,temp.Y)/sqrt(temp.GetLength2());
278  normal=Cross(Vec3D(-c,0,-s),temp)/sqrt(temp.GetLength2());
279  w_Front.add_finite_wall(normal,Dot(normal,C));
280  getWallHandler().copyAndAddWall(w_Front);
281  }
282 
283 
284  //now shift the fixed particles at the bottom so that they begin where the chute begins
285  for (std::vector<BaseParticle*>::iterator it= getParticleHandler().begin(); it!=getParticleHandler().end(); ++it) {
286  (*it)->move(Vec3D(shift,0.0,0.0));
287  #ifdef USE_SIMPLE_VERLET_INTEGRATION
288  (*it)->movePrevious(Vec3D(shift,0.0,0.0));
289  #endif
290  }
291  }
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 X
Definition: Vector.h:44
Matrix3D Cross(const Vec3D &A, const Matrix3D &B)
Definition: Matrix.h:198
bool centerHopper
If this flag is set, the hopper will be constructed in the xy-center of the domain, and not next to the xmin-domain boundary; by default off.
Mdouble get_ymax()
Gets ymax.
Definition: MD.h:311
friend Mdouble GetLength2(const Vec3D &A)
Definition: Vector.h:183
Mdouble shift
The x position where the Chute starts (defined as the beginning of the hopper)
WallHandler & getWallHandler()
Definition: MD.h:148
Mdouble get_ymin()
Gets ymin.
Definition: MD.h:309
Mdouble HopperHeight
Dimension of the hopper in horizontal direction.
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
Mdouble HopperExitLength
Dimension of the hopper exit in vertical direction.
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 HopperAngle
Angle between the two pieces of the hopper walls.
Mdouble ChuteAngle
Definition: Chute.h:252
void add_finite_wall(Vec3D normal, Vec3D point)
Adds a wall to the set of finite walls, given an outward normal vector s.t. normal*x=normal*point.
Definition: FiniteWall.h:57
Mdouble HopperExitHeight
Dimension of the hopper exit in vertical direction.
ParticleHandler & getParticleHandler()
Definition: MD.h:147
void set_shift(Mdouble new_)
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:40
Mdouble lift
This is the vertical distance the chute is lifted above the plane.
Mdouble HopperLowestPoint
The z coordinate of the right C point (when the left C point is in the origin)
Mdouble Z
Definition: Vector.h:44
unsigned int hopper_dim
This is the dimension of the hopper, my default it is one dimensional and hence does not have side wa...
Mdouble get_ChuteAngle()
Gets chute angle (in radians)
Definition: Chute.h:108
Mdouble HopperLength
Dimension of the hopper in vertical direction.
void ChuteWithHopper::constructor ( )
inline

This is the actually constructor, get called by all constructors above.

Definition at line 86 of file ChuteWithHopper.h.

References align_base, centerHopper, fill_percent, hopper_dim, lift, lowerFillHeight, set_Hopper(), and shift.

Referenced by ChuteWithHopper().

87  {
88  lowerFillHeight=0.5;
89  lift=0.0;
90  set_Hopper(0.01, 0.01, 60.0, 0.08, 0.04);
91  shift = 0.0;
92  hopper_dim=1;
93  align_base=true;
94 
95  fill_percent=50.0;
96  centerHopper=false;
97 
98  }
void set_Hopper(Mdouble ExitLength, Mdouble ExitHeight, Mdouble Angle, Mdouble Length, Mdouble Height)
bool align_base
This is the flag, which sets if the chute bottom is aligned with the hopper, by default it is...
bool centerHopper
If this flag is set, the hopper will be constructed in the xy-center of the domain, and not next to the xmin-domain boundary; by default off.
Mdouble fill_percent
This is which percentage of the hopper is used for creating new partices;.
Mdouble shift
The x position where the Chute starts (defined as the beginning of the hopper)
Mdouble lift
This is the vertical distance the chute is lifted above the plane.
unsigned int hopper_dim
This is the dimension of the hopper, my default it is one dimensional and hence does not have side wa...
Mdouble lowerFillHeight
Relative height (in [0,1)) above which the hopper is replenished with new particles.
virtual void ChuteWithHopper::create_inflow_particle ( )
inlinevirtual

This creates an inflow particle in the top 50% of the hopper i.e.

between gamma=0.5 and gamma=1.0 Gamma is random number in the z direction and delta in the y direction In the 2D (hopper) case the particles are generated with equal probability in the y-direction, i.e. delta is from the edge of the domain In the 3D (hopper) case a third vector AD is generated and delta is again created for the sloping walls of the hopper

hopper_add_particle.jpg
Image shows the vectors in 2-dimension used to find a position inside the hopper
Bug:
for periodic walls this should be only minus one particle radius, this should be fixed at some point. Thomas' response: using one particle radius gives problems when the wall is not orthogonal to the y-direction; the distance has to be slightly higher than one; if you can figure out the exact value, then correct it please.

Reimplemented from Chute.

Reimplemented in ChuteWithHopperAndInset.

Definition at line 299 of file ChuteWithHopper.h.

References A, centerHopper, BaseParticle::compute_particle_mass(), fill_percent, mathsFunc::gamma(), Chute::get_ChuteAngle(), BaseParticle::get_Radius(), RNG::get_RN(), MD::get_ymax(), MD::get_ymin(), hopper_dim, HopperAngle, HopperExitLength, HopperHeight, HopperLength, lift, Chute::MaxInflowParticleRadius, Chute::MinInflowParticleRadius, BaseParticle::move(), Chute::P0, MD::random, BaseParticle::set_Position(), BaseParticle::set_Radius(), and MD::Species.

300  {
301 
302 
303  //use this formula to obtain bidispersed particles
304  //P0.Radius = random(0.0,1.0)<0.1?MinInflowParticleRadius:MaxInflowParticleRadius;
305 
306  //the following formula yields polydispersed particle radii:
307 
310 
311  //Define an orthogonal coordinate system this is usful in the hopper, see diagram in html documentation for details.
312  static Mdouble s = sin(get_ChuteAngle());
313  static Mdouble c = cos(get_ChuteAngle());
314  static Mdouble Ht = tan(HopperAngle);
315  static Mdouble Hc = cos(HopperAngle);
316  static Vec3D AB = Vec3D(c,0.0,s);
317  static Vec3D AC = Vec3D(-s,0.0,c);
318  static Vec3D AD = Vec3D(0.0,1.0,0.0);
319 
320  //Point A is located in the centre of the hopper.
321  static Vec3D A = Vec3D
322  (
323  centerHopper?40:0.0,
324  (get_ymax()-get_ymin())/2.0,
326  )
327  + AB*0.5*HopperLength
328  + AC*(-0.5*HopperLength/Ht);
329 
330  Mdouble gamma = random.get_RN((100.0-fill_percent)/100.0,1.0);
331 
332 
333  // Mdouble gamma = random(lowerFillHeight,1.0);
334 
335  Mdouble delta;
336 
337  if (hopper_dim==1)
338  {
339 
340 
341  //For the one dimensional delta is a random distance between the two walls the -minus 2 particle radii is to stop
345  //delta = random(ymin+P0.Radius,ymax-P0.Radius);
346 
347  delta = random.get_RN(-0.5,0.5)*(get_ymax()-get_ymin()-2.0*P0.get_Radius());
348 
349 
350  }
351  else
352  {
353 
354  delta= (random.get_RN(-1.0,1.0)*(0.5*gamma*HopperLength -P0.get_Radius()/Hc));
355 
356  }
357  P0.set_Position( A
358  + AC * (gamma*0.5*HopperLength/Ht)
359 
360  + AB * (random.get_RN(-1.0,1.0)*(0.5*gamma*HopperLength - P0.get_Radius()/Hc))
361  + AD*delta);
362 
363 
364  P0.move(Vec3D(0.0,0.0,lift));
365  }
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...
Mdouble get_RN(Mdouble min, Mdouble max)
This is a random generating routine can be used for initial positions.
Definition: RNG.cc:32
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
bool centerHopper
If this flag is set, the hopper will be constructed in the xy-center of the domain, and not next to the xmin-domain boundary; by default off.
Mdouble fill_percent
This is which percentage of the hopper is used for creating new partices;.
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 HopperHeight
Dimension of the hopper in horizontal direction.
double Mdouble
Definition: ExtendedMath.h:33
Mdouble HopperExitLength
Dimension of the hopper exit in vertical direction.
Mdouble HopperAngle
Angle between the two pieces of the hopper walls.
TangentialSpringParticle P0
Definition: Chute.h:262
void move(const Vec3D &_new)
void set_Radius(const Mdouble _new)
Mdouble gamma(Mdouble gamma_in)
This is the gamma function returns the true value for the half integer value.
Definition: ExtendedMath.cc:37
Mdouble MaxInflowParticleRadius
Definition: Chute.h:255
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:40
Mdouble lift
This is the vertical distance the chute is lifted above the plane.
void set_Position(const Vec3D &_new)
unsigned int hopper_dim
This is the dimension of the hopper, my default it is one dimensional and hence does not have side wa...
Mdouble get_ChuteAngle()
Gets chute angle (in radians)
Definition: Chute.h:108
Mdouble HopperLength
Dimension of the hopper in vertical direction.
Mdouble ChuteWithHopper::get_ChuteLength ( )
inline

Allows chute length to be accessed.

Definition at line 414 of file ChuteWithHopper.h.

References MD::get_xmax(), and shift.

414 {return get_xmax()-shift;}
Mdouble shift
The x position where the Chute starts (defined as the beginning of the hopper)
Mdouble get_xmax()
Get xmax.
Definition: MD.h:307
Mdouble ChuteWithHopper::get_HopperLowestPoint ( )
inline

Definition at line 370 of file ChuteWithHopper.h.

References HopperLowestPoint.

Referenced by set_Hopper().

370  {
371  return HopperLowestPoint;
372  }
Mdouble HopperLowestPoint
The z coordinate of the right C point (when the left C point is in the origin)
Mdouble ChuteWithHopper::get_lift_hopper ( )
inline

Definition at line 452 of file ChuteWithHopper.h.

References lift.

452 {return lift;}
Mdouble lift
This is the vertical distance the chute is lifted above the plane.
Mdouble ChuteWithHopper::get_MaximumVelocityInducedByGravity ( )
inline

Allows chute length to be accessed.

Definition at line 406 of file ChuteWithHopper.h.

References Chute::ChuteAngle, MD::get_xmax(), HopperHeight, and shift.

406  {
407  Mdouble height = HopperHeight+(get_xmax()-shift)*sin(ChuteAngle);
408 
409  return sqrt(2.0*9.8*height);
410  }
Mdouble shift
The x position where the Chute starts (defined as the beginning of the hopper)
Mdouble HopperHeight
Dimension of the hopper in horizontal direction.
double Mdouble
Definition: ExtendedMath.h:33
Mdouble ChuteAngle
Definition: Chute.h:252
Mdouble get_xmax()
Get xmax.
Definition: MD.h:307
void ChuteWithHopper::lift_hopper ( Mdouble  distance)
inline

This lifts the hopper above the plane of the chute.

Definition at line 451 of file ChuteWithHopper.h.

References lift.

451 {lift=distance;}
Mdouble lift
This is the vertical distance the chute is lifted above the plane.
virtual void ChuteWithHopper::print ( std::ostream &  os)
inlinevirtual

Reimplemented in ChuteWithHopperAndInset.

Definition at line 439 of file ChuteWithHopper.h.

References HopperAngle, HopperExitHeight, HopperExitLength, HopperHeight, HopperLength, and Chute::print().

Referenced by ChuteWithHopperAndInset::print().

439  {
440  Chute::print(os);
441  os
442  << "HopperExitLength:" << HopperExitLength
443  << ", HopperExitHeight:" << HopperExitHeight
444  << ", HopperLength:" << HopperLength
445  << ", HopperAngle:" << HopperAngle
446  << ", HopperHeight:" << HopperHeight
447  << std::endl;
448  }
Mdouble HopperHeight
Dimension of the hopper in horizontal direction.
Mdouble HopperExitLength
Dimension of the hopper exit in vertical direction.
Mdouble HopperAngle
Angle between the two pieces of the hopper walls.
void print(std::ostream &os, bool print_all=false)
This function std::couts all chute data.
Definition: Chute.cc:88
Mdouble HopperExitHeight
Dimension of the hopper exit in vertical direction.
Mdouble HopperLength
Dimension of the hopper in vertical direction.
virtual void ChuteWithHopper::read ( std::istream &  is)
inlinevirtual

This function reads all chute data.

Reimplemented from Chute.

Reimplemented in ChuteWithHopperAndInset.

Definition at line 426 of file ChuteWithHopper.h.

References HopperAngle, HopperExitHeight, HopperExitLength, HopperHeight, HopperLength, Chute::read(), and shift.

426  {
427  Chute::read(is);
429  >> HopperAngle >> HopperHeight >> shift;
430  }
Mdouble shift
The x position where the Chute starts (defined as the beginning of the hopper)
Mdouble HopperHeight
Dimension of the hopper in horizontal direction.
Mdouble HopperExitLength
Dimension of the hopper exit in vertical direction.
Mdouble HopperAngle
Angle between the two pieces of the hopper walls.
Mdouble HopperExitHeight
Dimension of the hopper exit in vertical direction.
void read(std::istream &is)
This function reads all chute data.
Definition: Chute.cc:46
Mdouble HopperLength
Dimension of the hopper in vertical direction.
int ChuteWithHopper::readNextArgument ( unsigned int i,
unsigned int  argc,
char *  argv[] 
)
inlinevirtual

Reimplemented from Chute.

Reimplemented in ChuteWithHopperAndInset.

Definition at line 458 of file ChuteWithHopper.h.

References align_base, centerHopper, HopperAngle, HopperExitHeight, HopperExitLength, HopperHeight, HopperLength, lift, lowerFillHeight, Chute::readNextArgument(), and shift.

458  {
459  if (!strcmp(argv[i],"-hopperLength")) {
460  HopperLength=(atof(argv[i+1]));
461  } else if (!strcmp(argv[i],"-hopperHeight")) {
462  HopperHeight=(atof(argv[i+1]));
463  } else if (!strcmp(argv[i],"-hopperAngle")) {
464  HopperAngle=(atof(argv[i+1]));
465  } else if (!strcmp(argv[i],"-hopperExitLength")) {
466  HopperExitLength=(atof(argv[i+1]));
467  } else if (!strcmp(argv[i],"-hopperExitHeight")) {
468  HopperExitHeight=(atof(argv[i+1]));
469  } else if (!strcmp(argv[i],"-lowerFillHeight")) {
470  lowerFillHeight=(atof(argv[i+1]));
471  } else if (!strcmp(argv[i],"-centerHopper")) {
472  centerHopper=(atoi(argv[i+1]));
473  } else if (!strcmp(argv[i],"-alignBase")) {
474  align_base=(atoi(argv[i+1]));
475  } else if (!strcmp(argv[i],"-shift")) {
476  shift=(atof(argv[i+1]));
477  } else if (!strcmp(argv[i],"-lift")) {
478  lift=(atof(argv[i+1]));
479  } else return Chute::readNextArgument(i, argc, argv); //if argv[i] is not found, check the commands in Chute
480  return true; //returns true if argv[i] is found
481  }
int readNextArgument(unsigned int &i, unsigned int argc, char *argv[])
Definition: Chute.cc:414
bool align_base
This is the flag, which sets if the chute bottom is aligned with the hopper, by default it is...
bool centerHopper
If this flag is set, the hopper will be constructed in the xy-center of the domain, and not next to the xmin-domain boundary; by default off.
Mdouble shift
The x position where the Chute starts (defined as the beginning of the hopper)
Mdouble HopperHeight
Dimension of the hopper in horizontal direction.
Mdouble HopperExitLength
Dimension of the hopper exit in vertical direction.
Mdouble HopperAngle
Angle between the two pieces of the hopper walls.
Mdouble HopperExitHeight
Dimension of the hopper exit in vertical direction.
Mdouble lift
This is the vertical distance the chute is lifted above the plane.
Mdouble lowerFillHeight
Relative height (in [0,1)) above which the hopper is replenished with new particles.
Mdouble HopperLength
Dimension of the hopper in vertical direction.
void ChuteWithHopper::set_align_base ( bool  new_align)
inline

Definition at line 456 of file ChuteWithHopper.h.

References align_base.

456 {align_base=new_align;}
bool align_base
This is the flag, which sets if the chute bottom is aligned with the hopper, by default it is...
void ChuteWithHopper::set_centerHopper ( bool  new_)
inline

Definition at line 419 of file ChuteWithHopper.h.

References centerHopper.

419 {centerHopper=new_; }
bool centerHopper
If this flag is set, the hopper will be constructed in the xy-center of the domain, and not next to the xmin-domain boundary; by default off.
void ChuteWithHopper::set_ChuteLength ( Mdouble  new_)
inlinevirtual

Allows chute length to be changed.

Reimplemented from Chute.

Reimplemented in ChuteWithHopperAndInset.

Definition at line 417 of file ChuteWithHopper.h.

References MD::set_xmax(), MD::set_xmin(), and shift.

417 {if (new_>=0.0) {set_xmax(new_+shift); set_xmin(0.0);} else std::cerr << "WARNING : Chute length unchanged, value must be greater than or equal to zero" << std::endl;}
void set_xmin(Mdouble new_xmin)
Sets xmin and walls, assuming the standard definition of walls as in the default constructor.
Definition: MD.h:318
Mdouble shift
The x position where the Chute starts (defined as the beginning of the hopper)
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 ChuteWithHopper::set_Hopper ( Mdouble  ExitLength,
Mdouble  ExitHeight,
Mdouble  Angle,
Mdouble  Length,
Mdouble  Height 
)
inline

todo: check wether HopperCornerHeight >=0, if not change hopperangle, line 105, I do not yet understand what the criteria is...

Definition at line 375 of file ChuteWithHopper.h.

References Chute::get_ChuteAngle(), get_HopperLowestPoint(), HopperAngle, HopperExitHeight, HopperExitLength, HopperHeight, HopperLength, constants::pi, and set_HopperLowestPoint().

Referenced by constructor().

375  {
376 
377  if (ExitLength>=0.0) {HopperExitLength = ExitLength;} else std::cerr << "WARNING : Hopper exit length must be greater than or equal to zero" << std::endl;
378  if (ExitHeight>=0.0) {HopperExitHeight = ExitHeight;} else std::cerr << "WARNING : Hopper exit height must be greater than or equal to zero" << std::endl;
379 
381 
382  if (Angle>0.0&&Angle<90.0) {HopperAngle = Angle*constants::pi/180.0;} else std::cerr << "WARNING : Hopper angle must in (0,90)" << std::endl;
383 
384  if (Length>ExitLength) {HopperLength = Length;} else std::cerr << "WARNING : Hopper length must be greater than exit length" << std::endl;
385 
386  //std::cout<<"HopperLowestPoint: "<<get_HopperLowestPoint()<<", HopperLength: "<<HopperLength<<", HopperExitLength: "<<HopperExitLength<<", HopperAngle: "<<HopperAngle<<", Height: "<<fixed<<setprecision(15)<<setw(20)<<Height<<"comparing height: "<<setprecision(15)<<setw(20)<<(get_HopperLowestPoint() + 0.5*(HopperLength+HopperExitLength) / tan(HopperAngle))<<std::endl;
387 
388  Mdouble HeightCompare = (get_HopperLowestPoint() + 0.5*(HopperLength+HopperExitLength) / tan(HopperAngle));
389  //This a semi-ugly fix to check wether Height>=Heightcompare and not take into account rounding errors
390  if ((Height-HeightCompare)>-1e-6*HeightCompare) {HopperHeight = Height;} else std::cerr << "WARNING : For these settings, hopper height must be greater then or equal to "<<HeightCompare << ", see drawing" << std::endl;
392 
393  //std::cout<<" "<<std::endl;
394  //std::cout<<"ChuteWithHopper::set_Hopper:"<<std::endl;
395  //std::cout<<"HopperHeight: "<<HopperHeight<<std::endl;
396  //std::cout<<"HopperExitLength: "<<HopperExitLength<<std::endl;
397  //std::cout<<"HopperExitHeight: "<<HopperExitHeight<<std::endl;
398  //std::cout<<"HopperAngle: "<<HopperAngle<<std::endl;
399  //std::cout<<"HopperLength: "<<HopperLength<<std::endl;
400  //std::cout<<" "<<std::endl;
401 
402  }
Mdouble get_HopperLowestPoint()
Mdouble HopperHeight
Dimension of the hopper in horizontal direction.
const Mdouble pi
Definition: ExtendedMath.h:54
double Mdouble
Definition: ExtendedMath.h:33
Mdouble HopperExitLength
Dimension of the hopper exit in vertical direction.
Mdouble HopperAngle
Angle between the two pieces of the hopper walls.
void set_HopperLowestPoint(Mdouble point)
Mdouble HopperExitHeight
Dimension of the hopper exit in vertical direction.
Mdouble get_ChuteAngle()
Gets chute angle (in radians)
Definition: Chute.h:108
Mdouble HopperLength
Dimension of the hopper in vertical direction.
void ChuteWithHopper::set_hopper_dim ( Mdouble  new_hopper_dim)
inline

Definition at line 454 of file ChuteWithHopper.h.

References hopper_dim.

454 {hopper_dim=new_hopper_dim;}
unsigned int hopper_dim
This is the dimension of the hopper, my default it is one dimensional and hence does not have side wa...
void ChuteWithHopper::set_HopperFillPercentage ( Mdouble  new_fill)
inline

Definition at line 100 of file ChuteWithHopper.h.

References fill_percent.

100 {fill_percent=new_fill;}
Mdouble fill_percent
This is which percentage of the hopper is used for creating new partices;.
void ChuteWithHopper::set_HopperLowestPoint ( Mdouble  point)
inline

Definition at line 367 of file ChuteWithHopper.h.

References HopperLowestPoint.

Referenced by set_Hopper().

367  {
368  HopperLowestPoint=point;
369  }
Mdouble HopperLowestPoint
The z coordinate of the right C point (when the left C point is in the origin)
void ChuteWithHopper::set_lowerFillHeight ( Mdouble  new_)
inline

Definition at line 421 of file ChuteWithHopper.h.

References lowerFillHeight.

421 {lowerFillHeight=new_; }
Mdouble lowerFillHeight
Relative height (in [0,1)) above which the hopper is replenished with new particles.
void ChuteWithHopper::set_shift ( Mdouble  new_)
inline

Definition at line 423 of file ChuteWithHopper.h.

References MD::get_xmax(), MD::set_xmax(), and shift.

Referenced by add_hopper().

423 {if (new_>=0.0) {set_xmax(get_xmax()+new_-shift); shift = new_;} else std::cerr << "WARNING : Shift length unchanged, value must be greater than or equal to zero" << std::endl;}
Mdouble shift
The x position where the Chute starts (defined as the beginning of the hopper)
Mdouble get_xmax()
Get xmax.
Definition: MD.h:307
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
virtual void ChuteWithHopper::setup_particles_initial_conditions ( )
inlinevirtual

initialize particle position, velocity, radius

This initially set up the particles///.

Reimplemented from Chute.

Reimplemented in ChuteWithHopperAndInset, and ChuteWithHopperAndInset.

Definition at line 102 of file ChuteWithHopper.h.

References add_hopper(), and Chute::setup_particles_initial_conditions().

Referenced by ChuteWithHopperAndInset::setup_particles_initial_conditions().

103  {
105  //std::cout << shift << " " << get_xmax() << " " << getParticleHandler().getNumberOfObjects() << std::endl;
106  add_hopper();
107  }
void setup_particles_initial_conditions()
initialize particle position, velocity, radius
Definition: Chute.cc:229
void add_hopper()
This creates the hopper on top of the chute, see diagram in class description for details of the poin...
virtual void ChuteWithHopper::write ( std::ostream &  os)
inlinevirtual

This function writes all chute data.

Reimplemented from Chute.

Reimplemented in ChuteWithHopperAndInset.

Definition at line 433 of file ChuteWithHopper.h.

References HopperAngle, HopperExitHeight, HopperExitLength, HopperHeight, HopperLength, shift, and Chute::write().

433  {
434  Chute::write(os);
435  os << HopperExitLength << " " << HopperExitHeight << " " << HopperLength
436  << " " << HopperAngle << " " << HopperHeight << " " << shift << " " << std::endl;
437  }
Mdouble shift
The x position where the Chute starts (defined as the beginning of the hopper)
Mdouble HopperHeight
Dimension of the hopper in horizontal direction.
Mdouble HopperExitLength
Dimension of the hopper exit in vertical direction.
Mdouble HopperAngle
Angle between the two pieces of the hopper walls.
Mdouble HopperExitHeight
Dimension of the hopper exit in vertical direction.
virtual void write(std::ostream &os)
This function writes all chute data.
Definition: Chute.cc:70
Mdouble HopperLength
Dimension of the hopper in vertical direction.

Member Data Documentation

bool ChuteWithHopper::align_base
private

This is the flag, which sets if the chute bottom is aligned with the hopper, by default it is.

Definition at line 64 of file ChuteWithHopper.h.

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

bool ChuteWithHopper::centerHopper
protected

If this flag is set, the hopper will be constructed in the xy-center of the domain, and not next to the xmin-domain boundary; by default off.

Definition at line 55 of file ChuteWithHopper.h.

Referenced by add_hopper(), constructor(), create_inflow_particle(), readNextArgument(), and set_centerHopper().

Mdouble ChuteWithHopper::fill_percent
private

This is which percentage of the hopper is used for creating new partices;.

Definition at line 67 of file ChuteWithHopper.h.

Referenced by constructor(), create_inflow_particle(), and set_HopperFillPercentage().

unsigned int ChuteWithHopper::hopper_dim
private

This is the dimension of the hopper, my default it is one dimensional and hence does not have side wall.

Definition at line 61 of file ChuteWithHopper.h.

Referenced by add_hopper(), constructor(), create_inflow_particle(), and set_hopper_dim().

Mdouble ChuteWithHopper::HopperAngle
protected

Angle between the two pieces of the hopper walls.

Definition at line 45 of file ChuteWithHopper.h.

Referenced by add_hopper(), create_inflow_particle(), print(), read(), readNextArgument(), set_Hopper(), and write().

Mdouble ChuteWithHopper::HopperExitHeight
protected

Dimension of the hopper exit in vertical direction.

Definition at line 49 of file ChuteWithHopper.h.

Referenced by add_hopper(), print(), read(), readNextArgument(), set_Hopper(), and write().

Mdouble ChuteWithHopper::HopperExitLength
protected

Dimension of the hopper exit in vertical direction.

Definition at line 47 of file ChuteWithHopper.h.

Referenced by add_hopper(), create_inflow_particle(), print(), read(), readNextArgument(), set_Hopper(), and write().

Mdouble ChuteWithHopper::HopperHeight
protected

Dimension of the hopper in horizontal direction.

Definition at line 43 of file ChuteWithHopper.h.

Referenced by add_hopper(), create_inflow_particle(), get_MaximumVelocityInducedByGravity(), print(), read(), readNextArgument(), set_Hopper(), and write().

Mdouble ChuteWithHopper::HopperLength
protected

Dimension of the hopper in vertical direction.

Definition at line 41 of file ChuteWithHopper.h.

Referenced by add_hopper(), create_inflow_particle(), print(), read(), readNextArgument(), set_Hopper(), and write().

Mdouble ChuteWithHopper::HopperLowestPoint
private

The z coordinate of the right C point (when the left C point is in the origin)

Definition at line 70 of file ChuteWithHopper.h.

Referenced by ChuteWithHopperAndInset::add_hopper(), add_hopper(), get_HopperLowestPoint(), and set_HopperLowestPoint().

Mdouble ChuteWithHopper::lift
private

This is the vertical distance the chute is lifted above the plane.

Definition at line 58 of file ChuteWithHopper.h.

Referenced by add_hopper(), constructor(), create_inflow_particle(), get_lift_hopper(), lift_hopper(), and readNextArgument().

Mdouble ChuteWithHopper::lowerFillHeight
protected

Relative height (in [0,1)) above which the hopper is replenished with new particles.

Definition at line 53 of file ChuteWithHopper.h.

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

Mdouble ChuteWithHopper::shift
protected

The x position where the Chute starts (defined as the beginning of the hopper)

Definition at line 51 of file ChuteWithHopper.h.

Referenced by add_hopper(), constructor(), get_ChuteLength(), get_MaximumVelocityInducedByGravity(), read(), readNextArgument(), set_ChuteLength(), set_shift(), and write().


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