SPH
Public Member Functions | List of all members
SolidStressForce Class Reference

Equation of motion for solid body and constitutive equation for the stress tensor (Hooke's law) More...

#include <EquationTerm.h>

Inheritance diagram for SolidStressForce:
IEquationTerm Polymorphic

Public Member Functions

 SolidStressForce (const RunSettings &settings)
 
virtual void setDerivatives (DerivativeHolder &derivatives, const RunSettings &settings) override
 Sets derivatives required by this term. More...
 
virtual void initialize (IScheduler &scheduler, Storage &storage, const Float t) override
 Initialize all the derivatives and/or quantity values before derivatives are computed. More...
 
virtual void finalize (IScheduler &scheduler, Storage &storage, const Float t) override
 Computes all the derivatives and/or quantity values based on accumulated derivatives. More...
 
virtual void create (Storage &storage, IMaterial &material) const override
 Creates all quantities needed by the term using given material. More...
 
- Public Member Functions inherited from Polymorphic
virtual ~Polymorphic ()
 

Detailed Description

Equation of motion for solid body and constitutive equation for the stress tensor (Hooke's law)

The equation computes acceleration from the divergence of the deviatoric stress \(S\). The equation of motion in the used SPH discretization reads:

\[ \frac{{\rm d} \vec v_i}{{\rm d} t} = \sum_j m_j \left(\frac{S_i + S_j}{\rho_i \rho_j}\right) \cdot \nabla W_{ij}\,, \]

Corresponding term of energy equation (viscous heating) is also added to the energy derivative:

\[ \frac{{\rm d} u_i}{{\rm d} t} = \frac{1}{\rho_i} S_i : \nabla \vec v_i \,, \]

where \(\nabla \vec v_i\) is the symmetrized velocity gradient.

The stress is evolved as a first-order quantity, using Hooke's law as constitutive equation:

\[ \frac{{\rm d} S_i}{{\rm d} t} = 2\mu \left( \nabla \vec v - {\bf 1} \, \frac{\nabla \cdot \vec v}{3} \right)\,, \]

where \(\mu\) is the shear modulus and \(\bf 1\) is the identity tensor.

This equation represents solid bodies, for fluids use NavierStokesForce.

Attention
The isotropic part of the force is NOT computed, it is necessary to use PressureForce together with this equation.

Definition at line 149 of file EquationTerm.h.

Constructor & Destructor Documentation

◆ SolidStressForce()

SolidStressForce::SolidStressForce ( const RunSettings settings)
explicit
Todo:
correction tensor is now generalized, it is easily accessible to ALL derivatives deriving from DerivativeTemplate. We should create this quantity somehow automatically, without relying on SolidStressForce to add it.

Definition at line 142 of file EquationTerm.cpp.

Member Function Documentation

◆ create()

void SolidStressForce::create ( Storage storage,
IMaterial material 
) const
overridevirtual

Creates all quantities needed by the term using given material.

Called once for every body in the simulation.

Todo:
make sure that there is only a single derivative writing to VELOCITY_GRADIENT!!

Implements IEquationTerm.

Definition at line 204 of file EquationTerm.cpp.

◆ finalize()

void SolidStressForce::finalize ( IScheduler scheduler,
Storage storage,
const Float  t 
)
overridevirtual

Computes all the derivatives and/or quantity values based on accumulated derivatives.

Called every time step after derivatives are evaluated and saved to storage.

Implements IEquationTerm.

Definition at line 177 of file EquationTerm.cpp.

◆ initialize()

void SolidStressForce::initialize ( IScheduler scheduler,
Storage storage,
const Float  t 
)
overridevirtual

Initialize all the derivatives and/or quantity values before derivatives are computed.

Called at the beginning of every time step. Note that derivatives need not be zeroed out manually, this is already done by timestepping (for derivatives of quantities) and solver (for accumulated values).

Implements IEquationTerm.

Definition at line 173 of file EquationTerm.cpp.

◆ setDerivatives()

void SolidStressForce::setDerivatives ( DerivativeHolder derivatives,
const RunSettings settings 
)
overridevirtual

Sets derivatives required by this term.

The derivatives are then automatically evaluated by the solver, the equation term can access the result in finalize function. This function is called once for each thread at the beginning of the run.

Todo:
Correction tensor should be added automatically; same as above

Implements IEquationTerm.

Definition at line 151 of file EquationTerm.cpp.


The documentation for this class was generated from the following files: