13 #ifndef __ASUBLATTICE_H
14 #define __ASUBLATTICE_H
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"
39 std::string m_particleType;
46 typedef std::pair<int,int> ParticleIdPair;
47 typedef std::vector<ParticleIdPair> ParticleIdPairVector;
48 typedef std::vector<int> IdVector;
52 virtual void setParticleType(
const std::string &particleType)
54 m_particleType = particleType;
56 virtual const std::string &getParticleType()
const
58 return m_particleType;
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;
88 virtual void setExIG()=0;
90 virtual void removeIG()=0;
91 virtual void getWallPos()=0;
92 virtual void getWallForce()=0;
94 virtual const MPI_Comm &getWorkerComm()
const = 0;
96 virtual void rebuildParticleArray()=0;
97 virtual void rebuildInteractions()=0;
98 virtual void searchNeighbors()=0;
99 virtual void checkNeighbors()=0;
101 virtual void updateInteractions()=0;
103 virtual int getNumParticles() = 0;
105 virtual std::pair<double, int> findParticleNearestTo(
const Vec3 &pt) = 0;
107 virtual std::pair<int, Vec3> getParticlePosn(
int particleId) = 0;
111 virtual void oneStep()=0;
112 virtual void exchangePos()=0;
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;
133 virtual void setTimer(
MpiWTimers &timers) = 0;
135 virtual void do2dCalculations(
bool do2d) = 0;
138 virtual void countParticles()=0;
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;
151 virtual void printStruct()=0;
152 virtual void printData()=0;
153 virtual void printTimes()=0;
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;
163 virtual void loadCheckPointData(std::istream&){};
166 #endif //__ASUBLATTICE_H