www.cemf.ir
grainInteraction.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 __grainInteraction_hpp__
22 #define __grainInteraction_hpp__
23 
24 #include "interaction.hpp"
25 #include "grainParticles.hpp"
28 #include "boundariesMask.hpp"
29 #include "MPITimer.hpp"
30 //#include "unsortedContactList.hpp"
31 
32 
33 
34 namespace pFlow
35 {
36 
37 template<
38  typename contactForceModel,
39  typename geometryMotionModel,
40  template <class, class, class> class contactListType>
42 :
43  public interaction
44 {
45 public:
46 
47  using GeometryMotionModel = geometryMotionModel;
48 
49  using ContactForceModel = contactForceModel;
50 
51  using MotionModel = typename geometryMotionModel::MotionModel;
52 
53  using ModelStorage = typename ContactForceModel::contactForceStorage;
54 
56 
57  using IdType = uint32;
58 
59  using IndexType = uint32;
60 
61  using ContactListType =
62  contactListType<ModelStorage, DefaultExecutionSpace, IdType>;
63 
64  //using BoundaryContactListType = unsortedContactList<ModelStorage, DefaultExecutionSpace, IdType>;
65 
66 
67 
68 private:
69 
72 
75 
78 
81 
84 
87 
90 
93 
94 
97 
100 
103 
106 
108 
109 
110 
111  bool createGrainInteraction();
112 
113  bool grainGrainInteraction();
114 
115  bool grainWallInteraction();
116 
118  using rpPPInteraction =
119  Kokkos::RangePolicy<Kokkos::IndexType<uint32>, Kokkos::Schedule<Kokkos::Dynamic>>;
120 
123 
124 public:
125 
127 
131  const particles& prtcl,
132  const geometry& geom);
133 
134 
136  add_vCtor
137  (
138  interaction,
141  );
142 
144  bool beforeIteration() override;
145 
148  bool iterate() override;
149 
151  bool afterIteration() override;
152 
154  bool hearChanges(
155  real t,
156  real dt,
157  uint32 iter,
158  const message& msg,
159  const anyList& varList)override;
160 
161 
162 };
163 
164 
165 }
166 
167 #include "grainInteraction.cpp"
168 
169 #endif //__grainInteraction_hpp__
pFlow::grainInteraction::contactListMangementBoundaryTimer_
Timer contactListMangementBoundaryTimer_
Definition: grainInteraction.hpp:107
grainInteractionKernels.hpp
pFlow::grainInteraction::geometryMotion_
const GeometryMotionModel & geometryMotion_
const reference to geometry
Definition: grainInteraction.hpp:71
pFlow::grainInteraction::add_vCtor
add_vCtor(interaction, grainInteraction, systemControl)
Add virtual constructor.
pFlow::grainInteraction::ContactForceModel
contactForceModel ContactForceModel
Definition: grainInteraction.hpp:49
pFlow::grainInteraction::ContactListType
contactListType< ModelStorage, DefaultExecutionSpace, IdType > ContactListType
Definition: grainInteraction.hpp:62
grainInteraction.cpp
pFlow::message
Definition: message.hpp:33
pFlow::real
float real
Definition: builtinTypes.hpp:45
pFlow::grainInteraction::grainGrainInteraction
bool grainGrainInteraction()
Definition: grainInteraction.cpp:53
pFlow::grainInteraction::pwInteractionTimer_
Timer pwInteractionTimer_
timer for particle-wall interaction computations
Definition: grainInteraction.hpp:99
pFlow::grainInteraction::rpPWInteraction
rpPPInteraction rpPWInteraction
range policy for p-w interaction execution
Definition: grainInteraction.hpp:122
pFlow::grainInteraction::IdType
uint32 IdType
Definition: grainInteraction.hpp:57
pFlow::demComponent::control
const auto & control() const
Const ref to systemControl.
Definition: demComponent.hpp:88
pFlow::grainInteraction::beforeIteration
bool beforeIteration() override
This is called in time loop, before iterate. (overriden from demComponent)
Definition: grainInteraction.cpp:158
pFlow::grainInteraction::afterIteration
bool afterIteration() override
This is called in time loop, after iterate. (overriden from demComponent)
Definition: grainInteraction.cpp:339
pFlow::grainInteraction
Definition: grainInteraction.hpp:41
pFlow::grainInteraction::contactListMangementTimer_
Timer contactListMangementTimer_
timer for managing contact lists (only inernal points)
Definition: grainInteraction.hpp:105
pFlow::grainInteraction::GeometryMotionModel
geometryMotionModel GeometryMotionModel
Definition: grainInteraction.hpp:47
pFlow::grainParticles
Definition: grainParticles.hpp:42
pFlow::uint32
unsigned int uint32
Definition: builtinTypes.hpp:56
pFlow::grainInteraction::boundaryInteractionTimer_
Timer boundaryInteractionTimer_
timer for boundary interaction time
Definition: grainInteraction.hpp:102
pFlow::grainInteraction::IndexType
uint32 IndexType
Definition: grainInteraction.hpp:59
boundaryGrainInteractionList.hpp
pFlow::systemControl
Definition: systemControl.hpp:41
pFlow::boundaryGrainInteractionList< ContactForceModel, GeometryMotionModel >
pFlow::grainInteraction::ModelStorage
typename ContactForceModel::contactForceStorage ModelStorage
Definition: grainInteraction.hpp:53
pFlow::grainInteraction::createGrainInteraction
bool createGrainInteraction()
Definition: grainInteraction.cpp:22
interaction.hpp
pFlow::grainInteraction::ppContactList_
uniquePtr< ContactListType > ppContactList_
contact list for particle-particle interactoins (keeps the history)
Definition: grainInteraction.hpp:89
pFlow
Definition: demGeometry.hpp:27
pFlow::grainInteraction::grainInteraction
grainInteraction(systemControl &control, const particles &prtcl, const geometry &geom)
Constructor from components.
Definition: grainInteraction.cpp:129
pFlow::grainInteraction::grnParticles_
const grainParticles & grnParticles_
const reference to particles
Definition: grainInteraction.hpp:74
grainParticles.hpp
pFlow::anyList
Definition: anyList.hpp:35
pFlow::particles
Definition: particles.hpp:33
pFlow::grainInteraction::iterate
bool iterate() override
This is called in time loop.
Definition: grainInteraction.cpp:164
pFlow::Timer
Definition: Timer.hpp:33
pFlow::grainInteraction::forceModel_
uniquePtr< ContactForceModel > forceModel_
contact force model
Definition: grainInteraction.hpp:86
pFlow::grainInteraction::pwContactList_
uniquePtr< ContactListType > pwContactList_
contact list for particle-wall interactions (keeps the history)
Definition: grainInteraction.hpp:92
pFlow::grainInteraction::activeBoundaries_
boundariesMask< 6 > activeBoundaries_
a mask for active boundaries (boundaries with intreaction)
Definition: grainInteraction.hpp:80
MPITimer.hpp
pFlow::boundariesMask< 6 >
pFlow::uniquePtr
Definition: uniquePtr.hpp:42
pFlow::geometry
Base class for geometry for managing tri-surfaces, geometry motion, and surface physical properties.
Definition: geometry.hpp:44
boundariesMask.hpp
pFlow::grainInteraction::contactSearch_
uniquePtr< contactSearch > contactSearch_
contact search object for pp and pw interactions
Definition: grainInteraction.hpp:83
pFlow::grainInteraction::TypeInfoTemplate13
TypeInfoTemplate13("grainInteraction", ContactForceModel, MotionModel, ContactListType)
pFlow::grainInteraction::grainWallInteraction
bool grainWallInteraction()
Definition: grainInteraction.cpp:86
pFlow::demComponent::dt
real dt() const
Time step of integration.
Definition: demComponent.cpp:33
pFlow::grainInteraction::ppInteractionTimer_
Timer ppInteractionTimer_
timer for particle-particle interaction computations
Definition: grainInteraction.hpp:96
pFlow::grainInteraction::boundaryInteraction_
BoundaryListType boundaryInteraction_
particle-particle and particle-wall interactions at boundaries
Definition: grainInteraction.hpp:77
pFlow::interaction
Definition: interaction.hpp:38
pFlow::grainInteraction::rpPPInteraction
Kokkos::RangePolicy< Kokkos::IndexType< uint32 >, Kokkos::Schedule< Kokkos::Dynamic > > rpPPInteraction
range policy for p-p interaction execution
Definition: grainInteraction.hpp:119
pFlow::grainInteraction::MotionModel
typename geometryMotionModel::MotionModel MotionModel
Definition: grainInteraction.hpp:51
pFlow::grainInteraction::hearChanges
bool hearChanges(real t, real dt, uint32 iter, const message &msg, const anyList &varList) override
Check for changes in the point structures. (overriden from observer)
Definition: grainInteraction.cpp:346