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

ChuteWithHopperAndInset has a hopper as inflow. More...

#include <ChuteWithHopperAndInset.h>

+ Inheritance diagram for ChuteWithHopperAndInset:

Public Member Functions

 ChuteWithHopperAndInset ()
 public variables More...
 
void constructor ()
 The actually constructor. More...
 
void set_Inset (double height, double width, double angle)
 todo check wether the inset and hopper are colliding todo check wether the resulting opening between the hopper and the inset is More...
 
double get_InsetHeight ()
 get function for insetHeight, insetWidth, insetAngle More...
 
double get_InsetWidth ()
 
double get_InsetAngle ()
 
virtual void setup_particles_initial_conditions ()
 initialize particle position, velocity, radius More...
 
void add_Inset ()
 
virtual void print (std::ostream &os, bool print_all)
 This function std::couts all chute data. More...
 
 ChuteWithHopperAndInset (Chute &other)
 This is a copy constructor for Chute problems. More...
 
 ChuteWithHopperAndInset (HGRID_3D &other)
 
 ChuteWithHopperAndInset (HGRID_base &other)
 
 ChuteWithHopperAndInset (MD &other)
 
 ChuteWithHopperAndInset ()
 This is the default constructor. More...
 
void constructor ()
 This is the actually constructor, get called by all constructors above. More...
 
void set_HopperFillPercentage (double new_fill)
 
virtual void setup_particles_initial_conditions ()
 initialize particle position, velocity, radius More...
 
void add_hopper ()
 This create 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_Hopper (double ExitLength, double ExitHeight, double Angle, double Length)
 
double get_MaximumVelocityInducedByGravity ()
 Allows chute length to be accessed. More...
 
double get_ChuteLength ()
 Allows chute length to be accessed. More...
 
void set_ChuteLength (double new_)
 Allows chute length to be changed. More...
 
void set_centerHopper (bool new_)
 
void set_lowerFillHeight (double new_)
 
void set_shift (double 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 (double distance)
 This lifts the hopper above the plane of the chute. More...
 
double get_lift_hopper ()
 
void set_hopper_dim (double 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 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 ()
 
- Public Member Functions inherited from ChuteWithHopper
 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)
 
void add_hopper ()
 This creates the hopper on top of the chute, see diagram in class description for details of the points. 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_centerHopper (bool new_)
 
void set_lowerFillHeight (Mdouble new_)
 
void set_shift (Mdouble new_)
 
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)
 

Protected Attributes

double HopperLength
 Dimension of the hopper in vertical direction. More...
 
double HopperHeight
 Dimension of the hopper in horizontal direction. More...
 
double HopperAngle
 Angle between the two pieces of the hopper walls. More...
 
double HopperExitLength
 Dimension of the hopper exit in vertical direction. More...
 
double HopperExitHeight
 Dimension of the hopper exit in vertical direction. More...
 
double shift
 The x position where the Chute starts (defined as the beginning of the hopper) More...
 
double lowerFillHeight
 Relative height (in [0,1)) above which teh hopper is replenished with new particles. More...
 
bool centerHopper
 If theis 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
 
- Protected Attributes inherited from ChuteWithHopper
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...
 

Private Attributes

Mdouble insetHeight
 protected variables More...
 
Mdouble insetWidth
 The width of the inset. More...
 
Mdouble insetAngle
 The angle of the inset (input in degrees, usage in radians) More...
 
double 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...
 
double fill_percent
 This is which percentage of the hopper is used for creating new partices;. 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

ChuteWithHopperAndInset 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 31 of file ChuteWithHopperAndInset.h.

Constructor & Destructor Documentation

ChuteWithHopperAndInset::ChuteWithHopperAndInset ( )
inline

public variables

The default constructor

Definition at line 49 of file ChuteWithHopperAndInset.h.

References constructor().

49 {constructor();}
void constructor()
The actually constructor.
ChuteWithHopperAndInset::ChuteWithHopperAndInset ( Chute other)
inline

This is a copy constructor for Chute problems.

Bug:
This copy construct is untested

Definition at line 70 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References constructor().

70 : MD(other), Chute(other) {constructor();}
MD()
Definition: MD.h:75
void constructor()
The actually constructor.
Chute()
This is the default constructor. All it does is set sensible defaults.
Definition: Chute.h:38
ChuteWithHopperAndInset::ChuteWithHopperAndInset ( HGRID_3D other)
inline

