To build element equations for 2-D linearized elasticity using 3-node triangles. More...

#include <Elas2DT3.h>

Inheritance diagram for Elas2DT3:
Equa_Solid< 3, 6, 2, 4 > Equation< NEN_, NEE_, NSN_, NSE_ > Equa

Public Member Functions

 Elas2DT3 ()
 Default Constructor.
 
 Elas2DT3 (Mesh &ms)
 Constructor using Mesh data.
 
 Elas2DT3 (Mesh &ms, Vect< real_t > &u)
 Constructor using Mesh data and solution vector.
 
 ~Elas2DT3 ()
 Destructor.
 
void Media (real_t E, real_t nu, real_t rho)
 Set media properties.
 
void PlaneStrain ()
 Set plane strain hypothesis.
 
void PlaneStrain (real_t E, real_t nu)
 Set plane strain hypothesis by giving values of Young's modulus E and Poisson ratio nu
 
void PlaneStress ()
 Set plane stress hypothesis.
 
void PlaneStress (real_t E, real_t nu)
 Set plane stress hypothesis by giving values of Young's modulus E and Poisson ratio nu
 
void LMass (real_t coef=1.)
 Add element lumped mass contribution to element matrix after multiplication by coef
 
void Mass (real_t coef=1.)
 Add element consistent mass contribution to element matrix after multiplication by coef
 
void Deviator (real_t coef=1.)
 Add element deviatoric matrix to element matrix after multiplication by coef
 
void Dilatation (real_t coef=1.)
 Add element dilatational contribution to element matrix after multiplication by coef
 
void BodyRHS (const Vect< real_t > &f)
 Add body right-hand side term to right hand side.
 
void BodyRHS ()
 Add body right-hand side term to right hand side.
 
void BoundaryRHS (const Vect< real_t > &f)
 Add boundary right-hand side term to right hand side.
 
void BoundaryRHS ()
 Add boundary right-hand side term to right hand side.
 
int Contact (real_t coef=1.e07)
 Penalty Signorini contact side contribution to matrix and right-hand side.
 
void Reaction (Vect< real_t > &r)
 Calculate reactions.
 
void ContactPressure (const Vect< real_t > &f, real_t penal, Point< real_t > &p)
 Calculate contact pressure.
 
void Strain (Vect< real_t > &eps)
 Calculate strains in element.
 
void Stress (Vect< real_t > &s, Vect< real_t > &vm)
 Calculate principal stresses and Von-Mises stress in element.
 
void Periodic (real_t coef=1.e20)
 Add contribution of periodic boundary condition (by a penalty technique).
 
- Public Member Functions inherited from Equa_Solid< 3, 6, 2, 4 >
 Equa_Solid ()
 Default constructor.
 
virtual ~Equa_Solid ()
 Destructor.
 
virtual void Stiffness (real_t coef=1)
 Add stiffness matrix to left-hand side taking into account time integration scheme, after multiplication by coef [Default: 1].
 
void setInput (EType opt, Vect< real_t > &u)
 Set specific input data to solid mechanics.
 
- Public Member Functions inherited from Equation< NEN_, NEE_, NSN_, NSE_ >
 Equation ()
 
 Equation (Mesh &mesh)
 Constructor with mesh instance.
 
 Equation (Mesh &mesh, Vect< real_t > &u)
 Constructor with mesh instance and solution vector.
 
 Equation (Mesh &mesh, Vect< real_t > &u, real_t &init_time, real_t &final_time, real_t &time_step)
 Constructor with mesh instance, matrix and right-hand side.
 
 ~Equation ()
 Destructor.
 
void updateBC (const Element &el, const Vect< real_t > &bc)
 Update Right-Hand side by taking into account essential boundary conditions.
 
void DiagBC (DOFSupport dof_type=NODE_DOF, int dof=0)
 Update element matrix to impose bc by diagonalization technique.
 
void LocalNodeVector (Vect< real_t > &b)
 Localize element vector from a Vect instance.
 
void ElementNodeVector (const Vect< real_t > &b, LocalVect< real_t, NEE_ > &be)
 Localize element vector from a Vect instance.
 
void SideNodeVector (const Vect< real_t > &b, LocalVect< real_t, NSE_ > &bs)
 Localize side vector from a Vect instance.
 
void SideSideVector (const Vect< real_t > &b, vector< real_t > &bs)
 Localize side vector from a Vect instance.
 
