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

Represents operations to update values in nodes and particles. More...

Enumerations

enum  Direction { X , Y , Z }
 Principal direction in the model. This enumeration is used to update the boundary conditions in each direction. More...
 

Functions

void nodalVelocity (Mesh *mesh)
 Update the nodal velocity.
 
void nodalTotalForce (Mesh *mesh)
 Update the nodal total force.
 
void resetNodalValues (Mesh *mesh)
 Delete all stored values in nodes.
 
void particleDensity (vector< Body * > *bodies)
 Updates the particles' density.
 
void particlePorosity (vector< Body * > *bodies)
 Updates the porosity of the mixture.
 
void particleStress (vector< Body * > *bodies)
 Update the particles' stress.
 
void particlePressure (vector< Body * > *bodies, double dt)
 Update the particles pressure.
 
void particleVelocity (Mesh *mesh, vector< Body * > *bodies, double time_step)
 Update the particle velocity.
 
void particleVelocityFluid (Mesh *mesh, vector< Body * > *bodies, double time_step)
 Update the particle velocity fluid.
 
void particlePosition (Mesh *mesh, vector< Body * > *bodies, double time_step)
 Update particle position.
 
void boundaryConditionsForce (Mesh *mesh)
 Apply essential boundary condition in terms of force.
 
void boundaryConditionsForceFluid (Mesh *mesh)
 Apply essential boundary condition in terms of force of fluid phase.
 
void boundaryConditionsMomentum (Mesh *mesh)
 Apply essential boundary condition in terms of momentum.
 
void boundaryConditionsMomentumFluid (Mesh *mesh)
 Apply essential boundary condition in terms of momentum of fluid phase.
 
void contributionNodes (Mesh *mesh, vector< Body * > *bodies)
 Update the weights in each nodes that contributes.
 
void setPlaneForce (const Boundary::planeBoundary *boundary, vector< Node * > *nodes, unsigned direction)
 Configure the force in each node in boundary planes.
 
void setPlaneForceFluid (const Boundary::planeBoundary *boundary, vector< Node * > *nodes, unsigned direction)
 Configure the force in fluid phase in each node in boundary planes.
 
void setPlaneMomentum (const Boundary::planeBoundary *boundary, vector< Node * > *nodes, unsigned direction)
 Configure the momentum in each node in boundary planes.
 
void setPlaneMomentumFluid (const Boundary::planeBoundary *boundary, vector< Node * > *nodes, unsigned direction)
 Configure the momentum of fluid phase in each node in boundary planes.
 

Detailed Description

Represents operations to update values in nodes and particles.

Enumeration Type Documentation

◆ Direction

Principal direction in the model. This enumeration is used to update the boundary conditions in each direction.

Enumerator

Function Documentation

◆ boundaryConditionsForce()

void Update::boundaryConditionsForce ( Mesh * mesh)

Apply essential boundary condition in terms of force.

Parameters
[in]meshMesh reference

◆ boundaryConditionsForceFluid()

void Update::boundaryConditionsForceFluid ( Mesh * mesh)

Apply essential boundary condition in terms of force of fluid phase.

Parameters
[in]meshMesh reference

◆ boundaryConditionsMomentum()

void Update::boundaryConditionsMomentum ( Mesh * mesh)

Apply essential boundary condition in terms of momentum.

Parameters
[in]meshMesh reference

◆ boundaryConditionsMomentumFluid()

void Update::boundaryConditionsMomentumFluid ( Mesh * mesh)

Apply essential boundary condition in terms of momentum of fluid phase.

Parameters
[in]meshMesh reference

◆ contributionNodes()

void Update::contributionNodes ( Mesh * mesh,
vector< Body * > * bodies )

Update the weights in each nodes that contributes.

Parameters
[in]meshMesh reference
[in]bodiesList of bodies

◆ nodalTotalForce()

void Update::nodalTotalForce ( Mesh * mesh)

Update the nodal total force.

In one phase calculations:

\( f_{iI}^{tot} = f_{iI}^{int} + f_{iI}^{ext} + f_{iI}^{dmp} \)

In two phase calculations:

\( f_{iI}^{tot,s} = f_{iI}^{int,s} + f_{iI}^{ext,s} + f_{iI}^{dmp,s} - \dot{v}_{iI}^f m_I^f \)

Parameters
[in]meshMesh reference

◆ nodalVelocity()

void Update::nodalVelocity ( Mesh * mesh)

Update the nodal velocity.