Definition at line 71 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References constructor().

71 : MD(other), Chute(other) {constructor();}
MD()
Definition: MD.h:75
void constructor()
The actually constructor.
Chute()
This is the default constructor. All it does is set sensible defaults.
Definition: Chute.h:38
ChuteWithHopperAndInset::ChuteWithHopperAndInset ( HGRID_base other)
inline

Definition at line 72 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References constructor().

72 : MD(other), Chute(other) {constructor();}
MD()
Definition: MD.h:75
void constructor()
The actually constructor.
Chute()
This is the default constructor. All it does is set sensible defaults.
Definition: Chute.h:38
ChuteWithHopperAndInset::ChuteWithHopperAndInset ( MD other)
inline

Definition at line 73 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References constructor().

73 : MD(other), Chute(other) {constructor();}
MD()
Definition: MD.h:75
void constructor()
The actually constructor.
Chute()
This is the default constructor. All it does is set sensible defaults.
Definition: Chute.h:38
ChuteWithHopperAndInset::ChuteWithHopperAndInset ( )
inline

This is the default constructor.

Definition at line 76 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References constructor().

76 {constructor();}
void constructor()
The actually constructor.

Member Function Documentation

void ChuteWithHopperAndInset::add_hopper ( )
inline

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

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

Definition at line 103 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References A, centerHopper, Chute::ChuteAngle, Cross(), Chute::get_ChuteAngle(), MD::get_ymax(), MD::get_ymin(), Vec3D::GetLength2, hopper_dim, HopperAngle, HopperExitHeight, HopperExitLength, HopperHeight, HopperLength, ChuteWithHopper::HopperLowestPoint, lift, Chute::P0, set_shift(), MD::set_zmax(), shift, Vec3D::X, and Vec3D::Z.

Referenced by setup_particles_initial_conditions().

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

The points A, B, C should be the corners of the triangular finite wall in clockwise order.

Define the three points between which the first finite wall is created

Move points A,B,C a distance 'shift' down the chute, so the inset starts at the beginning of the chute

create a finite wall from B to A, from C to B and from A to C

Define the three points between which the second finite wall is created

Move points A,B,C a distance 'shift' down the chute, so the inset starts at the beginning of the chute

create a finite wall from B to A, from C to B and from A to C

Definition at line 82 of file ChuteWithHopperAndInset.h.

References A, Chute::get_ChuteAngle(), Vec3D::GetLength2, insetAngle, insetHeight, insetWidth, shift, Vec3D::X, and Vec3D::Z.

Referenced by setup_particles_initial_conditions().

