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.AbstractMesh — Type
abstract type AbstractMeshFiniteElementContainers.FileMesh — Type
struct FileMesh{MeshObj, MeshType} <: FiniteElementContainers.AbstractMeshfile_name::Stringmesh_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.
FiniteElementContainers.file_name — Method
file_name(mesh::FiniteElementContainers.AbstractMesh) -> Any
Returns file name for an mesh type
Structured Meshes
Simple structured meshes on rectangles or parallepipeds can be create through StructuredMesh mesh type.
FiniteElementContainers.StructuredMesh — Type
struct StructuredMesh{ND, RT<:Number, IT<:Integer} <: FiniteElementContainers.AbstractMeshnodal_coords::H1Field{RT, Vector{RT}, ND} where {ND, RT<:Number}element_block_names::Dict{Int64, Symbol}element_types::Dict{Symbol, Symbol}element_conns::Dict{Symbol, Matrix{IT}} where IT<:Integerelement_id_map::Vector{IT} where IT<:Integerelement_id_maps::Dict{Symbol, Vector{IT}} where IT<:Integernode_id_map::Vector{IT} where IT<:Integernodeset_names::Dict{IT, Symbol} where IT<:Integernodeset_nodes::Dict{Symbol, Vector{IT}} where IT<:Integersideset_names::Dict{IT, Symbol} where IT<:Integersideset_elems::Dict{Symbol, Vector{IT}} where IT<:Integersideset_nodes::Dict{Symbol, Vector{IT}} where IT<:Integersideset_sides::Dict{Symbol, Vector{IT}} where IT<:Integersideset_side_nodes::Dict{Symbol, Matrix{IT}} where IT<:Integer
Unstructured Meshes
Unstructured meshes (e.g. those read from a file created by a mesher) can be created with the following mesh type
FiniteElementContainers.UnstructuredMesh — Type
struct UnstructuredMesh{MeshObj, ND, RT<:Number, IT<:Integer, EdgeConns, FaceConns} <: FiniteElementContainers.AbstractMeshmesh_obj::Anynodal_coords::H1Field{RT, Vector{RT}, ND} where {ND, RT<:Number}element_block_names::Dict{IT, Symbol} where IT<:Integerelement_types::Dict{Symbol, Symbol}element_conns::Dict{Symbol, Matrix{IT}} where IT<:Integerelement_id_map::Vector{IT} where IT<:Integerelement_id_maps::Dict{Symbol, Vector{IT}} where IT<:Integernode_id_map::Vector{IT} where IT<:Integernodeset_names::Dict{IT, Symbol} where IT<:Integernodeset_nodes::Dict{Symbol, Vector{IT}} where IT<:Integersideset_names::Dict{Int64, Symbol}sideset_elems::Dict{Symbol, Vector{IT}} where IT<:Integersideset_nodes::Dict{Symbol, Vector{IT}} where IT<:Integersideset_sides::Dict{Symbol, Vector{IT}} where IT<:Integersideset_side_nodes::Dict{Symbol, Matrix{IT}} where IT<:Integeredge_conns::Anyface_conns::Any
FiniteElementContainers.UnstructuredMesh — Method
UnstructuredMesh(
file_type::FiniteElementContainers.AbstractMeshFileType,
file_name::String;
kwargs...
) -> UnstructuredMesh{MeshObj, ND, RT, Int64, EdgeConns, Nothing} where {MeshObj, ND, RT<:Number, EdgeConns}
FiniteElementContainers.UnstructuredMesh — Method
UnstructuredMesh(
file_name::String;
kwargs...
) -> UnstructuredMesh{MeshObj, ND, RT, Int64, EdgeConns, Nothing} where {MeshObj, ND, RT<:Number, EdgeConns}
FiniteElementContainers.UnstructuredMesh — Method
UnstructuredMesh(
file::FileMesh{T};
create_edges,
create_faces,
interp_type,
p_order,
space_type
) -> UnstructuredMesh{MeshObj, ND, RT, Int64, EdgeConns, Nothing} where {MeshObj, ND, RT<:Number, EdgeConns}
TODO change the interface so we don't need createedges/createfaces. We should parse the interpolation/space type and determine this change in behavior from these inputs...
Exodus interface API
FiniteElementContainers.FileMesh — Method
struct FileMesh{MeshObj, MeshType} <: FiniteElementContainers.AbstractMeshfile_name::Stringmesh_obj::Any
FiniteElementContainers.nodal_coordinates — Method
nodal_coordinates(
mesh::FileMesh{<:Exodus.ExodusDatabase, FiniteElementContainers.ExodusMesh}
) -> H1Field
FiniteElementContainers.nodal_coordinates_and_ids — Method
nodal_coordinates_and_ids(
mesh::FileMesh{<:Exodus.ExodusDatabase, FiniteElementContainers.ExodusMesh}
) -> Tuple{H1Field, Any}
FiniteElementContainers.node_cmaps — Method
node_cmaps(
mesh::FileMesh{<:Exodus.ExodusDatabase, FiniteElementContainers.ExodusMesh},
rank
) -> Vector