API reference

HyperFEM.TensorAlgebra.:⊗₁²Method
⊗₁²(A::VectorValue{D}, B::VectorValue{D})::TensorValue{D,D}

Outer product of two first-order tensors (vectors), returning a second-order tensor (matrix).

source
HyperFEM.TensorAlgebra.:⊗₁²³Method
⊗₁²³(A::VectorValue{D}, B::TensorValue{D})::TensorValue{D,D*D}

Outer product of a first-order and second-order tensors (vector and matrix), returning a third-order tensor represented in a D x D² flattened matrix using combined indices.

source
HyperFEM.TensorAlgebra.:⊗₁₂³Method
⊗₁²³(A::TensorValue{D}, B::VectorValue{D})::TensorValue{D,D*D}

Outer product of a second-order and first-order tensors (matrix and vector), returning a third-order tensor represented in a D x D² flattened matrix using combined indices.

source
HyperFEM.TensorAlgebra.:⊗₁₂³⁴Method
⊗₁₃²⁴(A::TensorValue{D}, B::TensorValue{D})::TensorValue{D*D}

Outer product of two second-order tensors (matrices), returning a fourth-order tensor represented in a D² x D² flattened matrix using combined indices.

source
HyperFEM.TensorAlgebra.:⊗₁₃²Method
⊗₁²³(A::TensorValue{D}, B::TensorValue{D})::TensorValue{D,D*D}

Outer product of a second-order and first-order tensors (matrix and vector), returning a third-order tensor represented in a D x D² flattened matrix using combined indices.

source
HyperFEM.TensorAlgebra.:⊗₁₃²⁴Method
⊗₁₃²⁴(A::TensorValue{D}, B::TensorValue{D})::TensorValue{D*D}

Outer product of two second-order tensors (matrices), returning a fourth-order tensor represented in a D² x D² flattened matrix using combined indices.

source
HyperFEM.TensorAlgebra.:⊗₁₄²³Method
⊗₁₄²³(A::TensorValue{D}, B::TensorValue{D})::TensorValue{D*D}

Outer product of two second-order tensors (matrices), returning a fourth-order tensor represented in a D² x D² flattened matrix using combined indices.

source
HyperFEM.TensorAlgebra.contraction_IP_JPKLMethod
contraction_IP_JPKL(A::TensorValue{D}, H::TensorValue{D*D})::TensorValue{D*D}

Performs a tensor contraction between a second-order tensor (of size D × D) and a fourth-order tensor (represented as a D² × D² matrix in flattened index notation). The operation follows the index contraction pattern, where addition is performed for repeated indices.

source
HyperFEM.TensorAlgebra.contraction_IP_PJKLMethod
contraction_IP_PJKL(A::TensorValue{D}, H::TensorValue{D*D})::TensorValue{D*D}

Performs a tensor contraction between a second-order tensor (of size D × D) and a fourth-order tensor (represented as a D² × D² matrix in flattened index notation). The operation follows the index contraction pattern, where addition is performed for repeated indices.

source
HyperFEM.PhysicalModels.EightChainType

Simplified eight-chain model by Arruda and Boyce. the implementation uses the first five terms of the inverse Langevin function.

\[\Psi = C_1 \sum_{i=1}^{3} \alpha_i \beta^{i-1} (I_1^i - 3^i)\]

source
HyperFEM.PhysicalModels.PiolaMethod

First Piola-Kirchhoff for the incompressible case

Arguments

  • obj::ViscousIncompressible: The visous model
  • Se_: Elastic 2nd Piola (function of C)
  • ∂Se∂Ce_: 2nd Piola Derivatives (function of C)
  • F: Current deformation gradient
  • Fn: Previous deformation gradient
  • A: State variables (Uvα and λα)

Return

  • Pα::Gridap.TensorValues.TensorValue
source
HyperFEM.PhysicalModels.ReturnMappingMethod
Return mapping for the incompressible case

# Arguments
- `::ViscousIncompressible`
- `Se_::Function`: Elastic Piola (function of C)
- `∂Se∂Ce_::Function`: Piola Derivatives (function of C)
- `∇u_::TensorValue`
- `∇un_::TensorValue`
- `A::VectorValue`: State variables (10-component vector gathering Uvα and λα)