void ElementNodeVectorSingleDOF (const Vect< real_t > &b, LocalVect< real_t, NEN_ > &be)
 Localize Element Vector from a Vect instance.
 
void ElementNodeVector (const Vect< real_t > &b, LocalVect< real_t, NEN_ > &be, int dof)
 Localize Element Vector from a Vect instance.
 
void ElementSideVector (const Vect< real_t > &b, LocalVect< real_t, NSE_ > &be)
 Localize Element Vector from a Vect instance.
 
void ElementVector (const Vect< real_t > &b, DOFSupport dof_type=NODE_DOF, int flag=0)
 Localize element vector.
 
void SideVector (const Vect< real_t > &b, vector< real_t > &sb)
 Localize side vector.
 
void ElementNodeCoordinates ()
 Localize coordinates of element nodes.
 
void SideNodeCoordinates ()
 Localize coordinates of side nodes.
 
void ElementAssembly (Matrix< real_t > *A)
 Assemble element matrix into global one.
 
void ElementAssembly (BMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void ElementAssembly (SkSMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void ElementAssembly (SkMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void ElementAssembly (SpMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void ElementAssembly (TrMatrix< real_t > &A)
 Assemble element matrix into global one.
 
void DGElementAssembly (Matrix< real_t > *A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void DGElementAssembly (SkSMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void DGElementAssembly (SkMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void DGElementAssembly (SpMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void DGElementAssembly (TrMatrix< real_t > &A)
 Assemble element matrix into global one for the Discontinuous Galerkin approximation.
 
void SideAssembly (Matrix< real_t > *A)
 Assemble side (edge or face) matrix into global one.
 
void SideAssembly (SkSMatrix< real_t > &A)
 Assemble side (edge or face) matrix into global one.
 
void SideAssembly (SkMatrix< real_t > &A)
 Assemble side (edge or face) matrix into global one.
 
void SideAssembly (SpMatrix< real_t > &A)
 Assemble side (edge or face) matrix into global one.
 
void ElementAssembly (Vect< real_t > &v)
 Assemble element vector into global one.
 
void SideAssembly (Vect< real_t > &v)
 Assemble side (edge or face) vector into global one.
 
void AxbAssembly (const Element &el, const Vect< real_t > &x, Vect< real_t > &b)
 Assemble product of element matrix by element vector into global vector.
 
void AxbAssembly (const Side &sd, const Vect< real_t > &x, Vect< real_t > &b)
 Assemble product of side matrix by side vector into global vector.
 
size_t getNbNodes () const
 Return number of element nodes.
 
size_t getNbEq () const
 Return number of element equations.
 
real_t setMaterialProperty (const string &exp, const string &prop)
 Define a material property by an algebraic expression.
 
- Public Member Functions inherited from Equa
 Equa ()
 Default constructor.
 
virtual ~Equa ()
 Destructor.
 
void setMesh (Mesh &m)
 Define mesh and renumber DOFs after removing imposed ones.
 
MeshgetMesh () const
 Return reference to Mesh instance.
 
LinearSolvergetLinearSolver ()
 Return reference to linear solver instance.
 
Matrix< real_t > * getMatrix () const
 Return pointer to matrix.
 
void setSolver (Iteration ls, Preconditioner pc=IDENT_PREC)
 Choose solver for the linear system.
 
void setMatrixType (int t)
 Choose type of matrix.
 
int solveLinearSystem (Matrix< real_t > *A, Vect< real_t > &b, Vect< real_t > &x)
 Solve the linear system with given matrix and right-hand side.
 
int solveLinearSystem (Vect< real_t > &b, Vect< real_t > &x)
 Solve the linear system with given right-hand side.
 
void LinearSystemInfo ()
 Print info on linear system solver.
 

Additional Inherited Members

- Protected Member Functions inherited from Equa_Solid< 3, 6, 2, 4 >
void Young (const real_t &E)
 Set (constant) Young modulus.
 
void Young (const string &exp)
 Set Young modulus given by an algebraic expression.
 
void Poisson (const real_t &nu)
 Set (constant) Poisson ratio.
 
void Poisson (const string &exp)
 Set Poisson ratio given by an algebraic expression.
 
void Density (const real_t &rho)
 Set (constant) density.
 
void Density (const string &exp)
 Set density given by an algebraic expression.
 
void setMaterial ()
 Set material properties.
 

Detailed Description

To build element equations for 2-D linearized elasticity using 3-node triangles.

This class enables building finite element arrays for linearized isotropic elasticity problem in 2-D domains using 3-Node triangles.
Unilateral contact is handled using a penalty function. Note that members calculating element arrays have as an argument a real coef that is multiplied by the contribution of the current element. This makes possible testing different algorithms.

Constructor & Destructor Documentation

◆ Elas2DT3() [1/3]

Elas2DT3 ( )

Default Constructor.

Constructs an empty equation.

◆ Elas2DT3() [2/3]

Elas2DT3 ( Mesh ms)

Constructor using Mesh data.

Parameters
[in]msMesh instance

◆ Elas2DT3() [3/3]

Elas2DT3 ( Mesh ms,
Vect< real_t > &  u 
)

Constructor using Mesh data and solution vector.

Parameters
[in]msMesh instance
[in,out]uReference to solution vector

Member Function Documentation

◆ BodyRHS()

void BodyRHS ( const Vect< real_t > &  f)

Add body right-hand side term to right hand side.

Parameters
[in]fVector containing source at nodes (DOF by DOF)

◆ BoundaryRHS()

void BoundaryRHS ( const Vect< real_t > &  f)

Add boundary right-hand side term to right hand side.

Parameters
[in]fVect instance that contains constant traction to impose to side.

◆ Contact()

int Contact ( real_t  coef = 1.e07)

Penalty Signorini contact side contribution to matrix and right-hand side.

Parameters
[in]coefPenalty value by which the added term is multiplied [Default: 1.e07]
Returns
= 0 if no contact is achieved on this side, 1 otherwise

◆ ContactPressure()

void ContactPressure ( const Vect< real_t > &  f,
real_t  penal,
Point< real_t > &  p 
)

Calculate contact pressure.

This function can be invoked in postprocessing

Parameters
[in]f
[in]penalPenalty parameter that was used to impose contact condition
[out]pContact pressure

◆ Deviator()

void Deviator ( real_t  coef = 1.)
virtual

Add element deviatoric matrix to element matrix after multiplication by coef

Parameters
[in]coefCoefficient to multiply by added term [Default: 1].

Reimplemented from Equa_Solid< 3, 6, 2, 4 >.

◆ Dilatation()

void Dilatation ( real_t  coef = 1.)
virtual

Add element dilatational contribution to element matrix after multiplication by coef

Parameters
[in]coefCoefficient to multiply by added term [Default: 1].

Reimplemented from Equa_Solid< 3, 6, 2, 4 >.

◆ LMass()

void LMass ( real_t  coef = 1.)
virtual

Add element lumped mass contribution to element matrix after multiplication by coef

Parameters
[in]coefCoefficient to multiply by added term [Default: 1].

Reimplemented from Equa_Solid< 3, 6, 2, 4 >.

◆ Mass()

void Mass ( real_t  coef = 1.)
virtual

Add element consistent mass contribution to element matrix after multiplication by coef

Parameters
[in]coefCoefficient to multiply by added term [Default: 1].

Reimplemented from Equa_Solid< 3, 6, 2, 4 >.

◆ Media()

void Media ( real_t  E,
real_t  nu,
real_t  rho 
)

Set media properties.

Useful to override material properties deduced from mesh file.

◆ Periodic()

void Periodic ( real_t  coef = 1.e20)

Add contribution of periodic boundary condition (by a penalty technique).

Boundary nodes where periodic boundary conditions are to be imposed must have codes equal to PERIODIC_A on one side and PERIODIC_B on the opposite side.

Parameters
[in]coefValue of penalty parameter [Default: 1.e20]

◆ Reaction()

void Reaction ( Vect< real_t > &  r)

Calculate reactions.

This function can be invoked in postprocessing

Parameters
[in]rReaction on the side

◆ Strain()

void Strain ( Vect< real_t > &  eps)

Calculate strains in element.

This function can be invoked in postprocessing.

Parameters
[out]epsvector of strains in elements

◆ Stress()

void Stress ( Vect< real_t > &  s,
Vect< real_t > &  vm 
)

Calculate principal stresses and Von-Mises stress in element.

Parameters
[out]svector of principal stresses in elements
[out]vmVon-Mises stresses in elements This function can be invoked in postprocessing.