MPM-Geomechanics
Material Point Method for simulating geo-materials under large deformation conditions
Loading...
Searching...
No Matches
Material.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2021-2025 MPM-Geomechanics Development Team
3
4#ifndef MATERIAL_H_
5#define MATERIAL_H_
6
7#include "Eigen/Core"
8using Eigen::Vector3d;
9
10class Particle;
11
14class Material {
15
16public:
17
21
24 Material(int id=-1, double density=0, double mu = 0, MaterialType type = MaterialType::NONE);
25
28 virtual ~Material();
29
32 inline int getId() const { return this->id; }
33
36 inline double getDensity() const { return this->density; }
37
40 inline double getDensityFluid() const { return this->densityFluid; }
41
44 inline double getPorosity() const { return this->porosity; }
45
48 inline Vector3d getHydraulicConductivity() const { return this->hydraulicConductivity; }
49
52 inline double getBulkModulusFluid() const { return this->bulkModulusFluid; }
53
56 inline double getFrictionCoefficient() const { return this->mu; }
57
60 inline void setId(int material_id) { this->id=material_id; }
61
64 inline void setDensity(double material_density) { this->density=material_density; }
65
68 inline void setDensityFluid(double fluid_density) { this->densityFluid=fluid_density; }
69
72 inline void setPorosity(double material_porosity) { this->porosity=material_porosity; }
73
76 inline void setBulkModulusFluid(double bulk_fluid) { this->bulkModulusFluid=bulk_fluid; }
77
80 inline void setFrictionCoefficient(double _mu) { this->mu = _mu; }
81
84 inline void setHydraulicConductivity(Vector3d hydraulic_conductivity) { this->hydraulicConductivity=hydraulic_conductivity; }
85
88 inline void setType(MaterialType material_type) { this->type=material_type; }
89
92 inline virtual MaterialType getType() const { return this->type; }
93
96 virtual void updateStress(Particle* particle) const = 0;
97
100 virtual double getSoundSpeed( ) const = 0;
101
102protected:
103
104 int id;
105
106 double density;
107
109
110 double porosity;
111
113
114 double mu;
115
117
119};
120
121inline Material::Material(int id, double density, double mu, MaterialType type) {
122
123 this->id=id;
124 this->density=density;
125 this->densityFluid=0.0;
126 this->porosity=0.0;
127 this->bulkModulusFluid=0.0;
128 this->mu = mu;
129 this->hydraulicConductivity.setZero();
130 this->type=type;
131}
132
134
135#endif /* MATERIAL_H_ */
Represents a material.
Definition Material.h:14
void setId(int material_id)
Configure the material identification.
Definition Material.h:60
void setDensityFluid(double fluid_density)
Configures fluid density in material.
Definition Material.h:68
Material(int id=-1, double density=0, double mu=0, MaterialType type=MaterialType::NONE)
Default constructor.
Definition Material.h:121
Vector3d hydraulicConductivity
hydraulic conductivity of the fluid in the material
Definition Material.h:116
double porosity
initial porosity
Definition Material.h:110
virtual ~Material()
Default destructor.
Definition Material.h:133
void setType(MaterialType material_type)
Configures the material type.
Definition Material.h:88
void setBulkModulusFluid(double bulk_fluid)
Configures the volumetric modulus of fluid.
Definition Material.h:76
int id
material identification
Definition Material.h:104
double mu
friction coefficient
Definition Material.h:114
void setPorosity(double material_porosity)
Configures the material porosity.
Definition Material.h:72
virtual MaterialType getType() const
Returns the material type.
Definition Material.h:92
double density
initial material density or initial solid density in two-phase calculations
Definition Material.h:106
double getDensity() const
Returns material density.
Definition Material.h:36
virtual double getSoundSpeed() const =0
Get sound speed.
double densityFluid
initial density of the fluid phase in two-phase calculations
Definition Material.h:108
double getBulkModulusFluid() const
Returns Bulk modulus of fluid in mixture.
Definition Material.h:52
void setFrictionCoefficient(double _mu)
Configures the friction coefficient.
Definition Material.h:80
void setDensity(double material_density)
Configures the material density.
Definition Material.h:64
int getId() const
Return the identification.
Definition Material.h:32
MaterialType
Definition Material.h:20
@ NONE
Definition Material.h:20
@ NEWTONIAN
Definition Material.h:20
@ MOHRCOULOMB
Definition Material.h:20
@ ELASTIC
Definition Material.h:20
@ ELASTOPLASTIC
Definition Material.h:20
double getFrictionCoefficient() const
Returns Friction coefficient.
Definition Material.h:56
MaterialType type
material type
Definition Material.h:118
double getDensityFluid() const
Returns fluid density on material.
Definition Material.h:40
virtual void updateStress(Particle *particle) const =0
Update the stress tensor.
double getPorosity() const
Returns material porosity.
Definition Material.h:44
Vector3d getHydraulicConductivity() const
Returns Hydraulic conductivity.
Definition Material.h:48
double bulkModulusFluid
elastic volumetric modulus of fluid in mixture
Definition Material.h:112
void setHydraulicConductivity(Vector3d hydraulic_conductivity)
Configures the material hydraulic conductivity.
Definition Material.h:84
Represents a Lagrangian material point This class contain all Lagrangian variables that represents th...
Definition Particle.h:25