SpECTRE  v2021.12.06
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 &)=default
 
AnalyticSolution & operator= (const AnalyticSolution &)=default
 
 AnalyticSolution (AnalyticSolution &&)=default
 
AnalyticSolution & operator= (AnalyticSolution &&)=default
 
 AnalyticSolution (const typename elliptic::OptionTags::BoundaryConditionType< FieldTags >::type... boundary_condition_types)
 Select which elliptic::BoundaryConditionType to apply for each field.
 
std::unique_ptr< domain::BoundaryConditions::BoundaryConditionget_clone () const override
 
const auto & boundary_condition_types () const
 
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
 
void apply_linearized (const gsl::not_null< typename FieldTags::type * >... fields, const gsl::not_null< typename FieldTags::type * >... n_dot_fluxes) const
 
void pup (PUP::er &p) 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 &&)=default
 
BoundaryConditionoperator= (BoundaryCondition &&)=default
 
 BoundaryCondition (const BoundaryCondition &)=default
 
BoundaryConditionoperator= (const BoundaryCondition &)=default
 
 BoundaryCondition (CkMigrateMessage *const msg)
 
 WRAPPED_PUPable_abstract (BoundaryCondition)
 
virtual auto get_clone () const -> std::unique_ptr< BoundaryCondition >=0
 

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)
 
bool operator!= (const AnalyticSolution &lhs, const AnalyticSolution &rhs)
 

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 Function Documentation

◆ get_clone()

template<typename System , size_t Dim, typename... FieldTags, typename... FluxTags, typename Registrars >
std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > elliptic::BoundaryConditions::AnalyticSolution< System, Dim, tmpl::list< FieldTags... >, tmpl::list< FluxTags... >, Registrars >::get_clone ( ) const
inlineoverridevirtual

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: