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// SPDX-License-Identifier: MIT
2// Copyright (c) 2021-2025 MPM-Geomechanics Development Team
3
4#ifndef INTERPOLATION_H_
5#define INTERPOLATION_H_
6
7#include "Eigen/Core"
8using Eigen::Vector3d;
9
10#include <vector>
11using std::vector;
12
13#include "TerrainContact.h"
14#include "Particle/Particle.h"
15
16class Mesh;
17class Body;
18class Particle;
19
25namespace Interpolation
26{
27
32 void nodalMassWithParticles(Mesh *mesh, vector<Particle *> *particles);
33
40 void nodalMass(Mesh *mesh, vector<Body *> *bodies);
41
48 void nodalMassFuid(Mesh *mesh, vector<Body *> *bodies);
49
56 void nodalMomentum(Mesh *mesh, vector<Body *> *bodies);
57
64 void nodalMomentumFluid(Mesh *mesh, vector<Body *> *bodies);
65
76 void nodalInternalForce(Mesh *mesh, vector<Body *> *bodies);
77
84 void nodalInternalForceFluid(Mesh *mesh, vector<Body *> *bodies);
85
96 void nodalExternalForce(Mesh *mesh, vector<Body *> *bodies);
97
108 void nodalExternalForceFluid(Mesh *mesh, vector<Body *> *bodies);
109
120 void nodalDragForceFluid(Mesh *mesh, vector<Body *> *bodies);
121
129 void particleStrainIncrement(Mesh *mesh, vector<Body *> *bodies, double time_step);
130
138 void particleStrainIncrementFluid(Mesh *mesh, vector<Body *> *bodies, double time_step);
139
147 void particleVorticityIncrement(Mesh *mesh, vector<Body *> *bodies, double time_step);
148
156 void particleDeformationGradient(Mesh *mesh, vector<Body *> *bodies, double time_step);
157
162 Eigen::Vector3d interpolateVector(const std::vector<double>& times, const std::vector<Eigen::Vector3d>& values, double itime);
163};
164
165#endif /* INTERPOLATION_H_ */
Represents a body in the space forming by a group of materials points and identified by a number.
Definition Body.h:15
Class representing a rectangular grid mesh.
Definition Mesh.h:26
Represents a Lagrangian material point This class contain all Lagrangian variables that represents th...
Definition Particle.h:25
Represents the interpolation operations in the MPM.
void nodalMassWithParticles(Mesh *mesh, vector< Particle * > *particles)
For test only.
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)
Interpolate a vector3d in time using linear interpolation.
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.