82  {
83  //std::cout<<"in ChuteWithHopperAndInset::add_Inset()"<<std::endl;
84  int n = get_NWall();
85  set_NWall(n+2);
86 
87  double s = sin(get_ChuteAngle());
88  double c = cos(get_ChuteAngle());
89 
90  Vec3D A, B, C, temp, normal;
91 
94 
97  B = Vec3D(insetWidth, 0.0, 0.0);
98  C = Vec3D(0.0, 0.0, 0.0);
99 
100  //std::cout<<"PUNTEN ABC INSET, A; "<<A<<", B: "<<B<<", C: "<<C<<std::endl;
101 
103  //std::cout<<"dit zijn shift, A, B, C "<<shift<<' '<<A<<' '<<B<<' '<<C<<' '<<std::endl;
104  A.X+= shift;
105  B.X+= shift;
106  C.X+= shift;
107  //std::cout<<"dit zijn A, B, C na shift "<<A<<' '<<B<<' '<<C<<' '<<std::endl;
108 
109  //std::cout<<"Verplaatsen ???: "<<0.5*(HopperLength-HopperExitLength)<<std::endl;
110  //std::cout<<" "<<std::endl;
111  //std::cout<<"ChuteWithHopperAndInset::add_Inset:"<<std::endl;
112  //std::cout<<"HopperHeight: "<<HopperHeight<<std::endl;
113  //std::cout<<"HopperExitLength: "<<HopperExitLength<<std::endl;
114  //std::cout<<"HopperExitHeight: "<<HopperExitHeight<<std::endl;
115  //std::cout<<"HopperAngle: "<<HopperAngle<<std::endl;
116  //std::cout<<"HopperLength: "<<HopperLength<<std::endl;
117  //std::cout<<" "<<std::endl;
118 
119  //double iets=0.5*(HopperLength-HopperExitLength);
120  //A = A+iets;
121  //B = B+iets;
122  //C = C+iets;
123 
124 
126  temp = B-A;
127  normal = Vec3D(temp.Z,0.0,-temp.X) / sqrt(temp.GetLength2());
128  Walls[n].add_finite_wall(normal, Dot(normal,A));
129  temp = C-B;
130  normal = Vec3D(temp.Z,0.0,-temp.X) / sqrt(temp.GetLength2());
131  Walls[n].add_finite_wall(normal, Dot(normal,B));
132  temp = A-C;
133  normal = Vec3D(temp.Z,0.0,-temp.X)/sqrt(temp.GetLength2());
134  Walls[n].add_finite_wall(normal,Dot(normal,C));
135 
136 
137 
138 
141  B = Vec3D(0.0, 0.0, 0.0);
142  C = Vec3D(0.0, 0.0, insetHeight);
143 
145  A.X+= shift;
146  B.X+= shift;
147  C.X+= shift;
148 
150  temp = B-A;
151  normal = Vec3D(temp.Z,0.0,-temp.X) / sqrt(temp.GetLength2());
152  Walls[n+1].add_finite_wall(normal, Dot(normal,A));
153  temp = C-B;
154  normal = Vec3D(temp.Z,0.0,-temp.X) / sqrt(temp.GetLength2());
155  Walls[n+1].add_finite_wall(normal, Dot(normal,B));
156  temp = A-C;
157  normal = Vec3D(temp.Z,0.0,-temp.X)/sqrt(temp.GetLength2());
158  Walls[n+1].add_finite_wall(normal,Dot(normal,C));
159 
160  }
Mdouble X
Definition: Vector.h:44
friend Mdouble GetLength2(const Vec3D &A)
Definition: Vector.h:183
double shift
The x position where the Chute starts (defined as the beginning of the hopper)
Mdouble insetWidth
The width of the inset.
Mdouble insetHeight
protected variables
Implementation of a 3D vector (by Vitaliy).
Definition: Vector.h:40
Mdouble Z
Definition: Vector.h:44
Mdouble get_ChuteAngle()
Gets chute angle (in radians)
Definition: Chute.h:108
Mdouble insetAngle
The angle of the inset (input in degrees, usage in radians)
void ChuteWithHopperAndInset::constructor ( )
inline

The actually constructor.

in here all the variables get a default value

Definition at line 52 of file ChuteWithHopperAndInset.h.

References insetAngle, insetHeight, insetWidth, and constants::pi.

Referenced by ChuteWithHopperAndInset().

53  {
55  insetHeight=0.2;
56  insetWidth=0.1;
57  insetAngle=15.0*constants::pi/180.0;
58 
59  }
const Mdouble pi
Definition: ExtendedMath.h:54
Mdouble insetWidth
The width of the inset.
Mdouble insetHeight
protected variables
Mdouble insetAngle
The angle of the inset (input in degrees, usage in radians)
void ChuteWithHopperAndInset::constructor ( )
inline

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

Definition at line 79 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

80  {
81  lowerFillHeight=0.5;
82  lift=0.0;
83  set_Hopper(0.01, 0.01, 60.0, 0.08);
84  shift = 0.0;
85  hopper_dim=1;
86  align_base=true;
87 
88  fill_percent=50.0;
89  centerHopper=false;
90 
91  }
unsigned int hopper_dim
This is the dimension of the hopper, my default it is one dimensional and hence does not have side wa...
double lift
This is the vertical distance the chute is lifted above the plane.
bool align_base
This is the flag, which sets if the chute bottom is aligned with the hopper, by default it is...
double shift
The x position where the Chute starts (defined as the beginning of the hopper)
double lowerFillHeight
Relative height (in [0,1)) above which teh hopper is replenished with new particles.
bool centerHopper
If theis 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.
double fill_percent
This is which percentage of the hopper is used for creating new partices;.
void set_Hopper(double ExitLength, double ExitHeight, double Angle, double Length)
virtual void ChuteWithHopperAndInset::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.

Reimplemented from Chute.

