MPM-Geomechanics
Material Point Method for simulating geo-materials under large deformation conditions
Loading...
Searching...
No Matches
Interpolation.h
Go to the documentation of this file.
1/*
2 * Interpolation.h
3 *
4 * Created on: 13 de abr de 2021
5 * Author: Fabricio Fernandez <fabricio.hmf@gmail.com>
6 */
7
8#ifndef INTERPOLATION_H_
9#define INTERPOLATION_H_
10
11#include "Eigen/Core"
12using Eigen::Vector3d;
13
14#include<vector>
15using std::vector;
16
17class Mesh;
18class Body;
19
25namespace Interpolation {
26
33 void nodalMass(Mesh* mesh, vector<Body*>* bodies);
34
41 void nodalMassFuid(Mesh* mesh, vector<Body*>* bodies);
42
49 void nodalMomentum(Mesh* mesh, vector<Body*>* bodies);
50
57 void nodalMomentumFluid(Mesh* mesh, vector<Body*>* bodies);
58
69 void nodalInternalForce(Mesh* mesh, vector<Body*>* bodies);
70
77 void nodalInternalForceFluid(Mesh* mesh, vector<Body*>* bodies);
78
89 void nodalExternalForce(Mesh* mesh, vector<Body*>* bodies);
90
101 void nodalExternalForceFluid(Mesh* mesh, vector<Body*>* bodies);
102
113 void nodalDragForceFluid(Mesh* mesh, vector<Body*>* bodies);
114
122 void particleStrainIncrement(Mesh* mesh, vector<Body*>* bodies, double time_step);
123
131 void particleStrainIncrementFluid(Mesh* mesh, vector<Body*>* bodies, double time_step);
132
140 void particleVorticityIncrement(Mesh* mesh, vector<Body*>* bodies, double time_step);
141
149 void particleDeformationGradient(Mesh* mesh, vector<Body*>* bodies, double time_step);
150
151 Eigen::Vector3d interpolateVector(const std::vector<double>& times, const std::vector<Eigen::Vector3d>& values, double itime);
152};
153
154#endif /* INTERPOLATION_H_ */
155
Represents a body in the space forming by a group of materials points and identified by a number.
Definition Body.h:19
Class representing a rectangular grid mesh.
Definition Mesh.h:29
Represents the interpolation operations in the MPM.
void nodalMomentumFluid(Mesh *mesh, vector< Body * > *bodies)
Interpolate fluid momentum from particles to nodes.
void nodalInternalForceFluid(Mesh *mesh, vector< Body * > *bodies)
Interpolate internal force of fluid from particles to nodes.
void nodalMass(Mesh *mesh, vector< Body * > *bodies)
Interpolate solid mass from particles to nodes.
void nodalDragForceFluid(Mesh *mesh, vector< Body * > *bodies)
Interpolate drag force of fluid from particles to nodes.
void nodalInternalForce(Mesh *mesh, vector< Body * > *bodies)
Interpolate internal force of solid from particles to nodes.
void particleStrainIncrementFluid(Mesh *mesh, vector< Body * > *bodies, double time_step)
Interpolate the strain increment of fluid at particle.
void nodalExternalForce(Mesh *mesh, vector< Body * > *bodies)
Interpolate external force of solid from particles to nodes.
void nodalExternalForceFluid(Mesh *mesh, vector< Body * > *bodies)
Interpolate external force of fluid from particles to nodes.
void particleVorticityIncrement(Mesh *mesh, vector< Body * > *bodies, double time_step)
Interpolate vorticity increment of solid at particle.
void particleStrainIncrement(Mesh *mesh, vector< Body * > *bodies, double time_step)
Interpolate the strain increment of solid at particle.
void particleDeformationGradient(Mesh *mesh, vector< Body * > *bodies, double time_step)
Interpolate deformation gradient of solid at particle.
Eigen::Vector3d interpolateVector(const std::vector< double > &times, const std::vector< Eigen::Vector3d > &values, double itime)
void nodalMomentum(Mesh *mesh, vector< Body * > *bodies)
Interpolate solid momentum from particles to nodes.
void nodalMassFuid(Mesh *mesh, vector< Body * > *bodies)
Interpolate fluid mass from particles to nodes.