32 auto smoothingLength = std::make_shared<FloatingNumber<TDataType>>();
33 smoothingLength->setName(
"Smoothing Length");
34 smoothingLength->varValue()->setValue(
Real(0.012));
37 auto samplingDistance = std::make_shared<FloatingNumber<TDataType>>();
38 samplingDistance->setName(
"Sampling Distance");
39 samplingDistance->varValue()->setValue(
Real(0.005));
43 auto integrator = std::make_shared<ParticleIntegrator<TDataType>>();
44 this->stateTimeStep()->connect(integrator->inTimeStep());
45 this->statePosition()->connect(integrator->inPosition());
46 this->stateVelocity()->connect(integrator->inVelocity());
50 auto nbrQuery = std::make_shared<NeighborPointQuery<TDataType>>();
51 smoothingLength->outFloating()->connect(nbrQuery->inRadius());
52 this->statePosition()->connect(nbrQuery->inPosition());
56 auto nbrQueryTri = std::make_shared<NeighborTriangleQuery<TDataType>>();
57 smoothingLength->outFloating()->connect(nbrQueryTri->inRadius());
58 this->statePosition()->connect(nbrQueryTri->inPosition());
59 this->inTriangleSet()->connect(nbrQueryTri->inTriangleSet());
63 auto meshCollision = std::make_shared<TriangularMeshConstraint<TDataType>>();
64 this->stateTimeStep()->connect(meshCollision->inTimeStep());
65 this->statePosition()->connect(meshCollision->inPosition());
66 this->stateVelocity()->connect(meshCollision->inVelocity());
69 this->inTriangleSet()->connect(meshCollision->inTriangleSet());
70 nbrQueryTri->outNeighborIds()->connect(meshCollision->inTriangleNeighborIds());
74 auto viscosity = std::make_shared<ImplicitViscosity<TDataType>>();
75 viscosity->varViscosity()->setValue(
Real(0.5));
76 this->stateTimeStep()->connect(viscosity->inTimeStep());
77 smoothingLength->outFloating()->connect(viscosity->inSmoothingLength());
78 samplingDistance->outFloating()->connect(viscosity->inSamplingDistance());
79 this->statePosition()->connect(viscosity->inPosition());
80 this->stateVelocity()->connect(viscosity->inVelocity());
81 nbrQuery->outNeighborIds()->connect(viscosity->inNeighborIds());
85 auto pshiftModule = std::make_shared<SemiAnalyticalParticleShifting<TDataType>>();
86 samplingDistance->outFloating()->connect(pshiftModule->inSamplingDistance());
87 smoothingLength->outFloating()->connect(pshiftModule->inSmoothingLength());
88 this->stateTimeStep()->connect(pshiftModule->inTimeStep());
89 this->statePosition()->connect(pshiftModule->inPosition());
90 this->stateVelocity()->connect(pshiftModule->inVelocity());
91 nbrQuery->outNeighborIds()->connect(pshiftModule->inNeighborIds());
92 this->inTriangleSet()->connect(pshiftModule->inTriangleSet());
96 nbrQueryTri->outNeighborIds()->connect(pshiftModule->inNeighborTriIds());
void postUpdateStates() override
void preUpdateStates() override
void resetStates() override