Definition at line 302 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

303  {
304 
305 
306  //use this formula to obtain bidispersed particles
307  //P0.Radius = random(0.0,1.0)<0.1?MinInflowParticleRadius:MaxInflowParticleRadius;
308 
309  //the following formula yields polydispersed particle radii:
312 
313  //Define a orthogonal coordinate system this is usful in the hopper, see diagram in html documentation for details.
314  static double s = sin(get_ChuteAngle());
315  static double c = cos(get_ChuteAngle());
316  static double Ht = tan(HopperAngle);
317  static double Hc = cos(HopperAngle);
318  static Vec3D AB = Vec3D(c,0.0,s);
319  static Vec3D AC = Vec3D(-s,0.0,c);
320  static Vec3D AD = Vec3D(0.0,1.0,0.0);
321 
322  //Point A is located in the centre of the hopper.
323  static Vec3D A = Vec3D
324  (
325  centerHopper?40:0.0,
326  (get_ymax()-get_ymin())/2.0,
328  )
329  + AB*0.5*HopperLength
330  + AC*(-0.5*HopperLength/Ht);
331 
332  double gamma = random((100.0-fill_percent)/100.0,1.0);
333 
334 
335  // double gamma = random(lowerFillHeight,1.0);
336 
337  double delta;
338 
339  if (hopper_dim==1)
340  {
341 
342 
343  //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  delta = random(-0.5,0.5)*(get_ymax()-get_ymin()-2.0*P0.Radius);
347  }
348  else
349  {
350 
351  delta= (random(-1.0,1.0)*(0.5*gamma*HopperLength -P0.Radius/Hc));
352  }
353  P0.Position = A
354  + AC * (gamma*0.5*HopperLength/Ht)
355  + AB * (random(-1.0,1.0)*(0.5*gamma*HopperLength - P0.Radius/Hc))
356  + AD*delta;
357 
358 
359  P0.Position.Z +=lift;
360 
361  //P0.Position.Y = random(ymin+P0.Radius, ymax-P0.Radius);
362  //P0.Position.Y=delta;
363 
364 
365 
366  }
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 MinInflowParticleRadius
Definition: Chute.h:254
double HopperExitLength
Dimension of the hopper exit in vertical direction.
void compute_particle_mass(std::vector< CSpecies > &Species)
Compute Particle mass function, which required a reference to the Species vector. It copmuters the Pa...
double lift
This is the vertical distance the chute is lifted above the plane.
std::vector< CSpecies > Species
These are the particle parameters like dissipation etc.
Definition: MD.h:655
double HopperHeight
Dimension of the hopper in horizontal direction.
RNG random
Definition: MD.h:515
Mdouble get_ymax()
Gets ymax.
Definition: MD.h:311
Mdouble get_ymin()
Gets ymin.
Definition: MD.h:309
double HopperLength
Dimension of the hopper in vertical direction.
bool centerHopper
If theis 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.
double HopperAngle
Angle between the two pieces of the hopper walls.
TangentialSpringParticle P0
Definition: Chute.h:262
double fill_percent
This is which percentage of the hopper is used for creating new partices;.
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 get_ChuteAngle()
Gets chute angle (in radians)
Definition: Chute.h:108
double ChuteWithHopperAndInset::get_ChuteLength ( )
inline

Allows chute length to be accessed.

Definition at line 382 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References MD::get_xmax(), and shift.

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

Definition at line 74 of file ChuteWithHopperAndInset.h.

References insetAngle.

74 {return insetAngle;}
Mdouble insetAngle
The angle of the inset (input in degrees, usage in radians)
double ChuteWithHopperAndInset::get_InsetHeight ( )
inline

get function for insetHeight, insetWidth, insetAngle

Definition at line 72 of file ChuteWithHopperAndInset.h.

References insetHeight.

72 {return insetHeight;}
Mdouble insetHeight
protected variables
double ChuteWithHopperAndInset::get_InsetWidth ( )
inline

Definition at line 73 of file ChuteWithHopperAndInset.h.

References insetWidth.

73 {return insetWidth;}
Mdouble insetWidth
The width of the inset.
double ChuteWithHopperAndInset::get_lift_hopper ( )
inline

Definition at line 419 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References lift.

