10 #include "Domain/InterfaceHelpers.hpp"
13 #include "Elliptic/BoundaryConditions/BoundaryCondition.hpp"
15 #include "Utilities/FakeVirtual.hpp"
34 template <
bool Linearized,
size_t Dim,
typename Registrars,
typename DbTagsList,
35 typename... FieldsAndFluxes>
39 const db::DataBox<DbTagsList>& box,
const Direction<Dim>& direction,
43 Dim, Registrars>::creatable_classes>(
44 &boundary_condition, [&direction, &box, &fields_and_fluxes...](
45 const auto*
const derived) noexcept {
48 tmpl::conditional_t<Linearized,
49 typename Derived::argument_tags_linearized,
50 typename Derived::argument_tags>;
52 tmpl::conditional_t<Linearized,
53 typename Derived::volume_tags_linearized,
54 typename Derived::volume_tags>;
55 elliptic::util::apply_at<
60 tmpl::pin<domain::Tags::BoundaryDirectionsInterior<Dim>>,
61 tmpl::pin<volume_tags>>>,
63 [&derived, &fields_and_fluxes...](
const auto&... args) noexcept {
64 if constexpr (Linearized) {
65 derived->apply_linearized(fields_and_fluxes..., args...);
67 derived->apply(fields_and_fluxes..., args...);