PeriDyno 1.0.0
Loading...
Searching...
No Matches
SemiAnalyticalIncompressibleFluidModel.h
Go to the documentation of this file.
1
8#pragma once
11#include "Module/GroupModule.h"
12
14
35
36namespace dyno
37{
38 template <typename TDataType>
40 template <typename TDataType>
42 template <typename TDataType>
44 template <typename TDataType>
46 template<typename TDataType>
48 template <typename TDataType>
50 template <typename TDataType>
52 template <typename TDataType>
54 template <typename TDataType>
55 class Helmholtz;
56 template <typename>
59
60 class ForceModule;
61 class ConstraintModule;
62 class Attribute;
63
64 template <typename TDataType>
66 {
68 public:
69 typedef typename TDataType::Real Real;
70 typedef typename TDataType::Coord Coord;
71
73
74 public:
76
82 void updateImpl() override;
83
90 {
91 m_smoothing_length.setValue(len);
92 }
93
99 {
100 m_restRho = rho;
101 }
102
103 public:
104 FVar<Real> m_smoothing_length; //searching distance for particles
105
108
110
113
114 DeviceArrayField<Attribute> m_particle_attribute; //particle attributes, used to juedge if a particle is a fluid particle
115
117 DeviceArrayField<Coord> m_triangle_vertex; //current positions of triangle vertexs
118 DeviceArrayField<Coord> m_triangle_vertex_old; //positions of triangle vertexs at last time step, used to update triangle velocities
119 DeviceArrayField<Triangle> m_triangle_index; //triangle vertex's indexes
120
121 DeviceArrayField<Coord> m_particle_force_density; //force density of fluid particles
124
127
128 DeviceArrayField<Coord> m_velocity_mod; //velocity norm of each particle
129
130 private:
133 int first = 1;
134
135 //std::shared_ptr<ConstraintModule> m_surfaceTensionSolver;
136 std::shared_ptr<ConstraintModule> m_viscositySolver; // no use
137
138 std::shared_ptr<ConstraintModule> m_incompressibilitySolver; // no use
139
140 std::shared_ptr<SemiAnalyticalIncompressibilityModule<TDataType>> m_pbdModule;
141
142 std::shared_ptr<TriangularMeshConstraint<TDataType>> m_meshCollision;
143
144 std::shared_ptr<ImplicitViscosity<TDataType>> m_visModule;
145 std::shared_ptr<SurfaceTension<TDataType>> m_surfaceTensionSolver;
146 std::shared_ptr<Helmholtz<TDataType>> m_Helmholtz;
147 std::shared_ptr<PointSetToPointSet<TDataType>> m_mapping; //no use
148 std::shared_ptr<ParticleIntegrator<TDataType>> m_integrator;
149 std::shared_ptr<NeighborPointQuery<TDataType>> m_nbrQueryPoint;
150
151 std::shared_ptr<NeighborTriangleQuery<TDataType>> m_nbrQueryTri;
152 };
153} // namespace dyno
#define DECLARE_TCLASS(name, T1)
Definition Object.h:87
particle attribute 0x00000000: [31-30]material; [29]motion; [28]Dynamic; [27-8]undefined yet,...
Definition Attribute.h:26
This class implements an implicit solver for artificial viscosity based on the XSPH method.
This is an implementation of the iterative density solver integrated into the Position Based Dynamics...
DEF_INSTANCE_IN(TriangleSet< TDataType >, TriangleSet, "")
std::shared_ptr< TriangularMeshConstraint< TDataType > > m_meshCollision
used to handel the collision between triangles and particles
std::shared_ptr< NeighborTriangleQuery< TDataType > > m_nbrQueryTri
neighbor list for particle-triangle
std::shared_ptr< Helmholtz< TDataType > > m_Helmholtz
particle shifting
std::shared_ptr< ImplicitViscosity< TDataType > > m_visModule
viscosity
std::shared_ptr< ParticleIntegrator< TDataType > > m_integrator
integrator, update particle velocity and position
std::shared_ptr< SemiAnalyticalIncompressibilityModule< TDataType > > m_pbdModule
semi-analytical projection-based fluid model
std::shared_ptr< NeighborPointQuery< TDataType > > m_nbrQueryPoint
neighbor list for particle pairs
std::shared_ptr< PointSetToPointSet< TDataType > > m_mapping
std::shared_ptr< SurfaceTension< TDataType > > m_surfaceTensionSolver
surface tension
Vector< PointType, 3 > Triangle
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
FArray< T, DeviceType::GPU > DeviceArrayField
Definition Field.h:279
TopologyModule::Triangle Triangle
The standard summation density.