21 enum class ParticleType
31 SphBoundaryConditions(std::pair<Vec3d, Vec3d>& inletCoords, std::vector<std::pair<Vec3d, Vec3d>>& outletCoords, std::pair<Vec3d, Vec3d>& fluidCoords,
32 const Vec3d& inletNormal,
const StdVectorOfVec3d& outletNormals,
const double inletRadius,
const Vec3d& inletCenterPt,
const double inletFlowRate,
33 StdVectorOfVec3d& mainParticlePositions,
34 const StdVectorOfVec3d& wallParticlePositions);
37 bool isInInletDomain(
const Vec3d& position);
39 bool isInOutletDomain(
const Vec3d& position);
41 bool isInFluidDomain(
const Vec3d& position);
43 void setParticleTypes(
const StdVectorOfVec3d& mainParticlePositions,
const size_t numWallParticles);
45 std::vector<ParticleType>& getParticleTypes() {
return m_particleTypes; }
47 Vec3d getBufferCoord() {
return m_bufferCoord; }
49 Vec3d computeParabolicInletVelocity(
const Vec3d& position);
51 void addBoundaryParticles(StdVectorOfVec3d& mainParticlePositions,
const StdVectorOfVec3d& wallParticlePositions);
53 void setInletVelocity(
const double flowRate);
55 Vec3d getInletCoord() {
return m_inletDomain.first; }
57 Vec3d getInletVelocity() {
return m_inletVelocity; }
59 Vec3d getInletNormal() {
return m_inletNormal; }
61 std::vector<size_t>& getBufferIndices() {
return m_bufferIndices; }
63 Vec3d placeParticleAtInlet(
const Vec3d& position);
66 std::pair<Vec3d, Vec3d> m_inletDomain;
67 std::vector<std::pair<Vec3d, Vec3d>> m_outletDomain;
68 std::pair<Vec3d, Vec3d> m_fluidDomain;
70 std::vector<ParticleType> m_particleTypes;
73 Vec3d m_inletCenterPoint;
75 Vec3d m_inletVelocity;
78 double m_inletCrossSectionalArea;
80 const size_t m_numBufferParticles = 10000;
81 std::vector<size_t> m_bufferIndices;
void setParticleTypes(const StdVectorOfVec3d &mainParticlePositions, const size_t numWallParticles)
set particle type (fluid, wall, inlet, outlet, buffer)