\( v_{i I}= p_{i I} / m_{I} \)

Parameters
[in]meshMesh reference

◆ particleDensity()

void Update::particleDensity ( vector< Body * > * bodies)

Updates the particles' density.

In one phase calculations:

\( \rho_{p}^{t+1}=\rho_{p}^{t} /\left(1+\Delta \epsilon_{i i p}^{t-1/2}\right) \)

In two phase calculation:

\( \rho_{p}^{t+1,s}=\rho_{p}^{t,s} /\left(1+\Delta \epsilon_{i i p}^{t-1/2,s}\right) \)

\( \rho_{p}^{t+1,f}=\rho_{p}^{t,f} /\left(1+\Delta \epsilon_{i i p}^{t-1/2,f}\right) \)

Parameters
[in]bodiesList of Body pointers

◆ particlePorosity()

void Update::particlePorosity ( vector< Body * > * bodies)

Updates the porosity of the mixture.

\( n^{t+1} = V^{t+1,f}/(V^{t+1,f}+V^{t+1,s})\)

Parameters
[in]bodiesList of Body pointers

◆ particlePosition()

void Update::particlePosition ( Mesh * mesh,
vector< Body * > * bodies,
double time_step )

Update particle position.

Parameters
[in]meshMesh reference
[in]bodiesList of Body pointers
[in]time_stepTime step

◆ particlePressure()

void Update::particlePressure ( vector< Body * > * bodies,
double dt )

Update the particles pressure.

\( p_p^{t+1,f} = p_p^{t,f} - \Delta t K_w / n^{t+1} ((1-n^{t+1}) v_{i,i}^{t+1/2,s}+ n^{t+1} v_{i,i}^{t+1/2,f} ) \)

Parameters
[in]bodiesList of Body pointers
[in]dtTime step

◆ particleStress()

void Update::particleStress ( vector< Body * > * bodies)

Update the particles' stress.

Parameters
[in]bodiesList of Body pointers

◆ particleVelocity()

void Update::particleVelocity ( Mesh * mesh,
vector< Body * > * bodies,
double time_step )

Update the particle velocity.

\( v_{ip}^{t+1/2} = v_{ip}^{t-1/2} + \sum_I N_{ip} f_{iI}^{t}/m_I \Delta t\)

Parameters
[in]meshMesh reference
[in]bodiesList of Body pointers
[in]time_stepTime step

◆ particleVelocityFluid()

void Update::particleVelocityFluid ( Mesh * mesh,
vector< Body * > * bodies,
double time_step )

Update the particle velocity fluid.

\( v_{ip}^{f,t+1/2} = v_{ip}^{f,t-1/2} + \sum_I N_{ip} f_{iI}^{t,f}/m_I^f \Delta t \)

Parameters
[in]meshMesh reference
[in]bodiesList of Body pointers
[in]time_stepTime step

◆ resetNodalValues()

void Update::resetNodalValues ( Mesh * mesh)

Delete all stored values in nodes.

Parameters
[in]meshMesh reference

◆ setPlaneForce()

void Update::setPlaneForce ( const Boundary::planeBoundary * boundary,
vector< Node * > * nodes,
unsigned direction )

Configure the force in each node in boundary planes.

Parameters
[in]boundaryBoundary plane
[in]nodesNode list pointer
[in]directionDirection to apply de boundary condition

◆ setPlaneForceFluid()

void Update::setPlaneForceFluid ( const Boundary::planeBoundary * boundary,
vector< Node * > * nodes,
unsigned direction )

Configure the force in fluid phase in each node in boundary planes.

Parameters
[in]boundaryBoundary plane
[in]nodesNode list pointer
[in]directionDirection to apply de boundary condition

◆ setPlaneMomentum()

void Update::setPlaneMomentum ( const Boundary::planeBoundary * boundary,
vector< Node * > * nodes,
unsigned direction )

Configure the momentum in each node in boundary planes.

Parameters
[in]boundaryBoundary plane
[in]nodesNode list pointer
[in]directionDirection to apply de boundary condition \(x=0\), \(y=1\) , \(z=2\)

◆ setPlaneMomentumFluid()

void Update::setPlaneMomentumFluid ( const Boundary::planeBoundary * boundary,
vector< Node * > * nodes,
unsigned direction )

Configure the momentum of fluid phase in each node in boundary planes.

Parameters
[in]boundaryBoundary plane
[in]nodesNode list pointer
[in]directionDirection to apply de boundary condition \(x=0\), \(y=1\) , \(z=2\)