PeriDyno 1.0.0
Loading...
Searching...
No Matches
CodimensionalPD.h
Go to the documentation of this file.
1#pragma once
4#include "ParticleSystem/ParticleSystem.h"
6#include "Peridynamics/Bond.h"
8
9
10namespace dyno
11{
12 template<typename> class PointSetToPointSet;
13
14 template<typename TDataType> class CoSemiImplicitHyperelasticitySolver;
15
16 template<typename TDataType>
17 class CodimensionalPD : public TriangularSystem<TDataType>
18 {
20 public:
21 typedef typename TDataType::Real Real;
22 typedef typename TDataType::Coord Coord;
23 typedef typename TDataType::Matrix Matrix;
24 typedef typename ::dyno::TBond<TDataType> Bond;
25
27 ~CodimensionalPD() override;
28
29 bool translate(Coord t) override;
30 bool scale(Real s) override;
31 bool scale(Coord s);
32 void loadSurface(std::string filename);
33
39
40 public:
41 DEF_VAR(Real, Horizon, 0.01, "Horizon");
42
44
46
47 DEF_ARRAY_STATE(Coord, RestPosition, DeviceType::GPU, "");
48
49 DEF_ARRAY_STATE(Coord, OldPosition, DeviceType::GPU, "");
50
51 DEF_ARRAY_STATE(Coord, RestNorm, DeviceType::GPU, "");
52
53 DEF_ARRAY_STATE(Coord, Norm, DeviceType::GPU, "");
54
55 DEF_ARRAY_STATE(Attribute, Attribute, DeviceType::GPU, "");
56
57 DEF_ARRAY_STATE(Real, Volume, DeviceType::GPU, "");
58
59 DEF_ARRAYLIST_STATE(Bond, RestShape, DeviceType::GPU, "");
60
61 DEF_VAR_STATE(Real, MaxLength, DeviceType::GPU, "");
62
63 DEF_VAR_STATE(Real, MinLength, DeviceType::GPU, "");
64
65 protected:
66 void resetStates() override;
67
68 void preUpdateStates() override;
69 void updateTopology() override;
70
71 virtual void updateRestShape();
72 virtual void updateVolume();
73 };
74}
#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
bool scale(Real s) override
void setEnergyModel(StVKModel< Real > model)
void preUpdateStates() override
DEF_ARRAY_STATE(Coord, RestPosition, DeviceType::GPU, "")
~CodimensionalPD() override
bool scale(Coord s)
DEF_ARRAY_STATE(Coord, OldPosition, DeviceType::GPU, "")
::dyno::TBond< TDataType > Bond
DEF_ARRAY_STATE(Real, Volume, DeviceType::GPU, "")
DEF_ARRAY_STATE(Coord, RestNorm, DeviceType::GPU, "")
DEF_VAR(Real, Horizon, 0.01, "Horizon")
TDataType::Matrix Matrix
DEF_VAR_STATE(Real, MaxLength, DeviceType::GPU, "")
bool translate(Coord t) override
virtual void updateVolume()
void setEnergyModel(LinearModel< Real > model)
virtual void updateRestShape()
void updateTopology() override
DEF_ARRAY_STATE(Attribute, Attribute, DeviceType::GPU, "")
DEF_VAR(EnergyType, EnergyType, Xuetal, "")
DEF_ARRAYLIST_STATE(Bond, RestShape, DeviceType::GPU, "")
void loadSurface(std::string filename)
TDataType::Coord Coord
DEF_VAR_STATE(Real, MinLength, DeviceType::GPU, "")
void setEnergyModel(FiberModel< Real > model)
DEF_ARRAY_STATE(Coord, Norm, DeviceType::GPU, "")
DEF_VAR(EnergyModels< Real >, EnergyModel, EnergyModels< Real >(), "")
void setEnergyModel(XuModel< Real > model)
void setEnergyModel(NeoHookeanModel< Real > model)
void resetStates() override
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25