419 {return lift;}
double lift
This is the vertical distance the chute is lifted above the plane.
double ChuteWithHopperAndInset::get_MaximumVelocityInducedByGravity ( )
inline

Allows chute length to be accessed.

Definition at line 376 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

376  {
377  double height = HopperHeight+(get_xmax()-shift)*sin(ChuteAngle);
378  return sqrt(2.0*9.8*height);
379  }
double HopperHeight
Dimension of the hopper in horizontal direction.
double shift
The x position where the Chute starts (defined as the beginning of the hopper)
Mdouble ChuteAngle
Definition: Chute.h:252
Mdouble get_xmax()
Get xmax.
Definition: MD.h:307
void ChuteWithHopperAndInset::lift_hopper ( double  distance)
inline

This lifts the hopper above the plane of the chute.

Definition at line 418 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References lift.

418 {lift=distance;}
double lift
This is the vertical distance the chute is lifted above the plane.
virtual void ChuteWithHopperAndInset::print ( std::ostream &  os,
bool  print_all 
)
inlinevirtual

This function std::couts all chute data.

Reimplemented from Chute.

Definition at line 162 of file ChuteWithHopperAndInset.h.

References insetAngle, insetHeight, insetWidth, constants::pi, and ChuteWithHopper::print().

162  {
163  ChuteWithHopper::print(os,print_all);
164  os
165  << "insetHeight:" << insetHeight
166  << ", insetWidth:" << insetWidth
167  << ", insetAngle:" << insetAngle
168  << ", insetAngleDeg:" << insetAngle/constants::pi*180.0
169  << std::endl;
170  }
const Mdouble pi
Definition: ExtendedMath.h:54
Mdouble insetWidth
The width of the inset.
Mdouble insetHeight
protected variables
virtual void print(std::ostream &os)
Mdouble insetAngle
The angle of the inset (input in degrees, usage in radians)
virtual void ChuteWithHopperAndInset::print ( std::ostream &  os)
inlinevirtual

Reimplemented from ChuteWithHopper.

Definition at line 406 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

406  {
407  Chute::print(os);
408  os
409  << ", HopperExitLength:" << HopperExitLength
410  << ", HopperExitHeight:" << HopperExitHeight
411  << ", HopperLength:" << HopperLength
412  << ", HopperAngle:" << HopperAngle
413  << ", HopperHeight:" << HopperHeight
414  << std::endl;
415  }
double HopperExitLength
Dimension of the hopper exit in vertical direction.
double HopperHeight
Dimension of the hopper in horizontal direction.
double HopperLength
Dimension of the hopper in vertical direction.
double 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
double HopperExitHeight
Dimension of the hopper exit in vertical direction.
virtual void ChuteWithHopperAndInset::read ( std::istream &  is)
inlinevirtual

This function reads all chute data.

Reimplemented from Chute.

Definition at line 393 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

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

Reimplemented from Chute.

Definition at line 425 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

425  {
426  if (!strcmp(argv[i],"-hopperLength")) {
427  HopperLength=(atof(argv[i+1]));
428  } else if (!strcmp(argv[i],"-hopperHeight")) {
429  HopperHeight=(atof(argv[i+1]));
430  } else if (!strcmp(argv[i],"-hopperAngle")) {
431  HopperAngle=(atof(argv[i+1]));
432  } else if (!strcmp(argv[i],"-hopperExitLength")) {
433  HopperExitLength=(atof(argv[i+1]));
434  } else if (!strcmp(argv[i],"-hopperExitHeight")) {
435  HopperExitHeight=(atof(argv[i+1]));
436  } else if (!strcmp(argv[i],"-lowerFillHeight")) {
437  lowerFillHeight=(atof(argv[i+1]));
438  } else if (!strcmp(argv[i],"-centerHopper")) {
439  centerHopper=(atoi(argv[i+1]));
440  } else if (!strcmp(argv[i],"-alignBase")) {
441  align_base=(atoi(argv[i+1]));
442  } else if (!strcmp(argv[i],"-shift")) {
443  shift=(atof(argv[i+1]));
444  } else if (!strcmp(argv[i],"-lift")) {
445  lift=(atof(argv[i+1]));
446  } else return Chute::readNextArgument(i, argc, argv); //if argv[i] is not found, check the commands in Chute
447  return true; //returns true if argv[i] is found
448  }
double HopperExitLength
Dimension of the hopper exit in vertical direction.
int readNextArgument(unsigned int &i, unsigned int argc, char *argv[])
Definition: Chute.cc:414
double lift
This is the vertical distance the chute is lifted above the plane.
double HopperHeight
Dimension of the hopper in horizontal direction.
bool align_base
This is the flag, which sets if the chute bottom is aligned with the hopper, by default it is...
double shift
The x position where the Chute starts (defined as the beginning of the hopper)
double HopperLength
Dimension of the hopper in vertical direction.
double lowerFillHeight
Relative height (in [0,1)) above which teh hopper is replenished with new particles.
bool centerHopper
If theis 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.
double HopperAngle
Angle between the two pieces of the hopper walls.
double HopperExitHeight
Dimension of the hopper exit in vertical direction.
void ChuteWithHopperAndInset::set_align_base ( bool  new_align)
inline

