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 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)
 

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 )

◆ 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

◆ 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