positionParticles.hpp
Go to the documentation of this file.
1 /*------------------------------- phasicFlow ---------------------------------
2  O C enter of
3  O O E ngineering and
4  O O M ultiscale modeling of
5  OOOOOOO F luid flow
6 ------------------------------------------------------------------------------
7  Copyright (C): www.cemf.ir
8  email: hamid.r.norouzi AT gmail.com
9 ------------------------------------------------------------------------------
10 Licence:
11  This file is part of phasicFlow code. It is a free software for simulating
12  granular and multiphase flows. You can redistribute it and/or modify it under
13  the terms of GNU General Public License v3 or any other later versions.
14 
15  phasicFlow is distributed to help others in their research in the field of
16  granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
17  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 
19 -----------------------------------------------------------------------------*/
20 
21 #ifndef __positionParticles_hpp__
22 #define __positionParticles_hpp__
23 
24 #include "virtualConstructor.hpp"
25 #include "Vectors.hpp"
26 #include "dictionary.hpp"
27 
28 namespace pFlow
29 {
30 
32 {
33 public:
34 
35  regionBase() = default;
36 
37  regionBase(const regionBase&) = default;
38 
39  regionBase& operator =(const regionBase&) = default;
40 
41  virtual ~regionBase() = default;
42 
43  virtual bool isInside(const realx3 point)const = 0;
44 
45  virtual realx3 minPoint()const =0;
46 
47  virtual realx3 maxPoint()const =0;
48 
49  virtual word name()const =0;
50 
51 };
52 
53 template<typename T>
54 class region
55 :
56  public regionBase
57 {
58  protected:
59 
61 
62  public:
63 
64  region(const T& rgn)
65  :
66  region_(rgn)
67  {}
68 
69  region(const dictionary& dict)
70  :
71  region_(dict)
72  {}
73 
74  region(const region&) = default;
75 
76  region& operator =(const region&) = default;
77 
78  virtual ~region()=default;
79 
80  bool isInside(const realx3 point) const override
81  {
82  return region_.isInside(point);
83  }
84 
85  realx3 minPoint()const override
86  {
87  return region_.minPoint();
88  }
89 
90  realx3 maxPoint()const override
91  {
92  return region_.maxPoint();
93  }
94 
95  word name()const override
96  {
97  return region_.typeName();
98  }
99 
100 };
101 
103 {
104 protected:
105 
107 
108  size_t maxNumberOfParticles_ = 10000;
109 
111 
112  static const size_t numReports_ = 40;
113 
115 
116 public:
117 
118  // - type Info
119  TypeInfo("positionParticles");
120 
121  positionParticles(const dictionary& dict);
122 
124  (
126  dictionary,
127  (const dictionary& dict),
128  (dict)
129  );
130 
131  virtual ~positionParticles() = default;
132 
134 
135  virtual label numPoints()const = 0;
136 
137  virtual label size()const = 0;
138 
139  virtual real maxDiameter() const = 0;
140 
141  // - const access to position
142  virtual const realx3Vector& position()const = 0;
143 
144 
145  // - access to position
146  virtual realx3Vector& position() = 0;
147 
148  virtual realx3Vector getFinalPosition();
149 
150  static
152 
153 };
154 
155 
156 }
157 
158 
159 
160 #endif // __positionParticles_hpp__
pFlow::positionParticles::create_vCtor
create_vCtor(positionParticles, dictionary,(const dictionary &dict),(dict))
pFlow::region::region
region(const T &rgn)
Definition: positionParticles.hpp:64
pFlow::real
float real
Definition: builtinTypes.hpp:46
pFlow::regionBase::minPoint
virtual realx3 minPoint() const =0
pFlow::regionBase::regionBase
regionBase()=default
pFlow::positionParticles::create
static uniquePtr< positionParticles > create(const dictionary &dict)
Definition: positionParticles.cpp:117
pFlow::positionParticles::numPoints
virtual label numPoints() const =0
pFlow::regionBase::maxPoint
virtual realx3 maxPoint() const =0
pFlow::regionBase
Definition: positionParticles.hpp:31
pFlow::word
std::string word
Definition: builtinTypes.hpp:63
pFlow::region::region_
T region_
Definition: positionParticles.hpp:60
pFlow::positionParticles::~positionParticles
virtual ~positionParticles()=default
Vectors.hpp
pFlow::region
Definition: positionParticles.hpp:54
pFlow::positionParticles::region_
uniquePtr< regionBase > region_
Definition: positionParticles.hpp:106
pFlow::region::region
region(const dictionary &dict)
Definition: positionParticles.hpp:69
pFlow::region::operator=
region & operator=(const region &)=default
pFlow::positionParticles::size
virtual label size() const =0
pFlow::region::name
word name() const override
Definition: positionParticles.hpp:95
pFlow::regionBase::~regionBase
virtual ~regionBase()=default
pFlow::region::maxPoint
realx3 maxPoint() const override
Definition: positionParticles.hpp:90
pFlow
Definition: demComponent.hpp:28
pFlow::positionParticles::numReports_
static const size_t numReports_
Definition: positionParticles.hpp:112
pFlow::regionBase::name
virtual word name() const =0
pFlow::positionParticles::positionParticles
positionParticles(const dictionary &dict)
Definition: positionParticles.cpp:78
dictionary.hpp
pFlow::positionParticles::position
virtual const realx3Vector & position() const =0
pFlow::positionParticles::maxDiameter
virtual real maxDiameter() const =0
virtualConstructor.hpp
pFlow::positionParticles::mortonSorting_
Logical mortonSorting_
Definition: positionParticles.hpp:110
pFlow::positionParticles::TypeInfo
TypeInfo("positionParticles")
pFlow::Logical
Definition: Logical.hpp:35
pFlow::uniquePtr
Definition: uniquePtr.hpp:44
pFlow::positionParticles
Definition: positionParticles.hpp:102
pFlow::region::isInside
bool isInside(const realx3 point) const override
Definition: positionParticles.hpp:80
pFlow::positionParticles::getFinalPosition
virtual realx3Vector getFinalPosition()
Definition: positionParticles.cpp:101
pFlow::positionParticles::maxNumberOfParticles_
size_t maxNumberOfParticles_
Definition: positionParticles.hpp:108
pFlow::label
std::size_t label
Definition: builtinTypes.hpp:61
pFlow::positionParticles::sortByMortonCode
realx3Vector sortByMortonCode(realx3Vector &position) const
Definition: positionParticles.cpp:31
pFlow::regionBase::operator=
regionBase & operator=(const regionBase &)=default
pFlow::triple< real >
pFlow::region::minPoint
realx3 minPoint() const override
Definition: positionParticles.hpp:85
pFlow::Vector< realx3 >
pFlow::regionBase::isInside
virtual bool isInside(const realx3 point) const =0
pFlow::dictionary
Definition: dictionary.hpp:38
pFlow::region::~region
virtual ~region()=default