Public Types | Public Member Functions | Static Public Attributes | Friends | List of all members
elliptic::BoundaryConditions::AnalyticSolution< System, Dim, tmpl::list< FieldTags... >, tmpl::list< FluxTags... >, Registrars > Class Template Reference

Impose the analytic solution on the boundary. Works only if an analytic solution exists. More...

#include <AnalyticSolution.hpp>

Public Types

using options = tmpl::list< elliptic::OptionTags::BoundaryConditionType< FieldTags >... >
 
using argument_tags = tmpl::list<::Tags::AnalyticSolutionsBase, domain::Tags::Mesh< Dim >, domain::Tags::Direction< Dim >, ::Tags::Normalized< domain::Tags::UnnormalizedFaceNormal< Dim, Frame::Inertial > >>
 
using volume_tags = tmpl::list<::Tags::AnalyticSolutionsBase, domain::Tags::Mesh< Dim > >
 
using argument_tags_linearized = tmpl::list<>
 
using volume_tags_linearized = tmpl::list<>
 
- Public Types inherited from elliptic::BoundaryConditions::BoundaryCondition< Dim, Registrars >
using registrars = Registrars
 
using creatable_classes = Registration::registrants< registrars >
 

Public Member Functions

 AnalyticSolution (const AnalyticSolution &) noexcept=default
 
AnalyticSolution & operator= (const AnalyticSolution &) noexcept=default
 
 AnalyticSolution (AnalyticSolution &&) noexcept=default
 
AnalyticSolution & operator= (AnalyticSolution &&) noexcept=default
 
 AnalyticSolution (const typename elliptic::OptionTags::BoundaryConditionType< FieldTags >::type... boundary_condition_types) noexcept
 Select which elliptic::BoundaryConditionType to apply for each field.
 
std::unique_ptr< domain::BoundaryConditions::BoundaryConditionget_clone () const noexcept override
 
const auto & boundary_condition_types () const noexcept
 
template<typename OptionalAnalyticSolutions >
void apply (const gsl::not_null< typename FieldTags::type * >... fields, const gsl::not_null< typename FieldTags::type * >... n_dot_fluxes, const OptionalAnalyticSolutions &optional_analytic_solutions, const Mesh< Dim > &volume_mesh, const Direction< Dim > &direction, const tnsr::i< DataVector, Dim > &face_normal) const noexcept
 
void apply_linearized (const gsl::not_null< typename FieldTags::type * >... fields, const gsl::not_null< typename FieldTags::type * >... n_dot_fluxes) const noexcept
 
void pup (PUP::er &p) noexcept override
 
- Public Member Functions inherited from elliptic::BoundaryConditions::BoundaryCondition< Dim, Registrars >
 BoundaryCondition (const BoundaryCondition &)=default
 
 BoundaryCondition (BoundaryCondition &&)=default
 
BoundaryConditionoperator= (const BoundaryCondition &)=default
 
BoundaryConditionoperator= (BoundaryCondition &&)=default
 
- Public Member Functions inherited from domain::BoundaryConditions::BoundaryCondition
 BoundaryCondition (BoundaryCondition &&) noexcept=default
 
BoundaryConditionoperator= (BoundaryCondition &&) noexcept=default
 
 BoundaryCondition (const BoundaryCondition &)=default
 
BoundaryConditionoperator= (const BoundaryCondition &)=default
 
 BoundaryCondition (CkMigrateMessage *const msg) noexcept
 
 WRAPPED_PUPable_abstract (BoundaryCondition)
 

Static Public Attributes

static constexpr Options::String help
 
- Static Public Attributes inherited from elliptic::BoundaryConditions::BoundaryCondition< Dim, Registrars >
static constexpr size_t volume_dim = Dim
 

Friends

bool operator== (const AnalyticSolution &lhs, const AnalyticSolution &rhs) noexcept
 
bool operator!= (const AnalyticSolution &lhs, const AnalyticSolution &rhs) noexcept
 

Detailed Description

template<typename System, size_t Dim, typename... FieldTags, typename... FluxTags, typename Registrars>
class elliptic::BoundaryConditions::AnalyticSolution< System, Dim, tmpl::list< FieldTags... >, tmpl::list< FluxTags... >, Registrars >

Impose the analytic solution on the boundary. Works only if an analytic solution exists.

The analytic solution is retrieved from Tags::AnalyticSolutionsBase. It must hold solutions for both the System::primal_fields and the System::primal_fluxes. The user can select to impose the analytic solution as Dirichlet or Neumann boundary conditions for each field separately. Dirichlet boundary conditions are imposed on the fields and Neumann boundary conditions are imposed on the fluxes.

See elliptic::Actions::InitializeAnalyticSolutions for an action that can add the analytic solutions to the DataBox.

Member Data Documentation

◆ help

template<typename System , size_t Dim, typename... FieldTags, typename... FluxTags, typename Registrars >
constexpr Options::String elliptic::BoundaryConditions::AnalyticSolution< System, Dim, tmpl::list< FieldTags... >, tmpl::list< FluxTags... >, Registrars >::help
staticconstexpr
Initial value:
=
"Boundary conditions from the analytic solution"

The documentation for this class was generated from the following file: