Mercury2D.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 MERCURY2D_H
6 #define MERCURY2D_H
7 
8 #include "MercuryBase.h"
9 #include <iostream>
10 
14 class Mercury2D : public MercuryBase
15 {
16 public:
20  Mercury2D();
21 
25  explicit Mercury2D(const DPMBase& other);
26 
30  Mercury2D(const Mercury2D& other);
31 
35  void constructor();
36 
40  std::vector<BaseParticle*> hGridFindParticleContacts(const BaseParticle* obj) override;
41 
42 protected:
46  virtual void hGridFindContactsWithinTargetCell(int x, int y, unsigned int l);
47 
51  virtual void hGridFindContactsWithTargetCell(int x, int y, unsigned int l, BaseParticle* obj);
52 
54  virtual void
55  hGridFindParticlesWithTargetCell(int x, int y, unsigned int l, BaseParticle* obj, std::vector<BaseParticle*>& list);
56 
60  void hGridGetInteractingParticleList(BaseParticle* obj, std::vector<BaseParticle*>& list) override;
61 
65  void computeInternalForces(BaseParticle* obj) override;
66 
70  bool hGridHasContactsInTargetCell(int x, int y, unsigned int l, const BaseParticle* obj) const;
71 
75  bool hGridHasParticleContacts(const BaseParticle* obj) override;
76 
80  void hGridRemoveParticle(BaseParticle* obj) override;
81 
85  void hGridUpdateParticle(BaseParticle* obj) override;
86 
87 #ifdef CONTACT_LIST_HGRID
91  void InsertCell(int x, int y, unsigned int l, BaseParticle *obj);
92 
96  void InsertObjAgainstGrid(BaseParticle *obj);
97 #endif
98 };
99 
100 #endif
Definition: BaseParticle.h:33
The DPMBase header includes quite a few header files, defining all the handlers, which are essential....
Definition: DPMBase.h:56
This adds on the hierarchical grid code for 2D problems.
Definition: Mercury2D.h:15
virtual void hGridFindParticlesWithTargetCell(int x, int y, unsigned int l, BaseParticle *obj, std::vector< BaseParticle * > &list)
Definition: Mercury2D.cc:119
void hGridGetInteractingParticleList(BaseParticle *obj, std::vector< BaseParticle * > &list) override
Obtains all neighbour particles of a given object, obtained from the hgrid.
Definition: Mercury2D.cc:140
bool hGridHasParticleContacts(const BaseParticle *obj) override
Test if a BaseParticle has any contacts in the HGrid.
Definition: Mercury2D.cc:427
virtual void hGridFindContactsWithTargetCell(int x, int y, unsigned int l, BaseParticle *obj)
Finds contacts between given BaseParticle and the BaseParticle in the target cell.
Definition: Mercury2D.cc:96
void constructor()
Function that sets the ParticleDimensions and SystemDimensions to 2.
Definition: Mercury2D.cc:38
std::vector< BaseParticle * > hGridFindParticleContacts(const BaseParticle *obj) override
Returns all particles that have a contact with a given particle.
Definition: Mercury2D.cc:477
bool hGridHasContactsInTargetCell(int x, int y, unsigned int l, const BaseParticle *obj) const
Tests if the BaseParticle has contacts with other Particles in the target cell.
Definition: Mercury2D.cc:399
Mercury2D()
This is the default constructor. All it does is set sensible defaults.
Definition: Mercury2D.cc:8
void hGridRemoveParticle(BaseParticle *obj) override
Removes a BaseParticle to the HGrid.
Definition: Mercury2D.cc:357
virtual void hGridFindContactsWithinTargetCell(int x, int y, unsigned int l)
Finds contacts between particles the in the target cell.
Definition: Mercury2D.cc:51
void computeInternalForces(BaseParticle *obj) override
Finds contacts with the BaseParticle; avoids multiple checks.
Definition: Mercury2D.cc:183
void hGridUpdateParticle(BaseParticle *obj) override
Updates the cell (not the level) of a BaseParticle.
Definition: Mercury2D.cc:299
This is the base class for both Mercury2D and Mercury3D. Note the actually abstract grid is defined i...
Definition: MercuryBase.h:105
Scalar * y
Definition: level1_cplx_impl.h:128
list x
Definition: plotDoE.py:28