MPM-Geomechanics
Material Point Method for simulating geo-materials under large deformation conditions
Loading...
Searching...
No Matches
Interpolation Namespace Reference

Represents the interpolation operations in the MPM. More...

Functions

void nodalMassWithParticles (Mesh *mesh, vector< Particle * > *particles)
 For test only.
 
void nodalMass (Mesh *mesh, vector< Body * > *bodies)
 Interpolate solid mass from particles to nodes.
 
void nodalMassFuid (Mesh *mesh, vector< Body * > *bodies)
 Interpolate fluid mass from particles to nodes.
 
void nodalMomentum (Mesh *mesh, vector< Body * > *bodies)
 Interpolate solid momentum from particles to nodes.
 
void nodalMomentumFluid (Mesh *mesh, vector< Body * > *bodies)
 Interpolate fluid momentum from particles to nodes.
 
void nodalInternalForce (Mesh *mesh, vector< Body * > *bodies)
 Interpolate internal force of solid from particles to nodes.
 
void nodalInternalForceFluid (Mesh *mesh, vector< Body * > *bodies)
 Interpolate internal force of fluid from particles to nodes.
 
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 nodalDragForceFluid (Mesh *mesh, vector< Body * > *bodies)
 Interpolate drag force of fluid from particles to nodes.
 
void particleStrainIncrement (Mesh *mesh, vector< Body * > *bodies, double time_step)
 Interpolate the strain increment of solid at particle.
 
void particleStrainIncrementFluid (Mesh *mesh, vector< Body * > *bodies, double time_step)
 Interpolate the strain increment of fluid at particle.
 
void particleVorticityIncrement (Mesh *mesh, vector< Body * > *bodies, double time_step)
 Interpolate vorticity 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.
 

Detailed Description

Represents the interpolation operations in the MPM.

This class allows to interpolate quantities from particles to node and from nodes to particle back.

Function Documentation

◆ interpolateVector()

Eigen::Vector3d Interpolation::interpolateVector ( const std::vector< double > & times,
const std::vector< Eigen::Vector3d > & values,
double itime )

Interpolate a vector3d in time using linear interpolation.

Parameters
[in]timesA list of times
[in]valuesA list of vector3d values
[out]interpolated_vectorInterpolated vector3d

◆ nodalDragForceFluid()

void Interpolation::nodalDragForceFluid ( Mesh * mesh,
vector< Body * > * bodies )

Interpolate drag force of fluid from particles to nodes.

\( f_{iI}^{drag,f}= \sum_p \frac{m_p^f n g}{k_{ijp}}(v^w_{jp}-v^s_{jp})N_{Ip} \)

At the moment, only the principal values of the hydraulic conductivity in 3D are considered, then:

\( f_{iI}^{drag,f}= \sum_p \frac{m_p^f n g}{k_{ip}}(v^w_{ip}-v^s_{ip})N_{Ip} \)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers

◆ nodalExternalForce()

void Interpolation::nodalExternalForce ( Mesh * mesh,
vector< Body * > * bodies )

Interpolate external force of solid from particles to nodes.

In one phase calculations: \( f_{iI}^{ext} = \sum_p b_{ip} m_p N_{Ip} \)

In two phase calculations: \( f_{iI}^{ext,s} = \sum_p b_{ip} m_p^f N_{Ip} + \sum_p b_{ip} m_p^s N_{Ip} \)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers

◆ nodalExternalForceFluid()

void Interpolation::nodalExternalForceFluid ( Mesh * mesh,
vector< Body * > * bodies )

Interpolate external force of fluid from particles to nodes.

\( f_{iI}^{ext,f}=\sum_p b_{ip} m_p^w N_{Ip} - \sum_p \frac{m_p^f n g}{k_{ijp}}(v^w_{jp}-v^s_{jp})N_{Ip} \)

At the moment, only the principal values of the hydraulic conductivity in 3D are considered, then:

\( f_{iI}^{ext,f}=\sum_p b_{ip} m_p^w N_{Ip} - \sum_p \frac{m_p^f n g}{k_{ip}}(v^w_{ip}-v^s_{ip})N_{Ip} \)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers

◆ nodalInternalForce()

void Interpolation::nodalInternalForce ( Mesh * mesh,
vector< Body * > * bodies )

Interpolate internal force of solid from particles to nodes.

In one phase calculation: \( f_{iI}^{int}=-\sum_p \sigma_{ijp} V_p N_{Ip,i}\)

In two phase calculation: \( f_{iI}^{int,s}=-\sum_p \sigma_{ijp}' N_{Ip,i} V_p + \sum_p p^f N_{Ip,i} V_p\)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers

◆ nodalInternalForceFluid()

void Interpolation::nodalInternalForceFluid ( Mesh * mesh,
vector< Body * > * bodies )

Interpolate internal force of fluid from particles to nodes.

\( f_{iI}^{int,f}= \sum_p n p^f N_{Ip,i} V_p\)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers

◆ nodalMass()

void Interpolation::nodalMass ( Mesh * mesh,
vector< Body * > * bodies )

Interpolate solid mass from particles to nodes.

\( m_I = \sum_p m_p N_{Ip}\)

Parameters
[in]meshMesh reference
[in]bodiesA list of Bodies

◆ nodalMassFuid()

void Interpolation::nodalMassFuid ( Mesh * mesh,
vector< Body * > * bodies )

Interpolate fluid mass from particles to nodes.

\( m_I^f = \sum_p m_p^f N_{Ip}\)

Parameters
[in]meshMesh reference
[in]bodiesA list of Bodies

◆ nodalMassWithParticles()

void Interpolation::nodalMassWithParticles ( Mesh * mesh,
vector< Particle * > * particles )

For test only.

Parameters
[in]meshMesh reference
[in]particlesA list of particles

◆ nodalMomentum()

void Interpolation::nodalMomentum ( Mesh * mesh,
vector< Body * > * bodies )

Interpolate solid momentum from particles to nodes.

\( p_{iI} = \sum_p p_{ip} N_{Ip}\)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers

◆ nodalMomentumFluid()

void Interpolation::nodalMomentumFluid ( Mesh * mesh,
vector< Body * > * bodies )

Interpolate fluid momentum from particles to nodes.

\( p_{iI}^f = \sum_p p_{ip}^f N_{Ip}\)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers

◆ particleDeformationGradient()

void Interpolation::particleDeformationGradient ( Mesh * mesh,
vector< Body * > * bodies,
double time_step )

Interpolate deformation gradient of solid at particle.

\( F_{ijp}^{s,n+1} = (\delta_{ik} + \delta t \sum_I N_{Ip,k} v_{iI}^{s,n}) F_{kjp}^{s,n} \)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers
[in]time_stepTime step

◆ particleStrainIncrement()

void Interpolation::particleStrainIncrement ( Mesh * mesh,
vector< Body * > * bodies,
double time_step )

Interpolate the strain increment of solid at particle.

\( \Delta \epsilon_{ijp} = \frac{1}{2}(N_{Ip,j} v_{iI} + N_{Ip,i} v_{jI}) \)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers
[in]time_stepTime step

◆ particleStrainIncrementFluid()

void Interpolation::particleStrainIncrementFluid ( Mesh * mesh,
vector< Body * > * bodies,
double time_step )

Interpolate the strain increment of fluid at particle.

\( \Delta \epsilon_{ijp}^f = \frac{1}{2}(N_{Ip,j} v_{iI}^f + N_{Ip,i} v_{jI}^f) \)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers
[in]time_stepTime step

◆ particleVorticityIncrement()

void Interpolation::particleVorticityIncrement ( Mesh * mesh,
vector< Body * > * bodies,
double time_step )

Interpolate vorticity increment of solid at particle.

\( \Delta \Omega_{ijp} = \frac{1}{2}(N_{Ip,j} v_{iI} - N_{Ip,i} v_{jI}) \)

Parameters
[in]meshMesh reference
[in]bodiesA list o Body pointers
[in]time_stepTime step