SpECTRE  v2024.05.11
elliptic::BoundaryConditions::AnalyticSolution< System, Dim, tmpl::list< FieldTags... >, tmpl::list< FluxTags... > > Class Template Reference

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

#include <AnalyticSolution.hpp>

Classes

struct  Solution
 

Public Types

using options = tmpl::list< Solution, elliptic::OptionTags::BoundaryConditionType< FieldTags >... >
 
using argument_tags = tmpl::list< Parallel::Tags::Metavariables, domain::Tags::Coordinates< Dim, Frame::Inertial >, ::Tags::Normalized< domain::Tags::UnnormalizedFaceNormal< Dim, Frame::Inertial > > >
 
using volume_tags = tmpl::list< Parallel::Tags::Metavariables >
 
using argument_tags_linearized = tmpl::list<>
 
using volume_tags_linearized = tmpl::list<>
 

Public Member Functions

 AnalyticSolution (const AnalyticSolution &rhs)
 
AnalyticSolution & operator= (const AnalyticSolution &rhs)
 
 AnalyticSolution (AnalyticSolution &&)=default
 
AnalyticSolution & operator= (AnalyticSolution &&)=default
 
 AnalyticSolution (std::unique_ptr< elliptic::analytic_data::AnalyticSolution > solution, 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
 
std::vector< elliptic::BoundaryConditionTypeboundary_condition_types () const override
 
template<typename Metavariables >
void apply (const gsl::not_null< typename FieldTags::type * >... fields, const gsl::not_null< typename FieldTags::type * >... n_dot_fluxes, const TensorMetafunctions::prepend_spatial_index< typename FieldTags::type, Dim, UpLo::Lo, Frame::Inertial > &..., const Metavariables &, const tnsr::I< DataVector, Dim > &face_inertial_coords, 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 TensorMetafunctions::prepend_spatial_index< typename FieldTags::type, Dim, UpLo::Lo, Frame::Inertial > &...) const
 
void pup (PUP::er &p) override
 
- Public Member Functions inherited from elliptic::BoundaryConditions::BoundaryCondition< Dim >
 BoundaryCondition (const BoundaryCondition &)=default
 
 BoundaryCondition (BoundaryCondition &&)=default
 
BoundaryConditionoperator= (const BoundaryCondition &)=default
 
BoundaryConditionoperator= (BoundaryCondition &&)=default
 
virtual std::vector< elliptic::BoundaryConditionTypeboundary_condition_types () const =0
 
- 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 >
static constexpr size_t volume_dim = Dim
 

Detailed Description

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

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

◆ boundary_condition_types()

template<typename System , size_t Dim, typename... FieldTags, typename... FluxTags>
std::vector< elliptic::BoundaryConditionType > elliptic::BoundaryConditions::AnalyticSolution< System, Dim, tmpl::list< FieldTags... >, tmpl::list< FluxTags... > >::boundary_condition_types ( ) const
inlineoverridevirtual

◆ get_clone()

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

Member Data Documentation

◆ help

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

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