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/*
2 * Loads.h
3 *
4 * Created on: 13 de abr de 2021
5 * Author: Fabricio Fernandez <fabricio.hmf@gmail.com>
6 */
7
8#ifndef LOADS_H_
9#define LOADS_H_
10
11#include "Body/Body.h"
12
13#include <vector>
14using std::vector;
15
16#include "Eigen/Core"
17using Eigen::Vector3d;
18
21namespace Loads {
22
27 {
28 Vector3d pointP1;
29 Vector3d pointP2;
30 Vector3d load;
31 };
32
36 {
37 std::vector<Vector3d> points;
38 std::vector <Vector3d> loads;
39 std::vector<int> nodal_ids;
40 };
41
46 {
47 Vector3d pointP1;
48 Vector3d pointP2;
49 double pressure;
50 };
51
55 {
56 Vector3d pointP1;
57 Vector3d pointP2;
58 Vector3d pressureForce;
59 };
60
65 {
67 double pressure;
68 };
69
74
77 double pressure;
78
84 PrescribedPorePressure(int body_index, int particle_index, double pressure_value) {
85
86 bodyIndex=body_index;
87 particleIndex=particle_index;
88 pressure=pressure_value;
89 }
90 };
91
97 {
98 std::vector<double> time;
99 std::vector<Eigen::Vector3d> acceleration;
100 std::vector<Eigen::Vector3d> velocity;
101 };
102
108
115
118 void setGravity(vector<Body*>& bodies);
119
123 void setLoadDistributedBox(vector<Body*>& bodies, vector<Loads::LoadDistributedBox> loads);
124
128 void setPrescribedPorePressureBox(vector<Body*>& bodies, vector<Loads::PressureBox> pressures);
129
133 void setInitialPorePressureBox(vector<Body*>& bodies, vector<Loads::PressureBox> pressures);
134
138 void setInitialPorePressureMaterial(vector<Body*>& bodies, vector<Loads::PressureMaterial> pressures);
139
142 void updatePrescribedPorePressure(vector<Body*>* bodies);
143
149 void setPrescribedPorePressureBoundaryForceBox(vector<Body*>& bodies, vector<Loads::PressureBoundaryForceBox> loads);
150
153 void setInitialVelocity(vector<Body*>& bodies);
154
158
161};
162
163#endif /* LOADS_H_ */
Class representing a rectangular grid mesh.
Definition Mesh.h:29
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:27
Vector3d load
load to be distributed in particles inside the box
Definition Loads.h:30
Vector3d pointP2
right upper point of the box
Definition Loads.h:29
Vector3d pointP1
left lower point of the box
Definition Loads.h:28
Definition Loads.h:36
std::vector< int > nodal_ids
nodal id
Definition Loads.h:39
std::vector< Vector3d > loads
Load [lx, ly, lz].
Definition Loads.h:38
std::vector< Vector3d > points
Coordinates [px, py, pz].
Definition Loads.h:37
Structure to represent a particle with a pressure. Pressure is applied to particles with the specifie...
Definition Loads.h:73
int bodyIndex
body index in body vector
Definition Loads.h:75
int particleIndex
particle index in particle vector
Definition Loads.h:76
double pressure
pressure to be applied to the particle
Definition Loads.h:77
PrescribedPorePressure(int body_index, int particle_index, double pressure_value)
Structure constructor.
Definition Loads.h:84
Structure to represent a boundary force in fluid due the action of the pressure.
Definition Loads.h:55
Vector3d pressureForce
force due the pressure applied at the boundary
Definition Loads.h:58
Vector3d pointP1
left lower point of the box
Definition Loads.h:56
Vector3d pointP2
right upper point of the box
Definition Loads.h:57
Structure to represent a box with a pressure. Pressure in applied to particles inside the cuboid defi...
Definition Loads.h:46
Vector3d pointP2
right upper point of the box
Definition Loads.h:48
double pressure
pressure in particles inside the box
Definition Loads.h:49
Vector3d pointP1
left lower point of the box
Definition Loads.h:47
Structure to represent a material with a pressure. Pressure is applied to particles with the specifie...
Definition Loads.h:65
int materialId
material id
Definition Loads.h:66
double pressure
pressure in particles inside the box
Definition Loads.h:67
Seismic data structure to manage acceleration and velocity of an earthquake record.
Definition Loads.h:97
std::vector< Eigen::Vector3d > acceleration
Definition Loads.h:99
std::vector< double > time
Definition Loads.h:98
std::vector< Eigen::Vector3d > velocity
Definition Loads.h:100