9#include <jem/numeric/algebra/MatmulChain.h>
54 const Properties &conf,
55 const Properties &props,
56 const Properties &globdat);
64 static Ref<Material>
makeNew(
const String &name,
const Properties &conf,
65 const Properties &props,
const Properties &globdat);
75 virtual void configure(
const Properties &props,
const Properties &globdat)
override;
77 virtual void getConfig(
const Properties &conf,
const Properties &globdat)
const override;
81 virtual Matrix
getMaterialStiff(
const idx_t &ielem,
const idx_t &ip)
const override;
85 virtual void getMaterialStiff(
const Matrix &stiff,
const idx_t &ielem,
const idx_t &ip)
const override;
89 virtual Matrix
getMaterialMass(
const idx_t &ielem,
const idx_t &ip)
const override;
93 virtual void getMaterialMass(
const Matrix &mass,
const idx_t &ielem,
const idx_t &ip)
const override;
97 virtual Matrix
getLumpedMass(
const double l,
const idx_t &ielem)
const override;
99 virtual void getStress(
const Vector &stress,
const Vector &strain)
override;
101 virtual void getStress(
const Vector &stress,
const Vector &strain,
const idx_t &ielem,
const idx_t &ip,
const bool inelastic =
false)
override;
103 virtual void getTable(XTable &strain_table,
const Vector &weights,
const String &name,
const IdxVector &items)
const override;
111 virtual double getPotentialEnergy(
const idx_t &ielem,
const idx_t &ip)
const override;
Material class for representing different materials in the simulation.
Linear elastic rod material with configurable cross-sectional properties.
Definition ElasticRodMaterial.h:21
static const char * YOUNGS_MODULUS
Young's modulus property key.
Definition ElasticRodMaterial.h:27
void calcMaterialStiff_()
Calculate material stiffness matrix.
Definition ElasticRodMaterial.cpp:322
virtual void getConfig(const Properties &conf, const Properties &globdat) const override
Retrieve current material configuration.
Definition ElasticRodMaterial.cpp:271
double density_
Material density.
Definition ElasticRodMaterial.h:143
double edgeFact_
Edge factor for lattice materials.
Definition ElasticRodMaterial.h:131
Cubix currStrains_
Strains from current iteration.
Definition ElasticRodMaterial.h:152
static const char * SHEAR_FACTOR
Shear correction factor property key.
Definition ElasticRodMaterial.h:33
double young_
Young's modulus.
Definition ElasticRodMaterial.h:127
static const char * N_ELEM
Number of elements property key.
Definition ElasticRodMaterial.h:41
static Ref< Material > makeNew(const String &name, const Properties &conf, const Properties &props, const Properties &globdat)
Factory method for material creation.
Definition ElasticRodMaterial.cpp:496
Vector areaMoment_
Area moments of inertia.
Definition ElasticRodMaterial.h:136
idx_t edgeElems_
Number of edge elements.
Definition ElasticRodMaterial.h:132
virtual Matrix getLumpedMass(const double l) const override
Get the lumped mass matrix for a given element length.
Definition ElasticRodMaterial.cpp:342
virtual Matrix getMaterialMass() const override
Get the material mass matrix per unit length.
Definition ElasticRodMaterial.cpp:405
String rodName_
Material instance name.
Definition ElasticRodMaterial.h:160
double area_
Cross-sectional area.
Definition ElasticRodMaterial.h:135
double polarMoment_
Polar moment of inertia.
Definition ElasticRodMaterial.h:137
static const char * RADIUS
Radius for circular sections property key.
Definition ElasticRodMaterial.h:36
Matrix materialM_
Material mass matrix.
Definition ElasticRodMaterial.h:149
Matrix stiffWork_
Work array for the stiffness in getStress and applyDeform.
Definition ElasticRodMaterial.h:158
static const char * STIFF_PREFIX
Prefix for direct stiffness-matrix input.
Definition ElasticRodMaterial.h:26
virtual void configure(const Properties &props, const Properties &globdat) override
Configure material properties including cross-sectional geometry.
Definition ElasticRodMaterial.cpp:74
static const char * POISSON_RATIO
Poisson's ratio property key.
Definition ElasticRodMaterial.h:29
static const char * AREA
Cross-sectional area property key.
Definition ElasticRodMaterial.h:30
static const char * DENSITY
Material density property key.
Definition ElasticRodMaterial.h:31
static const char * SHEAR_MODULUS
Shear modulus property key.
Definition ElasticRodMaterial.h:28
static const char * POLAR_MOMENT
Polar moment of inertia property key.
Definition ElasticRodMaterial.h:34
double shearParam_
Shear parameter.
Definition ElasticRodMaterial.h:129
Matrix energyPot_
Potential energy storage.
Definition ElasticRodMaterial.h:153
virtual void rejectDeform() override
Reject the current deformation and revert to previous state.
Definition ElasticRodMaterial.cpp:474
Matrix materialK_
Material stiffness matrix.
Definition ElasticRodMaterial.h:148
Vector sideLength_
Side lengths for rectangular sections.
Definition ElasticRodMaterial.h:141
double radius_
Radius for circular sections.
Definition ElasticRodMaterial.h:140
String crossSection_
Cross-section type identifier.
Definition ElasticRodMaterial.h:139
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:489
static const char * CROSS_SECTION
Cross-section type property key (e.g., "square", "circle" "rectangle")
Definition ElasticRodMaterial.h:35
static const char * EDGE_ELEMS
Number of edge elements property key.
Definition ElasticRodMaterial.h:43
virtual void getTable(XTable &strain_table, const Vector &weights, const String &name, const IdxVector &items) const override
Populate strain table with material-specific data.
Definition ElasticRodMaterial.cpp:451
idx_t nElem_
Total number of elements.
Definition ElasticRodMaterial.h:133
virtual void getStress(const Vector &stress, const Vector &strain) override
Compute stress vector from strain vector.
Definition ElasticRodMaterial.cpp:438
double shearMod_
Shear modulus.
Definition ElasticRodMaterial.h:128
static const char * TYPE_NAME
Definition ElasticRodMaterial.h:25
Cubix oldStrains_
Strains from last converged step.
Definition ElasticRodMaterial.h:151
static const char * EDGE_FACTOR
Edge factor f property key: edge elements get stiffness blocks scaled by f^2, f^3,...
Definition ElasticRodMaterial.h:42
~ElasticRodMaterial()
Destroy the elastic rod material.
Definition ElasticRodMaterial.cpp:70
virtual void applyDeform() override
Apply computed deformation to the material state.
Definition ElasticRodMaterial.cpp:459
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:484
void calcMaterialMass_()
Calculate material mass matrix.
Definition ElasticRodMaterial.cpp:332
static const char * SIDE_LENGTH
Side lengths for rectangular sections property key.
Definition ElasticRodMaterial.h:37
jem::numeric::MatmulChain< double, 1 > matvec_
Definition ElasticRodMaterial.h:157
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:479
virtual Matrix getMaterialStiff() const override
Get the material stiffness matrix.
Definition ElasticRodMaterial.cpp:372
static const char * AREA_MOMENT
Area moment of inertia property key.
Definition ElasticRodMaterial.h:32
static void declare()
Register material type with factory.
Definition ElasticRodMaterial.cpp:503
Factory for dynamic material creation and registration.
Definition MaterialFactory.h:33
Abstract base class for material models.
Definition Material.h:37