Funnel.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef FUNNEL_H
6 #define FUNNEL_H
7 #include "Chute.h"
8 
16 
17 class Funnel : public Chute {
18  public:
19 
22 
24  //Funnel(MD& other) : MD(other), Mercury3D(other), Chute() {constructor();}
25  //Funnel(HGRID_base& other) : MD(other), Mercury3D(other), Chute() {constructor();}
26  //Funnel(Mercury3D& other) : MD(other), Mercury3D(other), Chute() {constructor();}
27 
29  void write(std::ostream& os, bool writeAllParticles = false) const override;
30 
32  void read(std::istream& is, ReadOptions opt = ReadOptions::ReadAll) override;
33 
35  void constructor();
36 
38  void cleanChute();
39 
41  void set_funnz(double funnz_){funnz=funnz_;}
42 
44  double get_funnz() const {return funnz;}
45 
47  void set_funfr(double funfr_){
48  if (funfr_ < 0.0 || funfr_ > 1.0)
49  {
50  logger(WARN, "Filling Ratio is below 0 or above 1, default value of 0.33 is used!");
51  }
52  else
53  {
54  funfr = funfr_;
55  }
56  }
57 
59  double get_funfr() const {return funfr;}
60 
62  double get_funr(){return funr;}
63 
65  void set_funO(double x, double y){funO[0]=x; funO[1]=y;}
66  void set_funO(double* x){funO[0]=x[0]; funO[1]=x[1];}
67 
69  const double* get_funO() const {return funO;}
70 
71  double get_funOx() const {return funO[0];}
72 
73  double get_funOy() const {return funO[1];}
74 
75  double get_fundiag() const {return fundiag;}
76 
77  double get_funrmax() const {return funrmax;}
78 
80  void set_funa(double funa_){funa=funa_*constants::pi/180;}
81 
83  double get_funa() const {return funa;}
84 
86  double get_funH() const {return funH;}
87 
89  void set_funHf(double funHf_){funHf=funHf_;}
90 
92  double get_funHf() const {return funHf;}
93 
95  void set_funD(double funD_){funD=funD_;}
96 
98  double get_funD() const {return funD;}
99 
100  void setName_();
101 
102 protected:
104 
106  void set_funH(double funH_){funH=funH_;}
107 
108  void set_funrmax(double funrmax_){funrmax=funrmax_;}
109 
110  void set_fundiag(double fundiag_){fundiag=fundiag_;}
111 
113  void set_funr(double funr_){funr=funr_;}
114 
116  virtual void setupInitialConditions() override;
117 
119  virtual void create_inflow_particle();
120 
122  virtual void create_funnel();
123 
125  virtual void update_funnel();
126 
128  virtual void check_funnel();
129 
131  virtual void create_walls();
132 
133  virtual bool readNextArgument(int& i, int argc, char *argv[]) override;
134 
135  double funr; // Funnel radius.
136  double funO[2]; // Origin of the funnel is the (x,y) location of the center of the top of the funnel.
137  double funa; // Angle of the funnel
138  double funH; // Heigth of the funnel
139  double funHf; // Falling heigth
140  double funD; // Funnel diameter at the downside of the funnel.
141  double funnz; //Number of particles along the heigth of the funnel
142  double funfr; // Filling ratio of the funnel
143  double fundiag; //The diagonal of the filling region
144  double funrmax; //The maximum range for r
145 
146 };
147 #endif
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
@ WARN
Creates chutes with different bottoms. Inherits from Mercury3D (-> MercuryBase -> DPMBase).
Definition: Chute.h:44
ReadOptions
Definition: DPMBase.h:233
Definition: Funnel.h:17
double get_funD() const
Get minimum funnel diameter:
Definition: Funnel.h:98
void set_funrmax(double funrmax_)
Definition: Funnel.h:108
void cleanChute()
Here we define the outflow.
Definition: Funnel.cc:325
double funr
Definition: Funnel.h:135
double get_funH() const
Get funnel Heigth:
Definition: Funnel.h:86
double funO[2]
Definition: Funnel.h:136
double get_funOx() const
Definition: Funnel.h:71
virtual void create_inflow_particle()
Sets variable values for particles that are created at the inflow.
Definition: Funnel.cc:73
const double * get_funO() const
Get funnel origin of the funnel:
Definition: Funnel.h:69
double get_funa() const
Get funnel angle:
Definition: Funnel.h:83
void read(std::istream &is, ReadOptions opt=ReadOptions::ReadAll) override
This function reads all funnel data.
Definition: Funnel.cc:59
double funD
Definition: Funnel.h:140
double funHf
Definition: Funnel.h:139
virtual void create_funnel()
Create the funnel.
Definition: Funnel.cc:138
double funnz
Definition: Funnel.h:141
virtual void setupInitialConditions() override
initialise particle position, velocity, radius
Definition: Funnel.cc:116
double get_fundiag() const
Definition: Funnel.h:75
void set_funH(double funH_)
Set funnel Heigth:
Definition: Funnel.h:106
double funa
Definition: Funnel.h:137
double fundiag
Definition: Funnel.h:143
virtual void update_funnel()
Updates the parameters for the funnel;.
Definition: Funnel.cc:241
double get_funOy() const
Definition: Funnel.h:73
void set_fundiag(double fundiag_)
Definition: Funnel.h:110
double funfr
Definition: Funnel.h:142
double get_funr()
Get funnel radius:
Definition: Funnel.h:62
void set_funa(double funa_)
Set funnel angle:
Definition: Funnel.h:80
double get_funrmax() const
Definition: Funnel.h:77
virtual void check_funnel()
Check the funnel parameters.
Definition: Funnel.cc:258
void set_funO(double x, double y)
Set funnel origin of the funnel:
Definition: Funnel.h:65
double funH
Definition: Funnel.h:138
virtual bool readNextArgument(int &i, int argc, char *argv[]) override
Interprets the i^th command-line argument.
Definition: Funnel.cc:352
void set_funr(double funr_)
Set funnel radius:
Definition: Funnel.h:113
double get_funnz() const
Get the funnel number of particles along the funnel heigth:
Definition: Funnel.h:44
void setName_()
Definition: Funnel.cc:403
virtual void create_walls()
Create or update the walls.
Definition: Funnel.cc:296
double funrmax
Definition: Funnel.h:144
void set_funD(double funD_)
Set minimum funnel diameter:
Definition: Funnel.h:95
Funnel()
This is the default constructor. All it does is set sensible defaults.
Definition: Funnel.h:21
double get_funHf() const
Get falling heigth:
Definition: Funnel.h:92
void set_funfr(double funfr_)
Set the filling ratio.
Definition: Funnel.h:47
void set_funHf(double funHf_)
Set falling heigth:
Definition: Funnel.h:89
void set_funO(double *x)
Definition: Funnel.h:66
SphericalParticle inflowParticle_
Definition: Funnel.h:103
void write(std::ostream &os, bool writeAllParticles=false) const override
This function prints all funnel data in human readable format.
Definition: Funnel.cc:24
void constructor()
This is the actual constructor.
Definition: Funnel.cc:11
void set_funnz(double funnz_)
Set funnel number of particles along the funnel heigth:
Definition: Funnel.h:41
double get_funfr() const
Get the filling ratio.
Definition: Funnel.h:59
A spherical particle is the most simple particle used in MercuryDPM.
Definition: SphericalParticle.h:16
Scalar * y
Definition: level1_cplx_impl.h:128
const Mdouble pi
Definition: ExtendedMath.h:23
list x
Definition: plotDoE.py:28