LinearElasticity

This module implements a Galerkin discretization of linear elastic problems.

Hole in a three-dimensional plate

./examples/linearelasticity/hole_in_a_plate_3d.jl

Index

Taiga.FastDiagonalizationMethod
Taiga.FastDiagonalization(model::Model{Dim, T}; method::Type{<:DataApproximationMethod} = Wachspress, kwargs)

Computes a block diagonal fast diagonalization preconditioner for Model.

Arguments:

  • model: Model model definition
  • method: method for data approximation
  • kwargs: optional keyword arguments
source
Taiga.LinearElasticity.BenchmarkSolutionType
BenchmarkSolution

Struct holding displacement and stress mappings for benchmark problems.

Fields:

  • displacement::Function: displacement vector as a function of physical coordinates
  • stress::Function: stress tensor as a function of physical coordinates
source
Taiga.LinearElasticity.LinearOperatorType
LinearOperator{Dim, T} <: Taiga.LinearOperator{Dim,T}

Linear operator for linear elastic models.

Fields:

  • C::SparseMatrixCSC{T}: sparse extraction operator
  • K::SparseMatrixCSC{T}: sparse stiffness matrix without constraints
  • L::SparseMatrixCSC{T}: sparse stiffness matrix including constraints
  • b::Vector{T}: load vector
source
Taiga.LinearElasticity.MaterialType
abstract type Material{Dim,S} <: AbstractMapping{Dim,S,S} end

All linear elastic materials derive from this. Materials are mappings in Dim × S × S.

source
Taiga.LinearElasticity.ModelType
Model{Dim, T, M <: GeometricMapping{Dim}, V <: VectorSplineSpace{Dim, T}, W <: Field{Dim}, U <: Material{Dim}} <: Taiga.Model{Dim,T}

Linear elastic model.

Fields:

  • F::M: geometric mapping
  • S::V: test and trial space
  • Δ::Partition{Dim, T}: partition
  • uʰ::W: solution field
  • ūʰ::W: field compatible with boundary conditions
  • t::Function: traction
  • material::U: material
source
Taiga.LinearElasticity.OrthotropicType
Orthotropic <: Material{3,6}

Orthotropic material.

Fields:

  • E₁::Function: Young's modulus
  • E₂::Function: Young's modulus
  • E₃::Function: Young's modulus
  • ν₂₃::Function: Poisson's ratio
  • ν₃₂::Function: Poisson's ratio
  • ν₁₃::Function: Poisson's ratio
  • ν₃₁::Function: Poisson's ratio
  • ν₁₂::Function: Poisson's ratio
  • ν₂₁::Function: Poisson's ratio
  • G₂₃::Function: Shear modulus
  • G₁₃::Function: Shear modulus
  • G₁₂::Function: Shear modulus
source
Taiga.LinearElasticity.PullbackBilinearFormType
PullbackBilinearForm{Dim, T1 <: GeometricMapping{Dim}, T2 <: Material{Dim}}

Pullback of the bilinear form.

Fields:

  • mapping::T1: geometric mapping
  • material::T2: material
  • B::BMatrix{Dim}: B-matrices.
source
Taiga.LinearElasticity.PullbackBoundaryLinearFormType
PullbackBoundaryLinearForm{Dim, S}

Pullback of the linear form on the boundary. The parameter 1 ≤ S ≤ 2Dim denotes the coressponding boundary face.

Fields:

  • mapping::GeometricMapping{Dim}: geometric mapping
  • traction::Function: traction tensor as a function of physical coordinates
source
Taiga.LinearElasticity.StrainType
Strain{Dim, T1 <: GeometricMapping{Dim}, T2 <: Field{Dim, Dim}} <: AbstractMapping{Dim,Dim,Dim}

Mapping for evaluation of strain:

$\boldsymbol \varepsilon = \frac 1 2 (\nabla \mathbf u + \nabla \mathbf u^T)$.

