BaseBoundary.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 BaseBoundary_H
6 #define BaseBoundary_H
7 
8 #include <set>
9 #include "BaseObject.h"
10 #include "Math/ExtendedMath.h"
11 
12 class BoundaryHandler;
13 
15 
16 class ParticleHandler;
17 
18 class BaseParticle;
19 
20 class DPMBase;
21 
27 class BaseBoundary : public BaseObject
28 {
29 public:
33  BaseBoundary();
34 
38  BaseBoundary(const BaseBoundary& b);
39 
43  ~BaseBoundary() override;
44 
49  virtual BaseBoundary* copy() const = 0;
50 
55  void read(std::istream& is) override = 0;
56 
61  void write(std::ostream& os) const override = 0;
62 
63 
68 
73 
78 
82  virtual void checkBoundaryBeforeTimeStep(DPMBase* md);
83 
87  virtual void actionsBeforeTimeLoop();
88 
89  virtual void modifyGhostAfterCreation(BaseParticle* particle, int i);
90 
91  virtual void writeVTK(std::fstream& file) {}
92 
96  void setHandler(BoundaryHandler* handler);
97 
101  BoundaryHandler* getHandler() const;
102 
103 #ifdef MERCURYDPM_USE_MPI
110  std::set<BaseParticle*>& getParticlesToBeDeleted();
111 #endif
112 
113 protected:
114 #ifdef MERCURYDPM_USE_MPI
122  std::set<BaseParticle*> particlesToBeDeleted_;
123 
124 #endif
125 
126 private:
127 
132 
133 };
134 
135 #endif
int i
Definition: BiCGSTAB_step_by_step.cpp:9
#define UNUSED
Definition: GeneralDefine.h:18
Matrix2d md
Definition: MatrixBase_cast.cpp:1
float * p
Definition: Tutorial_Map_using.cpp:9
Scalar * b
Definition: benchVecAdd.cpp:17
Definition: BaseBoundary.h:28
virtual void createPeriodicParticle(BaseParticle *p UNUSED, ParticleHandler &pH UNUSED)
Creates a periodic particle in case of periodic boundaries in serial build.
Definition: BaseBoundary.cc:60
void read(std::istream &is) override=0
Reads the object's id_ from given istream NB: purely virtual function, overriding the version of Base...
Definition: BaseBoundary.cc:40
virtual void createPeriodicParticles(ParticleHandler &pH UNUSED)
Creates periodic copies of given particle in case of periodic boundaries.
Definition: BaseBoundary.cc:70
void write(std::ostream &os) const override=0
Adds object's id_ to given ostream NB: purely virtual function, overriding the version of BaseObject.
Definition: BaseBoundary.cc:49
~BaseBoundary() override
destructor
Definition: BaseBoundary.cc:31
virtual BaseBoundary * copy() const =0
Used to create a copy of the object NB: purely virtual function.
BoundaryHandler * getHandler() const
Returns the boundary's BoundaryHandler.
Definition: BaseBoundary.cc:122
BoundaryHandler * handler_
pointer to the boundary's BoundaryHandler
Definition: BaseBoundary.h:131
virtual void checkBoundaryAfterParticlesMove(ParticleHandler &pH)
Virtual function that does things to particles, each time step after particles have moved.
Definition: BaseBoundary.cc:92
virtual void checkBoundaryBeforeTimeStep(DPMBase *md)
Virtual function that does things before each time step.
Definition: BaseBoundary.cc:80
virtual void actionsBeforeTimeLoop()
Virtual function that does something after DPMBase::setupInitialConditions but before the first time ...
Definition: BaseBoundary.cc:104
void setHandler(BoundaryHandler *handler)
Sets the boundary's BoundaryHandler.
Definition: BaseBoundary.cc:113
virtual void modifyGhostAfterCreation(BaseParticle *particle, int i)
Definition: BaseBoundary.cc:96
BaseBoundary()
default constructor.
Definition: BaseBoundary.cc:11
virtual void writeVTK(std::fstream &file)
Definition: BaseBoundary.h:91
It is an abstract base class due to the purely virtual functions declared below. Even if the function...
Definition: BaseObject.h:30
Definition: BaseParticle.h:33
Container to store pointers to all BaseBoundary objects.
Definition: BoundaryHandler.h:17
The DPMBase header includes quite a few header files, defining all the handlers, which are essential....
Definition: DPMBase.h:56
Container to store pointers to all particles.
Definition: ParticleHandler.h:28
Container to store pointers to all BasePeriodicBoundary objects.
Definition: PeriodicBoundaryHandler.h:24