Meshes

Meshes in FiniteElementContainers leverage a very abstract interface. Currently, only an Exodus interface is directly supported within the main package but others could be readily supported through package extensions which we are planning on.

FiniteElementContainers.FileMeshType
struct FileMesh{MeshObj} <: FiniteElementContainers.AbstractMesh
  • file_name::String

  • mesh_obj::Any

Mesh type that has a handle to an open mesh file object. This type's methods are "overridden" in extensions.

See FiniteElementContainersExodusExt for an example.

source

Structured Meshes

Simple structured meshes on rectangles or parallepipeds can be create through StructuredMesh mesh type.

FiniteElementContainers.StructuredMeshType
struct StructuredMesh{ND, RT<:Number, IT<:Integer, EConns} <: FiniteElementContainers.AbstractMesh
  • nodal_coords::H1Field{RT, Vector{RT}, ND} where {ND, RT<:Number}

  • element_block_names::Vector{Symbol}

  • element_types::Vector{Symbol}

  • element_conns::Any

  • element_id_maps::Dict{Symbol, Vector{IT}} where IT<:Integer

  • node_id_map::Vector{IT} where IT<:Integer

  • nodeset_nodes::Dict{Symbol, Vector{IT}} where IT<:Integer

  • sideset_elems::Dict{Symbol, Vector{IT}} where IT<:Integer

  • sideset_nodes::Dict{Symbol, Vector{IT}} where IT<:Integer

  • sideset_sides::Dict{Symbol, Vector{IT}} where IT<:Integer

  • sideset_side_nodes::Dict{Symbol, Matrix{IT}} where IT<:Integer

source

Unstructured Meshes

Unstructured meshes (e.g. those read from a file created by a mesher) can be created with the following mesh type

FiniteElementContainers.UnstructuredMeshType
struct UnstructuredMesh{MeshObj, ND, RT<:Number, IT<:Integer, EConns, EdgeConns, FaceConns} <: FiniteElementContainers.AbstractMesh
  • mesh_obj::Any

  • nodal_coords::H1Field{RT, Vector{RT}, ND} where {ND, RT<:Number}

  • element_block_names::Vector{Symbol}

  • element_types::Vector{Symbol}

  • element_conns::Any

  • element_id_maps::Dict{Symbol, Vector{IT}} where IT<:Integer

  • node_id_map::Vector{IT} where IT<:Integer

  • nodeset_nodes::Dict{Symbol, Vector{IT}} where IT<:Integer

  • sideset_elems::Dict{Symbol, Vector{IT}} where IT<:Integer

  • sideset_nodes::Dict{Symbol, Vector{IT}} where IT<:Integer

  • sideset_sides::Dict{Symbol, Vector{IT}} where IT<:Integer

  • sideset_side_nodes::Dict{Symbol, Matrix{IT}} where IT<:Integer

  • edge_conns::Any

  • face_conns::Any

source
FiniteElementContainers.UnstructuredMeshMethod
UnstructuredMesh(
    file_type::FiniteElementContainers.AbstractMeshType,
    file_name::String,
    create_edges::Bool,
    create_faces::Bool
) -> UnstructuredMesh{MeshObj, ND, RT, IT, EConns, EdgeConns, Nothing} where {MeshObj, ND, RT<:Number, IT<:Integer, EConns, EdgeConns}
source
FiniteElementContainers.UnstructuredMeshMethod
UnstructuredMesh(
    file_name::String;
    create_edges,
    create_faces
) -> UnstructuredMesh{MeshObj, ND, RT, IT, EConns, EdgeConns, Nothing} where {MeshObj, ND, RT<:Number, IT<:Integer, EConns, EdgeConns}
source
FiniteElementContainers.UnstructuredMeshMethod
UnstructuredMesh(
    file::FileMesh{T},
    create_edges::Bool,
    create_faces::Bool
) -> UnstructuredMesh{MeshObj, ND, RT, IT, EConns, EdgeConns, Nothing} where {MeshObj, ND, RT<:Number, IT<:Integer, EConns, EdgeConns}
source

Exodus interface API