Fields:

  • mapping::T1: geometric mapping
  • displacement::T2: displacement field
source
Taiga.LinearElasticity.VonMisesStressType
VonMisesStress{Dim, T <: CauchyStress{Dim}}

Mapping for evaluation of von Mises stress.

\[\begin{aligned} \mathbf{s} &= \boldsymbol{\sigma} - \frac{1}{2} \mathrm{tr}(\boldsymbol{\sigma}) \mathbf{I} \\ J_2 &= \mathbf{s} : \mathbf{s}) \\ \boldsymbol{\sigma}_{\mathrm{vM}} &= \sqrt{3 J_2} \end{aligned}\]

Fields:

source
Taiga.LinearElasticity.assemble_matrixMethod
assemble_matrix(acc::ElementAccessor{Dim}, partition::Partition{Dim}, pullback::PullbackBilinearForm{Dim}; show_progress::Bool = true)

Assemble stiffness matrix.

Arguments:

  • acc: element accessor
  • partition: partition
  • pullback: pullback of bilinear form
  • show_progress: boolean flag for formation progress bar
source
Taiga.LinearElasticity.assemble_vectorMethod
assemble_vector(acc::ElementAccessor{Dim}, partition::Partition{Dim}, pullbacks::NTuple{N, PullbackBoundaryLinearForm})

Assemble forcing vector.

Arguments:

  • acc: element accessor
  • partition: partition
  • pullbacks: tuple of pullbacks of the linear form on each of the boundaries
source
Taiga.LinearElasticity.material_matrixMethod
material_matrix(::Type{Orthotropic}, E₁, E₂, E₃, ν₂₃, ν₃₂, ν₁₃, ν₃₁, ν₁₂, ν₂₁, G₂₃, G₁₃, G₁₂)

Returns the elasticity tensor in Voigt notation.

source
Taiga.LinearElasticity.σ_voigtFunction
σ_voigt(A::SMatrix) -> SVector
σ_voigt(v::SVector) -> SMatrix

Convert between standard and Voigt notation for stress.

  • σ_voigt(A::SMatrix{2,2}): Converts a 2×2 stress tensor to a 3-component Voigt vector.
  • σ_voigt(A::SMatrix{3,3}): Converts a 3×3 stress tensor to a 6-component Voigt vector.
  • σ_voigt(v::SVector{3}): Converts a 3-component Voigt stress vector to a 2×2 stress tensor.
  • σ_voigt(v::SVector{6}): Converts a 6-component Voigt stress vector to a 3×3 stress tensor.

Shear components remain unchanged in Voigt notation.

source
Taiga.LinearElasticity.ϵ_voigtFunction
ϵ_voigt(A::SMatrix) -> SVector
ϵ_voigt(v::SVector) -> SMatrix

Convert between standard and Voigt notation for strain.

  • ϵ_voigt(A::SMatrix{2,2}): Converts a 2×2 strain tensor to a 3-component Voigt vector.
  • ϵ_voigt(A::SMatrix{3,3}): Converts a 3×3 strain tensor to a 6-component Voigt vector.
  • ϵ_voigt(v::SVector{3}): Converts a 3-component Voigt strain vector to a 2×2 strain tensor.
  • ϵ_voigt(v::SVector{6}): Converts a 6-component Voigt strain vector to a 3×3 strain tensor.

Shear components are multiplied by 2 when converting to Voigt notation.

source
Taiga.apply_particular_solutionMethod
Taiga.apply_particular_solution(L::LinearOperator, model::Model, x₀::V)

Return particular solution.

Arguments:

  • L: linear operator
  • model: model
  • x₀: homogeneous solution
source
Taiga.forcing!Method
Taiga.forcing!(b::AbstractVector, L::LinearOperator, model::Model)

Update forcing vector.

Arguments:

  • b: cache vector
  • L: linear operator
  • model: model
source
Taiga.forcingMethod
Taiga.forcing(L::LinearOperator, model::Model)

Return forcing vector.

source