# Return
- `::bool`: indicates whether the state variables should be updated
- `::VectorValue`: State variables at new time step
source
HyperFEM.PhysicalModels.TangentMethod

Visco-Elastic model for incompressible case

Arguments

  • obj::ViscousIncompressible: The visous model
  • Se_: Elastic 2nd Piola (function of C)
  • ∂Se∂Ce_: 2nd Piola Derivatives (function of C)
  • ∇u_: Current deformation gradient
  • ∇un_: Previous deformation gradient
  • A: State variables (Uvα and λα)

Return

  • Cα::Gridap.TensorValues.TensorValue
source
HyperFEM.PhysicalModels.ViscousPiolaMethod

ViscousPiola(Se::Function, Ce::SMatrix, invUv::SMatrix, F::SMatrix)::SMatrix

Viscous 1st Piola-Kirchhoff stress

Arguments

  • Se Elastic Piola (function of C)
  • Ce Elastic right Green-Cauchy deformation tensor
  • invUv Inverse of viscous strain
  • F Deformation gradient

Return

  • Pα::SMatrix
source
HyperFEM.PhysicalModels.ViscousTangentOperatorMethod

ViscousTangentOperator::TensorValue

Tangent operator for the incompressible case

Arguments

  • obj::ViscousIncompressible
  • Se_::Function: Function of C
  • ∂Se∂Ce_::Function: Function of C
  • F::TensorValue: Deformation tensor
  • Ce_trial: Right Green-Cauchy deformation tensor at intermediate step
  • Ce: Right Green-Cauchy deformation tensor at curent step
  • invUv
  • invUvn
  • λα

Return

  • Cv::TensorValue{9,9}: A fourth-order tensor in flattened notation
source
HyperFEM.PhysicalModels.return_mapping_algorithm!Method

returnmappingalgorithm!

Compute the elastic Cauchy deformation tensor and the incompressibility condition.

Arguments

  • obj::ViscousIncompressible: The viscous model
  • Se_::Function: Elastic 2nd Piola-Kirchhoff stress (function of C)
  • ∂Se_∂Ce_::Function: Derivatives of elastic 2nd Piola-Kirchhoff stress (function of C)
  • F: Deformation gradient
  • Ce_trial: Elastic right Green-Cauchy at intermediate statep
  • Ce: Elastic right Green-Cauchy deformation tensor
  • λα: incompressibility constraint (Lagrange multiplier)

Return

  • Ce
  • λα
source
HyperFEM.PhysicalModels.∂Ce_∂CMethod

∂Ce∂C(::ViscousIncompressible, γα, ∂Se∂Ce, invUvn, Ce, Cetrial, λα, F)

Tangent operator of Ce for the incompressible case

Arguments

  • ::ViscousIncompressible The viscous model
  • γα: Characteristic time τα / (τα + Δt)
  • ∂Se∂Ce_: Function of C
  • ...

Return

  • ∂Ce∂C
source
Gridap.Algebra.jacobianFunction
jacobian(...)::Gridap.CellData.Integrand

Calculate the jacobian using the given constitutive model and finite element functions.

source
Gridap.Algebra.residualFunction
residual(...)::Gridap.CellData.Integrand

Calculate the residual using the given constitutive model and finite element functions.

source
HyperFEM.DiscreteModeling.add_tag_from_vertex_filter!Method

Create a new tag from a geometry and a coordinate-based filter function. The filter function takes in vertex coordinates and returns a boolean values. A geometrical entity is tagged if all its vertices pass the filter.

See also

  • Gridap.Geometry.face_labeling_from_vertex_filter
  • Gridap.Geometry.merge!
source
HyperFEM.DiscreteModeling.aspect_ratioMethod

Return the aspect ratio of the underlying cartesian elements as a string. This function is only available for an underlying CartesianGrid.

Example

aspect_ratio(Ω)             # "51:51:5"
aspect_ratio(Ω, tol=0.05)   # "10:10:1"
aspect_ratio(uh⁺, tol=0.1)  # "10:10:1"
source
HyperFEM.DiscreteModeling.element_sizeMethod

Return the element size for a cartesian mesh. This function is only available for an underlying CartesianGrid.

Example

element_size(model)   # Compute the diagonal
element_size(uh, :x)  # Get the x-size of the underlying grid
source