Domains

A domain in Cthonios is a group of element sections and all the associated datastructures necessary to run a finite element calculation.

Index

Cthonios.DomainType
Domain(
    mesh_file::String,
    sections_in
) -> Cthonios.Domain{C, D, S, DBCs, Vector{Int64}, NBCs, NS} where {C<:(FiniteElementContainers.VectorizedNodalField{_A, 2, _B, _C, _D} where {_A, _B, _C, _D<:AbstractVector{_A}}), D<:(DofManager{Int64, _A, _B, Vector{Float64}, _C} where {_A, _B, _C<:(AbstractArray{Int64})}), S<:NamedTuple, DBCs<:NamedTuple, NBCs<:NamedTuple, NS<:NamedTuple}
Domain(
    mesh_file::String,
    sections_in,
    dbcs_in
) -> Cthonios.Domain{C, D, S, DBCs, Vector{Int64}, NBCs, NS} where {C<:(FiniteElementContainers.VectorizedNodalField{_A, 2, _B, _C, _D} where {_A, _B, _C, _D<:AbstractVector{_A}}), D<:(DofManager{Int64, _A, _B, Vector{Float64}, _C} where {_A, _B, _C<:(AbstractArray{Int64})}), S<:NamedTuple, DBCs<:NamedTuple, NBCs<:NamedTuple, NS<:NamedTuple}
Domain(
    mesh_file::String,
    sections_in,
    dbcs_in,
    nbcs_in
) -> Cthonios.Domain{C, D, S, DBCs, Vector{Int64}, NBCs, NS} where {C<:(FiniteElementContainers.VectorizedNodalField{_A, 2, _B, _C, _D} where {_A, _B, _C, _D<:AbstractVector{_A}}), D<:(DofManager{Int64, _A, _B, Vector{Float64}, _C} where {_A, _B, _C<:(AbstractArray{Int64})}), S<:NamedTuple, DBCs<:NamedTuple, NBCs<:NamedTuple, NS<:NamedTuple}
Domain(
    mesh_file::String,
    sections_in,
    dbcs_in,
    nbcs_in,
    contact_pairs_in
) -> Cthonios.Domain{C, D, S, DBCs, Vector{Int64}, NBCs, NS} where {C<:(FiniteElementContainers.VectorizedNodalField{_A, 2, _B, _C, _D} where {_A, _B, _C, _D<:AbstractVector{_A}}), D<:(DofManager{Int64, _A, _B, Vector{Float64}, _C} where {_A, _B, _C<:(AbstractArray{Int64})}), S<:NamedTuple, DBCs<:NamedTuple, NBCs<:NamedTuple, NS<:NamedTuple}

Constructor for a Domain type. mesh_file - File name of a mesh to read. sections_in - A set of Sections. dbcs_in - A set of DirichletBCs. nbcs_in - A set of NeumannBCs

source
Cthonios.DomainType
struct Domain{C, D, S, DBCs, DDofs, NBCs, NS} <: Cthonios.AbstractDomain
  • coords::Any

  • dof::Any

  • sections::Any

  • dirichlet_bcs::Any

  • dirichlet_dofs::Any

  • neumann_bcs::Any

  • neumann_bc_sections::Any

Domain type to hold information like bcs, sections, etc. Note that the DofManager unknown dofs are not automatically set. After setting up a Domain you will need to run, update_unknown_dofs!.

mesh - Handle to an open FileMesh. dof - DofManager object. sections - A set of SectionInternals. dirichlet_bcs - A set of DirichletBCInternals. dirichlet_dofs - A set of dofs to apply dirichlet dofs. This is mainly for book-keeping purposes

source
Cthonios.DynamicAssemblerMethod
DynamicAssembler(
    domain::Cthonios.Domain
) -> FiniteElementContainers.DynamicAssembler{Float64, Int64, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, Vector{Int64}, Vector{Int64}, Vector{Float64}} where {_A<:AbstractVector{Int64}, _B<:AbstractVector{Int64}, _C<:AbstractVector{Int64}, _D<:AbstractVector{Int64}, _E<:AbstractVector{Int64}, _F<:NodalField, _G<:AbstractVector{Float64}, _H<:AbstractVector{Float64}, _I, _J, _K, _L}

some FEMContainers abuse

source
Cthonios.StaticAssemblerMethod
StaticAssembler(
    domain::Cthonios.Domain
) -> FiniteElementContainers.StaticAssembler{Float64, Int64, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, Vector{Int64}, Vector{Int64}, Vector{Float64}} where {_A<:AbstractVector{Int64}, _B<:AbstractVector{Int64}, _C<:AbstractVector{Int64}, _D<:AbstractVector{Int64}, _E<:AbstractVector{Int64}, _F<:NodalField, _G<:AbstractVector{Float64}, _H, _I, _J, _K}

some FEMContainers abuse

source
Cthonios.update_dirichlet_vals!Method
update_dirichlet_vals!(Ubc, domain::Cthonios.Domain, X, t)

Updates the values in Ubc with dirichlet boundary conditions in domain. Ubc - BC values to fill. domain - Domain. X - Nodal coordinates. t - A scalar time value to use in the BC functions.

source
Cthonios.update_field_bcs!Method
update_field_bcs!(U, domain::Cthonios.Domain, Ubc)

Updates the Dirichlet BC dofs in U with the values in Ubc. U - Nodal field to update. domain - Domain. Ubc - BC values to fill.

source
Cthonios.update_field_unknowns!Method
update_field_unknowns!(U, domain::Cthonios.Domain, Uu)

Updates the unknown dofs in U with the values in Uu. U - Nodal field to update. domain - Domain. Uu - Unknown values to fill.

source
Cthonios.update_unknown_dofs!Method
update_unknown_dofs!(domain::Cthonios.Domain, asm)

Update the unknown dofs in domain.dof, domain.dirichlet_dofs, and asm. TODO maybe move domain.dirichlet_dofsto the$DofManager$in$FiniteElementContainers$.$domain$- Domain object.$asm$` - Assembly object.

source
Cthonios.update_unknown_dofs!Method
update_unknown_dofs!(domain::Cthonios.Domain)

Update the unknown dofs in domain.dof and domain.dirichlet_dofs. TODO maybe move domain.dirichlet_dofsto the$DofManager$in$FiniteElementContainers$`.

source