Boundary condition#
-
namespace samurai
-
Functions
-
template<std::size_t dim, class TInterval, class F, class ...CT>
auto make_region(subset_operator<F, CT...> region)#
-
template<std::size_t dim, class TInterval>
auto make_region(Everywhere<dim, TInterval>)#
-
template<std::size_t dim, class TInterval, std::size_t nd>
auto make_region(const std::array<xt::xtensor_fixed<int, xt::xshape<dim>>, nd> &d)#
-
template<std::size_t dim, class TInterval>
auto make_region(const xt::xtensor_fixed<int, xt::xshape<dim>> &d)#
-
template<template<class> class bc_type, class Field>
auto make_bc(Field &field, typename FunctionBc<Field>::function_t func)# Boundary condition as a function.
-
template<template<class> class bc_type, class Field>
auto make_bc(Field &field)# Boundary condition as a default constant.
-
template<template<class> class bc_type, class Field, class ...T>
auto make_bc(Field &field, typename Field::value_type v1, T... v)# Boundary condition as a constant.
-
template<class Field, class Subset, std::size_t stencil_size, class Vector>
void __apply_bc_on_subset(Bc<Field> &bc, Field &field, Subset &subset, const Stencil<stencil_size, Field::dim> &stencil, const Vector &direction)#
-
template<class Field, std::size_t stencil_size>
void apply_bc_impl(Bc<Field> &bc, std::size_t level, Field &field)#
-
template<std::size_t stencil_size, class Field, class Subset>
void __apply_extrapolation_bc_on_subset(Bc<Field> &bc, std::size_t level, Field &field, const DirectionVector<Field::dim> &direction, Subset &subset)#
-
template<class Field, std::size_t stencil_size>
void apply_extrapolation_bc_impl(Bc<Field> &bc, std::size_t level, Field &field, bool diagonals_only)#
-
template<class Field>
class Bc# Subclassed by samurai::DirichletImpl< order, Field >, samurai::NeumannImpl< order, Field >, samurai::PolynomialExtrapolation< Field, stencil_size_ >
Public Types
-
using bcregion_t = BcRegion<dim, interval_t>#
-
using lca_t = typename bcregion_t::lca_t#
-
using region_t = typename bcregion_t::region_t#
Public Functions
-
virtual ~Bc() = default#
-
Bc(const lca_t &domain, const bcvalue_t &bcv, const bcregion_t &bcr)#
-
virtual std::size_t stencil_size() const = 0#
-
inline virtual apply_function_1 get_apply_function(std::integral_constant<std::size_t, 1>, const direction_t&) const#
-
inline virtual apply_function_2 get_apply_function(std::integral_constant<std::size_t, 2>, const direction_t&) const#
-
inline virtual apply_function_3 get_apply_function(std::integral_constant<std::size_t, 3>, const direction_t&) const#
-
inline virtual apply_function_4 get_apply_function(std::integral_constant<std::size_t, 4>, const direction_t&) const#
-
inline virtual apply_function_5 get_apply_function(std::integral_constant<std::size_t, 5>, const direction_t&) const#
-
inline virtual apply_function_6 get_apply_function(std::integral_constant<std::size_t, 6>, const direction_t&) const#
-
inline virtual apply_function_7 get_apply_function(std::integral_constant<std::size_t, 7>, const direction_t&) const#
-
inline virtual apply_function_8 get_apply_function(std::integral_constant<std::size_t, 8>, const direction_t&) const#
-
inline virtual apply_function_9 get_apply_function(std::integral_constant<std::size_t, 9>, const direction_t&) const#
-
inline virtual apply_function_10 get_apply_function(std::integral_constant<std::size_t, 10>, const direction_t&) const#
-
inline value_t value(const direction_t &d, const cell_t &cell_in, const coords_t &coords) const#
Public Static Attributes
-
static constexpr std::size_t max_stencil_size_implemented = 10#
-
using bcregion_t = BcRegion<dim, interval_t>#
-
template<std::size_t dim, class TInterval>
struct BcRegion# Subclassed by samurai::CoordsRegion< dim, TInterval >, samurai::Everywhere< dim, TInterval >, samurai::OnDirection< dim, TInterval, nd >, samurai::SetRegion< dim, TInterval, Set >
Public Types
-
using region_t = std::pair<std::vector<direction_t>, std::vector<lca_t>>#
Public Functions
-
virtual ~BcRegion() = default#
Protected Functions
-
BcRegion() = default#
-
using region_t = std::pair<std::vector<direction_t>, std::vector<lca_t>>#
-
template<class Field>
struct BcValue# Subclassed by samurai::ConstantBc< Field >, samurai::FunctionBc< Field >
Public Types
-
using value_t = detail::return_type_t<typename Field::value_type, Field::size>#
Public Functions
-
virtual ~BcValue() = default#
-
virtual value_t get_value(const direction_t &d, const cell_t&, const coords_t&) const = 0#
Protected Functions
-
BcValue() = default#
-
using value_t = detail::return_type_t<typename Field::value_type, Field::size>#
-
template<std::size_t dim, class TInterval>
class CoordsRegion : public samurai::BcRegion<dim, TInterval># Public Types
Public Functions
-
CoordsRegion(const function_t &f)#
Private Members
-
function_t m_func#
-
CoordsRegion(const function_t &f)#
-
template<std::size_t order = 1>
struct Dirichlet# Public Types
-
template<class Field>
using impl_t = DirichletImpl<order, Field>#
-
template<class Field>
-
template<std::size_t order, class Field>
struct DirichletImpl : public samurai::Bc<Field># Public Types
Public Functions
-
inline virtual std::size_t stencil_size() const override#
-
inline stencil_t get_stencil(constant_stencil_size_t) const override#
-
inline apply_function_t get_apply_function(constant_stencil_size_t, const direction_t&) const override#
-
inline virtual apply_function_1 get_apply_function(std::integral_constant<std::size_t, 1>, const direction_t&) const#
-
inline virtual apply_function_2 get_apply_function(std::integral_constant<std::size_t, 2>, const direction_t&) const#
-
inline virtual apply_function_3 get_apply_function(std::integral_constant<std::size_t, 3>, const direction_t&) const#
-
inline virtual apply_function_4 get_apply_function(std::integral_constant<std::size_t, 4>, const direction_t&) const#
-
inline virtual apply_function_5 get_apply_function(std::integral_constant<std::size_t, 5>, const direction_t&) const#
-
inline virtual apply_function_6 get_apply_function(std::integral_constant<std::size_t, 6>, const direction_t&) const#
-
inline virtual apply_function_7 get_apply_function(std::integral_constant<std::size_t, 7>, const direction_t&) const#
-
inline virtual apply_function_8 get_apply_function(std::integral_constant<std::size_t, 8>, const direction_t&) const#
-
inline virtual apply_function_9 get_apply_function(std::integral_constant<std::size_t, 9>, const direction_t&) const#
-
inline virtual apply_function_10 get_apply_function(std::integral_constant<std::size_t, 10>, const direction_t&) const#
Public Static Attributes
-
static constexpr std::size_t dim#
-
inline virtual std::size_t stencil_size() const override#
-
template<std::size_t dim, class TInterval>
struct Everywhere : public samurai::BcRegion<dim, TInterval># Public Types
-
template<class Field>
class FunctionBc : public samurai::BcValue<Field># Public Types
-
using function_t = std::function<value_t(const direction_t&, const cell_t&, const coords_t&)>#
Public Functions
-
FunctionBc(const function_t &f)#
-
inline virtual value_t get_value(const direction_t &d, const cell_t &cell_in, const coords_t &coords) const override#
Private Members
-
function_t m_func#
-
using function_t = std::function<value_t(const direction_t&, const cell_t&, const coords_t&)>#
-
template<std::size_t order = 1>
struct Neumann# Public Types
-
template<class Field>
using impl_t = NeumannImpl<order, Field>#
-
template<class Field>
-
template<std::size_t order, class Field>
struct NeumannImpl : public samurai::Bc<Field># Public Types
Public Functions
-
inline virtual std::size_t stencil_size() const override#
-
inline stencil_t get_stencil(constant_stencil_size_t) const override#
-
inline apply_function_t get_apply_function(constant_stencil_size_t, const direction_t&) const override#
-
inline virtual apply_function_1 get_apply_function(std::integral_constant<std::size_t, 1>, const direction_t&) const#
-
inline virtual apply_function_2 get_apply_function(std::integral_constant<std::size_t, 2>, const direction_t&) const#
-
inline virtual apply_function_3 get_apply_function(std::integral_constant<std::size_t, 3>, const direction_t&) const#
-
inline virtual apply_function_4 get_apply_function(std::integral_constant<std::size_t, 4>, const direction_t&) const#
-
inline virtual apply_function_5 get_apply_function(std::integral_constant<std::size_t, 5>, const direction_t&) const#
-
inline virtual apply_function_6 get_apply_function(std::integral_constant<std::size_t, 6>, const direction_t&) const#
-
inline virtual apply_function_7 get_apply_function(std::integral_constant<std::size_t, 7>, const direction_t&) const#
-
inline virtual apply_function_8 get_apply_function(std::integral_constant<std::size_t, 8>, const direction_t&) const#
-
inline virtual apply_function_9 get_apply_function(std::integral_constant<std::size_t, 9>, const direction_t&) const#
-
inline virtual apply_function_10 get_apply_function(std::integral_constant<std::size_t, 10>, const direction_t&) const#
Public Static Attributes
-
static constexpr std::size_t dim#
-
inline virtual std::size_t stencil_size() const override#
-
template<std::size_t dim, class TInterval, std::size_t nd>
class OnDirection : public samurai::BcRegion<dim, TInterval># Public Types
Public Functions
-
OnDirection(const std::array<direction_t, nd> &d)#
Private Members
-
std::array<direction_t, nd> m_d#
-
OnDirection(const std::array<direction_t, nd> &d)#
-
template<class Field, std::size_t stencil_size_>
struct PolynomialExtrapolation : public samurai::Bc<Field># Public Types
-
using stencil_t = samurai::Stencil<stencil_size_, dim>#
-
using constant_stencil_size_t = std::integral_constant<std::size_t, stencil_size_>#
-
using stencil_cells_t = std::array<cell_t, stencil_size_>#
-
using apply_function_t = std::function<void(Field&, const std::array<cell_t, stencil_size_>&, const value_t&)>#
Public Functions
-
inline virtual std::size_t stencil_size() const override#
-
inline apply_function_t get_apply_function(constant_stencil_size_t, const direction_t&) const override#
-
inline virtual apply_function_1 get_apply_function(std::integral_constant<std::size_t, 1>, const direction_t&) const#
-
inline virtual apply_function_2 get_apply_function(std::integral_constant<std::size_t, 2>, const direction_t&) const#
-
inline virtual apply_function_3 get_apply_function(std::integral_constant<std::size_t, 3>, const direction_t&) const#
-
inline virtual apply_function_4 get_apply_function(std::integral_constant<std::size_t, 4>, const direction_t&) const#
-
inline virtual apply_function_5 get_apply_function(std::integral_constant<std::size_t, 5>, const direction_t&) const#
-
inline virtual apply_function_6 get_apply_function(std::integral_constant<std::size_t, 6>, const direction_t&) const#
-
inline virtual apply_function_7 get_apply_function(std::integral_constant<std::size_t, 7>, const direction_t&) const#
-
inline virtual apply_function_8 get_apply_function(std::integral_constant<std::size_t, 8>, const direction_t&) const#
-
inline virtual apply_function_9 get_apply_function(std::integral_constant<std::size_t, 9>, const direction_t&) const#
-
inline virtual apply_function_10 get_apply_function(std::integral_constant<std::size_t, 10>, const direction_t&) const#
-
using stencil_t = samurai::Stencil<stencil_size_, dim>#
-
template<std::size_t dim, class TInterval, class Set>
class SetRegion : public samurai::BcRegion<dim, TInterval># Public Types
Public Functions
-
namespace detail
Typedefs
-
template<class T, std::size_t size>
using return_type_t = typename return_type<T, size>::type#
Functions
-
template<class T, std::size_t size>
void fill(xt::xtensor_fixed<T, xt::xshape<size>> &data, T value)#
-
template<class T, std::size_t size>
-
template<std::size_t dim, class TInterval, class F, class ...CT>