Mercurial > repos > public > sbplib_julia
view src/BoundaryConditions/boundary_condition.jl @ 1396:35840a0681d1 feature/boundary_conditions
Start drafting new implemenentation of boundary conditions
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 26 Jul 2023 23:11:02 +0200 |
parents | bdcdbd4ea9cd |
children | 481960ca366f |
line wrap: on
line source
""" 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. """ abstract type BoundaryCondition end """ id(::BoundaryCondition) The boundary identifier of the BoundaryCondition. Must be implemented by subtypes. """ function id end """ data(::BoundaryCondition) If implemented, the data associated with the BoundaryCondition """ function data end """ discretize(::BoundaryData, boundary_grid) Returns an anonymous time-dependent function f, such that f(t) is a `LazyArray` holding the `BoundaryData` discretized on `boundary_grid`. """ function discretize_data(grid, bc::BoundaryCondition) return eval_on(boundary_grid(grid, id(bc)), data(bc)) end struct NeumannCondition{DT} <: BoundaryCondition{DT} data::DT id::BoundaryIdentifier end id(bc::NeumannCondition) = bc.id data(bc::NeumannCondition) = bc.data struct DirichletCondition{DT} <: BoundaryCondition{DT} data::DT id::BoundaryIdentifier end id(bc::NeumannCondition) = bc.id data(bc::DirichletCondition) = bc.data