dynLattice
Loading...
Searching...
No Matches
ElasticRodMaterial.h
Go to the documentation of this file.
1
7#pragma once
9
10// Forward declarations
11class MaterialFactory;
12
13using jem::idx_t;
14using jive::Cubix;
15using jive::Ref;
16using jive::String;
17
20{
21public:
24 static const char *TYPE_NAME;
25 static const char *STIFF_PREFIX;
26 static const char *YOUNGS_MODULUS;
27 static const char *SHEAR_MODULUS;
28 static const char *POISSON_RATIO;
29 static const char *AREA;
30 static const char *DENSITY;
31 static const char *AREA_MOMENT;
32 static const char *SHEAR_FACTOR;
33 static const char *POLAR_MOMENT;
34 static const char *CROSS_SECTION;
35 static const char *RADIUS;
36 static const char *SIDE_LENGTH;
40 static const char *N_ELEM;
41 static const char *EDGE_FACTOR;
42 static const char *EDGE_ELEMS;
44
45 JEM_DECLARE_CLASS(ElasticRodMaterial, Material);
46
48 ElasticRodMaterial(const String &name,
49 const Properties &conf,
50 const Properties &props,
51 const Properties &globdat);
52
54 static Ref<Material> makeNew(const String &name, const Properties &conf,
55 const Properties &props, const Properties &globdat);
56
58 static void declare();
59
67 virtual void configure(const Properties &props, const Properties &globdat) override;
68
69 virtual void getConfig(const Properties &conf, const Properties &globdat) const override;
70
71 virtual Matrix getMaterialStiff() const override;
72
73 virtual Matrix getMaterialStiff(const idx_t &ielem, const idx_t &ip) const override;
74
75 virtual Matrix getMaterialMass() const override;
76
77 virtual Matrix getMaterialMass(const idx_t &ielem, const idx_t &ip) const override;
78
79 virtual Matrix getLumpedMass(const double l) const override;
80
81 virtual Matrix getLumpedMass(const double l, const idx_t &ielem) const override;
82
83 virtual void getStress(const Vector &stress, const Vector &strain) override;
84
85 virtual void getStress(const Vector &stress, const Vector &strain, const idx_t &ielem, const idx_t &ip, const bool inelastic = false) override;
86
87 virtual void getTable(const String &name, XTable &strain_table, const IdxVector &items, const Vector &weights) const override;
88
89 virtual void applyDeform() override;
90
91 virtual void rejectDeform() override;
92
93 virtual double getDissipatedEnergy(const idx_t &ielem, const idx_t &ip) const override;
94
95 virtual double getPotentialEnergy(const idx_t &ielem, const idx_t &ip) const override;
96
97 virtual double getHardeningPotential(const idx_t &ielem, const idx_t &ip) const override;
98
99protected:
101
102protected:
104 void calcMaterialStiff_();
106 void calcMaterialMass_();
107
110 double young_;
111 double shearMod_;
112 double shearParam_;
113
114 double edgeFact_;
116 idx_t nElem_;
117
118 double area_;
119 Vector areaMoment_;
121
123 double radius_;
124 Vector sideLength_;
125
126 double density_;
128
131 Matrix materialK_;
132 Matrix materialM_;
133
136 Matrix energyPot_;
137
138 String rodName_;
140};
Material class for representing different materials in the simulation.
Linear elastic rod material with configurable cross-sectional properties.
Definition ElasticRodMaterial.h:20
static const char * YOUNGS_MODULUS
Young's modulus property key.
Definition ElasticRodMaterial.h:26
void calcMaterialStiff_()
Calculate material stiffness matrix.
Definition ElasticRodMaterial.cpp:320
virtual void getConfig(const Properties &conf, const Properties &globdat) const override
Retrieve current material configuration.
Definition ElasticRodMaterial.cpp:269
double density_
Material density.
Definition ElasticRodMaterial.h:126
double edgeFact_
Edge factor for lattice materials.
Definition ElasticRodMaterial.h:114
Cubix currStrains_
Strains from current iteration.
Definition ElasticRodMaterial.h:135
static const char * SHEAR_FACTOR
Shear correction factor property key.
Definition ElasticRodMaterial.h:32
double young_
Young's modulus.
Definition ElasticRodMaterial.h:110
static const char * N_ELEM
Number of elements property key.
Definition ElasticRodMaterial.h:40
static Ref< Material > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for material creation.
Definition ElasticRodMaterial.cpp:464
Vector areaMoment_
Area moments of inertia.
Definition ElasticRodMaterial.h:119
idx_t edgeElems_
Number of edge elements.
Definition ElasticRodMaterial.h:115
virtual Matrix getLumpedMass(const double l) const override
Get the lumped mass matrix for a given element length.
Definition ElasticRodMaterial.cpp:340
virtual Matrix getMaterialMass() const override
Get the material mass matrix per unit length.
Definition ElasticRodMaterial.cpp:385
String rodName_
Material instance name.
Definition ElasticRodMaterial.h:138
double area_
Cross-sectional area.
Definition ElasticRodMaterial.h:118
virtual void getTable(const String &name, XTable &strain_table, const IdxVector &items, const Vector &weights) const override
Populate strain table with material-specific data.
Definition ElasticRodMaterial.cpp:420
double polarMoment_
Polar moment of inertia.
Definition ElasticRodMaterial.h:120
static const char * RADIUS
Radius for circular sections property key.
Definition ElasticRodMaterial.h:35
Matrix materialM_
Material mass matrix.
Definition ElasticRodMaterial.h:132
static const char * STIFF_PREFIX
Prefix for direct stiffness-matrix input.
Definition ElasticRodMaterial.h:25
virtual void configure(const Properties &props, const Properties &globdat) override
Configure material properties including cross-sectional geometry.
Definition ElasticRodMaterial.cpp:72
static const char * POISSON_RATIO
Poisson's ratio property key.
Definition ElasticRodMaterial.h:28
static const char * AREA
Cross-sectional area property key.
Definition ElasticRodMaterial.h:29
static const char * DENSITY
Material density property key.
Definition ElasticRodMaterial.h:30
static const char * SHEAR_MODULUS
Shear modulus property key.
Definition ElasticRodMaterial.h:27
static const char * POLAR_MOMENT
Polar moment of inertia property key.
Definition ElasticRodMaterial.h:33
double shearParam_
Shear parameter.
Definition ElasticRodMaterial.h:112
Matrix energyPot_
Potential energy storage.
Definition ElasticRodMaterial.h:136
virtual void rejectDeform() override
Reject the current deformation and revert to previous state.
Definition ElasticRodMaterial.cpp:442
Matrix materialK_
Material stiffness matrix.
Definition ElasticRodMaterial.h:131
Vector sideLength_
Side lengths for rectangular sections.
Definition ElasticRodMaterial.h:124
double radius_
Radius for circular sections.
Definition ElasticRodMaterial.h:123
String crossSection_
Cross-section type identifier.
Definition ElasticRodMaterial.h:122
virtual double getHardeningPotential(const idx_t &ielem, const idx_t &ip) const override
Get the hardening potential energy at a specific integration point.
Definition ElasticRodMaterial.cpp:457
static const char * CROSS_SECTION
Cross-section type property key (e.g., "square", "circle" "rectangle")
Definition ElasticRodMaterial.h:34
static const char * EDGE_ELEMS
Number of edge elements property key.
Definition ElasticRodMaterial.h:42
idx_t nElem_
Total number of elements.
Definition ElasticRodMaterial.h:116
virtual void getStress(const Vector &stress, const Vector &strain) override
Compute stress vector from strain vector.
Definition ElasticRodMaterial.cpp:409
double shearMod_
Shear modulus.
Definition ElasticRodMaterial.h:111
static const char * TYPE_NAME
Definition ElasticRodMaterial.h:24
Cubix oldStrains_
Strains from last converged step.
Definition ElasticRodMaterial.h:134
static const char * EDGE_FACTOR
Edge factor for lattice materials property key.
Definition ElasticRodMaterial.h:41
~ElasticRodMaterial()
Definition ElasticRodMaterial.cpp:68
virtual void applyDeform() override
Apply computed deformation to the material state.
Definition ElasticRodMaterial.cpp:428
virtual double getDissipatedEnergy(const idx_t &ielem, const idx_t &ip) const override
Get the dissipated energy at a specific integration point.
Definition ElasticRodMaterial.cpp:452
void calcMaterialMass_()
Calculate material mass matrix.
Definition ElasticRodMaterial.cpp:330
static const char * SIDE_LENGTH
Side lengths for rectangular sections property key.
Definition ElasticRodMaterial.h:36
virtual double getPotentialEnergy(const idx_t &ielem, const idx_t &ip) const override
Get the potential energy at a specific integration point.
Definition ElasticRodMaterial.cpp:447
virtual Matrix getMaterialStiff() const override
Get the material stiffness matrix.
Definition ElasticRodMaterial.cpp:361
static const char * AREA_MOMENT
Area moment of inertia property key.
Definition ElasticRodMaterial.h:31
static void declare()
Register material type with factory.
Definition ElasticRodMaterial.cpp:471
Factory for dynamic material creation and registration.
Definition MaterialFactory.h:35
Abstract base class for material models.
Definition Material.h:39