Mercurial > repos > public > sbplib_julia
view src/BoundaryConditions/boundary_condition.jl @ 1163:c9fdfb1efba8 feature/boundary_conditions
Merge with default
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 12 Oct 2022 10:45:47 +0200 |
parents | 667e9c588f23 |
children | d26aef8a5987 |
line wrap: on
line source
""" BoundaryDataType A type for storing boundary data, e.g. constant, space-dependent, time-dependent etc. Subtypes of `BoundaryDataType` should store the boundary data in a field `val`, i.e. `struct MyBoundaryDataType{T} <: BoundaryDataType val::T end`. """ abstract type BoundaryDataType end struct ConstantBoundaryData{T} <: BoundaryDataType val::T end struct SpaceDependentBoundaryData{T} <: BoundaryDataType val::T end struct TimeDependentBoundaryData{T} <: BoundaryDataType val::T end struct SpaceTimeDependentBoundaryData{T} <: BoundaryDataType val::T end """ BoundaryCondition A type for implementing data needed in order to impose a boundary condition. Subtypes refer to perticular types of boundary conditions, e.g. Neumann conditions. """ # TODO: Parametrize the boundary id as well? abstract type BoundaryCondition{T<:BoundaryDataType} end data(bc::BoundaryCondition) = bc.data.val struct NeumannCondition{BDT<:BoundaryDataType} <: BoundaryCondition{BDT} id::BoundaryIdentifier data::BDT end struct DirichletCondition{BDT<:BoundaryDataType} <: BoundaryCondition{BDT} id::BoundaryIdentifier data::BDT end struct RobinCondition{BDT<:BoundaryDataType,T<:Real} <: BoundaryCondition{BDT} id::BoundaryIdentifier data::BDT α::T β::T end