PeriDyno 1.0.0
Loading...
Searching...
No Matches
ElastoplasticBody.cpp
Go to the documentation of this file.
1#include "ElastoplasticBody.h"
2
3#include "Collision/NeighborPointQuery.h"
4
6
7#include "ParticleSystem/Module/ParticleIntegrator.h"
9
10namespace dyno
11{
13
14 template<typename TDataType>
16 : Peridynamics<TDataType>()
17 {
18 auto m_integrator = std::make_shared<ParticleIntegrator<TDataType>>();
19 this->stateTimeStep()->connect(m_integrator->inTimeStep());
20 this->statePosition()->connect(m_integrator->inPosition());
21 this->stateVelocity()->connect(m_integrator->inVelocity());
22 this->animationPipeline()->pushModule(m_integrator);
23
24 auto m_nbrQuery = std::make_shared<NeighborPointQuery<TDataType>>();
25 this->stateHorizon()->connect(m_nbrQuery->inRadius());
26 this->statePosition()->connect(m_nbrQuery->inPosition());
27 this->animationPipeline()->pushModule(m_nbrQuery);
28
29 auto m_plasticity = std::make_shared<ElastoplasticityModule<TDataType>>();
30 this->stateHorizon()->connect(m_plasticity->inHorizon());
31 this->stateTimeStep()->connect(m_plasticity->inTimeStep());
32 this->statePosition()->connect(m_plasticity->inY());
33 this->stateReferencePosition()->connect(m_plasticity->inX());
34 this->stateVelocity()->connect(m_plasticity->inVelocity());
35 this->stateBonds()->connect(m_plasticity->inBonds());
36 m_nbrQuery->outNeighborIds()->connect(m_plasticity->inNeighborIds());
37 this->animationPipeline()->pushModule(m_plasticity);
38
39 auto m_visModule = std::make_shared<ImplicitViscosity<TDataType>>();
40 m_visModule->varViscosity()->setValue(Real(1));
41 this->stateTimeStep()->connect(m_visModule->inTimeStep());
42 this->stateHorizon()->connect(m_visModule->inSmoothingLength());
43 this->statePosition()->connect(m_visModule->inPosition());
44 this->stateVelocity()->connect(m_visModule->inVelocity());
45 m_nbrQuery->outNeighborIds()->connect(m_visModule->inNeighborIds());
46 this->animationPipeline()->pushModule(m_visModule);
47 }
48
49 template<typename TDataType>
54
56}
This is an implementation of elastoplasticity based on projective peridynamics. For more details,...
#define DEFINE_CLASS(name)
Definition Object.h:140
#define IMPLEMENT_TCLASS(name, T1)
Definition Object.h:103
std::shared_ptr< AnimationPipeline > animationPipeline()
Definition Node.cpp:311
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25