MPM-Geomechanics
Material Point Method for simulating geo-materials under large deformation conditions
Loading...
Searching...
No Matches
Loads.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 LOADS_H_
5#define LOADS_H_
6
7#include "Body/Body.h"
8
9#include <vector>
10using std::vector;
11
12#include "Eigen/Core"
13using Eigen::Vector3d;
14
17namespace Loads {
18
23 {
24 Vector3d pointP1;
25 Vector3d pointP2;
26 Vector3d load;
27 };
28
32 {
33 std::vector<Vector3d> points;
34 std::vector <Vector3d> loads;
35 std::vector<int> nodal_ids;
36 };
37
42 {
43 Vector3d pointP1;
44 Vector3d pointP2;
45 double pressure;
46 };
47
51 {
52 Vector3d pointP1;
53 Vector3d pointP2;
54 Vector3d pressureForce;
55 };
56
61 {
63 double pressure;
64 };
65
70
73 double pressure;
74
80 PrescribedPorePressure(int body_index, int particle_index, double pressure_value) {
81
82 bodyIndex=body_index;
83 particleIndex=particle_index;
84 pressure=pressure_value;
85 }
86 };
87
93 {
94 std::vector<double> time;
95 std::vector<Eigen::Vector3d> acceleration;
96 std::vector<Eigen::Vector3d> velocity;
97 };
98
104
111
114 void setGravity(vector<Body*>& bodies);
115
119 void setLoadDistributedBox(vector<Body*>& bodies, vector<Loads::LoadDistributedBox> loads);
120
124 void setPrescribedPorePressureBox(vector<Body*>& bodies, vector<Loads::PressureBox> pressures);
125
129 void setInitialPorePressureBox(vector<Body*>& bodies, vector<Loads::PressureBox> pressures);
130
134 void setInitialPorePressureMaterial(vector<Body*>& bodies, vector<Loads::PressureMaterial> pressures);
135
138 void updatePrescribedPorePressure(vector<Body*>* bodies);
139
145 void setPrescribedPorePressureBoundaryForceBox(vector<Body*>& bodies, vector<Loads::PressureBoundaryForceBox> loads);
146
149 void setInitialVelocity(vector<Body*>& bodies);
150
154
157};
158
159#endif /* LOADS_H_ */
Class representing a rectangular grid mesh.
Definition Mesh.h:26
Operations to manage loads in the MPM model.
void configureNodalPointLoads(Mesh *mesh)
configure nodeid-point-load data for nodal force application
void setGravity(vector< Body * > &bodies)
Configures the gravity load in particles.
void setLoadDistributedBox(vector< Body * > &bodies, vector< Loads::LoadDistributedBox > loads)
Configure distributed load in particles inside of a box.
NodalPointLoadData & getNodalPointList()
Get (node-id load) vector for set nodal point load.
void updatePrescribedPorePressure(vector< Body * > *bodies)
Set prescribed pore pressure in particles.
void setInitialVelocity(vector< Body * > &bodies)
Set initial velocity in bodies.
void setPrescribedPorePressureBoundaryForceBox(vector< Body * > &bodies, vector< Loads::PressureBoundaryForceBox > loads)
Set external boundary force in fluid phase due the prescribed pore pressure in particles.
void setInitialPorePressureMaterial(vector< Body * > &bodies, vector< Loads::PressureMaterial > pressures)
Configure initial pore pressure in particles by material id.
void setInitialPorePressureBox(vector< Body * > &bodies, vector< Loads::PressureBox > pressures)
Configure initial pore pressure in particles inside of a box.
void setSeismicData()
Set the Seismic Data object.
SeismicData & getSeismicData()
Get the Seismic Data object.
void setPrescribedPorePressureBox(vector< Body * > &bodies, vector< Loads::PressureBox > pressures)
Configure prescribed pore pressure in particles inside of a box.
Structure to define a distributed load in particles inside the cuboid defined by point p1 and p2.
Definition Loads.h:23
Vector3d load
load to be distributed in particles inside the box
Definition Loads.h:26
Vector3d pointP2
right upper point of the box
Definition Loads.h:25
Vector3d pointP1
left lower point of the box
Definition Loads.h:24
Definition Loads.h:32
std::vector< int > nodal_ids
nodal id
Definition Loads.h:35
std::vector< Vector3d > loads
Load [lx, ly, lz].
Definition Loads.h:34
std::vector< Vector3d > points
Coordinates [px, py, pz].
Definition Loads.h:33
Structure to represent a particle with a pressure. Pressure is applied to particles with the specifie...
Definition Loads.h:69
int bodyIndex
body index in body vector
Definition Loads.h:71
int particleIndex
particle index in particle vector
Definition Loads.h:72
double pressure
pressure to be applied to the particle
Definition Loads.h:73
PrescribedPorePressure(int body_index, int particle_index, double pressure_value)
Structure constructor.
Definition Loads.h:80
Structure to represent a boundary force in fluid due the action of the pressure.
Definition Loads.h:51
Vector3d pressureForce
force due the pressure applied at the boundary
Definition Loads.h:54
Vector3d pointP1
left lower point of the box
Definition Loads.h:52
Vector3d pointP2
right upper point of the box
Definition Loads.h:53
Structure to represent a box with a pressure. Pressure in applied to particles inside the cuboid defi...
Definition Loads.h:42
Vector3d pointP2
right upper point of the box
Definition Loads.h:44
double pressure
pressure in particles inside the box
Definition Loads.h:45
Vector3d pointP1
left lower point of the box
Definition Loads.h:43
Structure to represent a material with a pressure. Pressure is applied to particles with the specifie...
Definition Loads.h:61
int materialId
material id
Definition Loads.h:62
double pressure
pressure in particles inside the box
Definition Loads.h:63
Seismic data structure to manage acceleration and velocity of an earthquake record.
Definition Loads.h:93
std::vector< Eigen::Vector3d > acceleration
Definition Loads.h:95
std::vector< double > time
Definition Loads.h:94
std::vector< Eigen::Vector3d > velocity
Definition Loads.h:96