Definition at line 423 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References align_base.

423 {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 ChuteWithHopperAndInset::set_centerHopper ( bool  new_)
inline

Definition at line 386 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References centerHopper.

386 {centerHopper=new_; }
bool centerHopper
If theis 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 ChuteWithHopperAndInset::set_ChuteLength ( double  new_)
inlinevirtual

Allows chute length to be changed.

Reimplemented from Chute.

Definition at line 384 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

384 {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
double 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 ChuteWithHopperAndInset::set_Hopper ( double  ExitLength,
double  ExitHeight,
double  Angle,
double  Length 
)
inline

Definition at line 368 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References HopperAngle, HopperExitHeight, HopperExitLength, HopperLength, and constants::pi.

Referenced by constructor().

368  {
369  if (ExitLength>=0.0) {HopperExitLength = ExitLength;} else std::cerr << "WARNING : Hopper exit length must be greater than or equal to zero" << std::endl;
370  if (ExitHeight>=0.0) {HopperExitHeight = ExitHeight;} else std::cerr << "WARNING : Hopper exit height must be greater than or equal to zero" << std::endl;
371  if (Angle>0.0&&Angle<90.0) {HopperAngle = Angle*pi/180.0;} else std::cerr << "WARNING : Hopper angle must in (0,90)" << std::endl;
372  if (Length>ExitLength) {HopperLength = Length;} else std::cerr << "WARNING : Hopper length must be greater than exit length" << std::endl;
373  }
double HopperExitLength
Dimension of the hopper exit in vertical direction.
double HopperLength
Dimension of the hopper in vertical direction.
const Mdouble pi
Definition: ExtendedMath.h:54
double HopperAngle
Angle between the two pieces of the hopper walls.
double HopperExitHeight
Dimension of the hopper exit in vertical direction.
void ChuteWithHopperAndInset::set_hopper_dim ( double  new_hopper_dim)
inline

Definition at line 421 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References hopper_dim.

421 {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 ChuteWithHopperAndInset::set_HopperFillPercentage ( double  new_fill)
inline

Definition at line 93 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References fill_percent.

93 {fill_percent=new_fill;}
double fill_percent
This is which percentage of the hopper is used for creating new partices;.
void ChuteWithHopperAndInset::set_Inset ( double  height,
double  width,
double  angle 
)
inline

todo check wether the inset and hopper are colliding todo check wether the resulting opening between the hopper and the inset is

set function for insetHeight, insetWidth, insetAngle

Definition at line 65 of file ChuteWithHopperAndInset.h.

References insetAngle, insetHeight, insetWidth, and constants::pi.

65  {
66  if (width>=0.0) {insetWidth = width;} else std::cerr << "WARNING : Inset width must be greater than or equal to zero" << std::endl;
67  if (height>=0.0) {insetHeight = height;} else std::cerr << "WARNING : Inset height must be greater than or equal to zero" << std::endl;
68  if (angle>0.0&&angle<90.0) {insetAngle = angle*constants::pi/180.0;} else std::cerr << "WARNING : Inset angle must be widthin (0,90)" << std::endl;
69  }
const Mdouble pi
Definition: ExtendedMath.h:54
Mdouble insetWidth
The width of the inset.
Mdouble insetHeight
protected variables
Mdouble insetAngle
The angle of the inset (input in degrees, usage in radians)
void ChuteWithHopperAndInset::set_lowerFillHeight ( double  new_)
inline

Definition at line 388 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

References lowerFillHeight.

388 {lowerFillHeight=new_; }
double lowerFillHeight
Relative height (in [0,1)) above which teh hopper is replenished with new particles.
void ChuteWithHopperAndInset::set_shift ( double  new_)
inline

Definition at line 390 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

Referenced by add_hopper().

390 {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;}
double 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 ChuteWithHopperAndInset::setup_particles_initial_conditions ( )
inlinevirtual

initialize particle position, velocity, radius

This initially set up the particles///.

Reimplemented from Chute.

Definition at line 76 of file ChuteWithHopperAndInset.h.

References add_Inset(), and ChuteWithHopper::setup_particles_initial_conditions().

77  {
79  add_Inset();
80  }
virtual void setup_particles_initial_conditions()
initialize particle position, velocity, radius
virtual void ChuteWithHopperAndInset::setup_particles_initial_conditions ( )
inlinevirtual

initialize particle position, velocity, radius

This initially set up the particles///.

Reimplemented from Chute.

Definition at line 95 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

96  {
98  //std::cout << shift << " " << get_xmax() << " " << get_N() << std::endl;
99  add_hopper();
100  }
void add_hopper()
This create the hopper on top of the chute, see diagram in class description for details of the point...
void setup_particles_initial_conditions()
initialize particle position, velocity, radius
Definition: Chute.cc:229
virtual void ChuteWithHopperAndInset::write ( std::ostream &  os)
inlinevirtual

This function writes all chute data.

Reimplemented from Chute.

Definition at line 400 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

400  {
401  Chute::write(os);
402  os << HopperExitLength << " " << HopperExitHeight << " " << HopperLength
403  << " " << HopperAngle << " " << HopperHeight << " " << shift << " " << std::endl;
404  }
double HopperExitLength
Dimension of the hopper exit in vertical direction.
double HopperHeight
Dimension of the hopper in horizontal direction.
double shift
The x position where the Chute starts (defined as the beginning of the hopper)
double HopperLength
Dimension of the hopper in vertical direction.
double HopperAngle
Angle between the two pieces of the hopper walls.
double 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

Member Data Documentation

bool ChuteWithHopperAndInset::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 61 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

bool ChuteWithHopperAndInset::centerHopper
protected

If theis 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 52 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

double ChuteWithHopperAndInset::fill_percent
private

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

Definition at line 64 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

unsigned int ChuteWithHopperAndInset::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 58 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

double ChuteWithHopperAndInset::HopperAngle
protected

Angle between the two pieces of the hopper walls.

Definition at line 42 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

double ChuteWithHopperAndInset::HopperExitHeight
protected

Dimension of the hopper exit in vertical direction.

Definition at line 46 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

double ChuteWithHopperAndInset::HopperExitLength
protected

Dimension of the hopper exit in vertical direction.

Definition at line 44 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

double ChuteWithHopperAndInset::HopperHeight
protected

Dimension of the hopper in horizontal direction.

Definition at line 40 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

double ChuteWithHopperAndInset::HopperLength
protected

Dimension of the hopper in vertical direction.

Definition at line 38 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

Mdouble ChuteWithHopperAndInset::insetAngle
private

The angle of the inset (input in degrees, usage in radians)

Definition at line 43 of file ChuteWithHopperAndInset.h.

Referenced by add_Inset(), constructor(), get_InsetAngle(), print(), and set_Inset().

Mdouble ChuteWithHopperAndInset::insetHeight
private

protected variables

private variables The height of the inset

Definition at line 39 of file ChuteWithHopperAndInset.h.

Referenced by add_Inset(), constructor(), get_InsetHeight(), print(), and set_Inset().

Mdouble ChuteWithHopperAndInset::insetWidth
private

The width of the inset.

Definition at line 41 of file ChuteWithHopperAndInset.h.

Referenced by add_Inset(), constructor(), get_InsetWidth(), print(), and set_Inset().

double ChuteWithHopperAndInset::lift
private

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

Definition at line 55 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

double ChuteWithHopperAndInset::lowerFillHeight
protected

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

Definition at line 50 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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

double ChuteWithHopperAndInset::shift
protected

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

Definition at line 48 of file ChuteWithHopperAndInset_copy_of_ChuteWithHopper.h.

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


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