ESyS-Particle
2.2
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
ASubLattice.h
Go to the documentation of this file.
1
2
// //
3
// Copyright (c) 2003-2013 by The University of Queensland //
4
// Earth Systems Science Computational Centre (ESSCC) //
5
// http://www.uq.edu.au/esscc //
6
// //
7
// Primary Business: Brisbane, Queensland, Australia //
8
// Licensed under the Open Software License version 3.0 //
9
// http://www.opensource.org/licenses/osl-3.0.php //
10
// //
12
13
#ifndef __ASUBLATTICE_H
14
#define __ASUBLATTICE_H
15
16
// -- project includes --
17
#include "
Model/EWallInteractionGroup.h
"
18
#include "
Model/BWallInteractionGroup.h
"
19
#include "
Model/SoftBWallInteractionGroup.h
"
20
#include "
Model/ViscWallIG.h
"
21
#include "
Parallel/CheckPointable.h
"
22
#include "
Foundation/vec3.h
"
23
24
// -- system includes --
25
#include <string>
26
#include <utility>
27
28
using
std::string;
29
30
class
MpiWTimers
;
31
class
TML_Comm
;
32
36
class
ASubLattice
:
public
esys::lsm::CheckPointable
37
{
38
private
:
39
std::string
m_particleType
;
40
41
protected
:
42
43
// -- neighbortable --
44
45
public
:
46
typedef
std::pair<int,int>
ParticleIdPair
;
47
typedef
std::vector<ParticleIdPair>
ParticleIdPairVector
;
48
typedef
std::vector<int>
IdVector
;
49
50
virtual
~ASubLattice
();
51
void
setNTSize
(
int
);
52
virtual
void
setParticleType
(
const
std::string &particleType)
53
{
54
m_particleType
= particleType;
55
}
56
virtual
const
std::string &
getParticleType
()
const
57
{
58
return
m_particleType
;
59
}
60
virtual
void
setTimeStepSize
(
double
dt) = 0;
61
virtual
vector<int>
getCommCoords
()
const
=0;
62
virtual
vector<int>
getCommDims
()
const
=0;
63
virtual
void
receiveParticles
()=0;
64
virtual
void
receiveConnections
()=0;
65
virtual
void
addWall
()=0;
66
virtual
void
addElasticWIG
()=0;
67
virtual
void
addBondedWIG
()=0;
68
virtual
void
addDirBondedWIG
()=0;
69
virtual
void
addViscWIG
()=0;
70
virtual
void
initNeighborTable
(
const
Vec3
&,
const
Vec3
&)=0;
71
virtual
void
initNeighborTable
(
const
Vec3
&,
const
Vec3
&,
const
vector<bool>&)=0;
72
virtual
void
addPairIG
()=0;
73
virtual
void
addTaggedPairIG
()=0;
74
virtual
void
addTriMesh
()=0;
75
virtual
void
addTriMeshIG
()=0;
76
virtual
void
addBondedTriMeshIG
()=0;
77
virtual
void
addMesh2D
()=0;
78
virtual
void
addMesh2DIG
()=0;
79
virtual
void
addBondedMesh2DIG
()=0;
80
virtual
void
addSingleIG
()=0;
81
virtual
void
addBondedIG
()=0;
82
virtual
void
addCappedBondedIG
()=0;
83
virtual
void
addShortBondedIG
()=0;
84
virtual
void
addRotBondedIG
()=0;
85
virtual
void
addRotThermBondedIG
()=0;
86
virtual
void
addDamping
()=0;
87
//virtual void addRotDamping()=0;
88
virtual
void
setExIG
()=0;
89
virtual
void
initComplex
();
90
virtual
void
removeIG
()=0;
91
virtual
void
getWallPos
()=0;
92
virtual
void
getWallForce
()=0;
93
94
virtual
const
MPI_Comm &
getWorkerComm
()
const
= 0;
95
96
virtual
void
rebuildParticleArray
()=0;
97
virtual
void
rebuildInteractions
()=0;
98
virtual
void
searchNeighbors
()=0;
99
virtual
void
checkNeighbors
()=0;
100
101
virtual
void
updateInteractions
()=0;
102
103
virtual
int
getNumParticles
() = 0;
104
105
virtual
std::pair<double, int>
findParticleNearestTo
(
const
Vec3
&pt) = 0;
106
107
virtual
std::pair<int, Vec3>
getParticlePosn
(
int
particleId) = 0;
108
109
// virtual ParticleIdPairVector getBondGroupIdPairs(const std::string &groupName) = 0;
110
111
virtual
void
oneStep
()=0;
112
virtual
void
exchangePos
()=0;
113
114
// moving stuff around
115
virtual
void
moveParticleTo
()=0;
116
virtual
void
moveTaggedParticlesBy
() = 0;
117
virtual
void
moveSingleParticleTo
(
int
particleId,
const
Vec3
&posn)=0;
118
virtual
void
moveWallBy
()=0;
119
virtual
void
setWallNormal
()=0;
120
virtual
void
applyForceToWall
()=0;
121
virtual
void
setVelocityOfWall
()=0;
122
virtual
void
setParticleVelocity
()=0;
123
virtual
void
setParticleDensity
()=0;
124
virtual
void
setTaggedParticleVel
()=0;
125
virtual
void
setParticleAngularVelocity
(){};
126
virtual
void
setParticleNonDynamic
()=0;
127
virtual
void
setParticleNonRot
()=0;
128
virtual
void
tagParticleNearestTo
()=0;
129
virtual
void
moveSingleNode
()=0;
130
virtual
void
moveTaggedNodes
()=0;
131
virtual
void
translateMeshBy
(
const
std::string &meshName,
const
Vec3
&translation)=0;
132
133
virtual
void
setTimer
(
MpiWTimers
&timers) = 0;
134
135
virtual
void
do2dCalculations
(
bool
do2d) = 0;
136
137
// field functions
138
virtual
void
countParticles
()=0;
139
140
// "new" field functions
141
virtual
void
addScalarParticleField
()=0;
142
virtual
void
addVectorParticleField
()=0;
143
virtual
void
addScalarInteractionField
()=0;
144
virtual
void
addVectorInteractionField
()=0;
145
virtual
void
addVectorTriangleField
()=0;
146
virtual
void
addScalarTriangleField
()=0;
147
virtual
void
sendFieldData
()=0;
148
virtual
void
addVectorWallField
()=0;
149
150
// output
151
virtual
void
printStruct
()=0;
152
virtual
void
printData
()=0;
153
virtual
void
printTimes
()=0;
154
155
// -- mesh data exchange --
156
virtual
void
getMeshNodeRef
()=0;
157
virtual
void
getMeshFaceRef
()=0;
158
virtual
void
getMesh2DStress
()=0;
159
virtual
void
getTriMeshForce
()=0;
160
virtual
void
getParticleData
(
const
IdVector
&particleIdVector)=0;
161
162
// checkpointing
163
virtual
void
loadCheckPointData
(std::istream&){};
164
};
165
166
#endif //__ASUBLATTICE_H
Parallel
ASubLattice.h
Generated on Mon May 6 2013 23:26:30 for ESyS-Particle by
1.8.3.1