SpECTRE
v2024.04.12
|
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::BoundaryCondition > | get_clone () const override |
std::vector< elliptic::BoundaryConditionType > | boundary_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 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 |
void | pup (PUP::er &p) override |
Public Member Functions inherited from elliptic::BoundaryConditions::BoundaryCondition< Dim > | |
BoundaryCondition (const BoundaryCondition &)=default | |
BoundaryCondition (BoundaryCondition &&)=default | |
BoundaryCondition & | operator= (const BoundaryCondition &)=default |
BoundaryCondition & | operator= (BoundaryCondition &&)=default |
virtual std::vector< elliptic::BoundaryConditionType > | boundary_condition_types () const =0 |
Public Member Functions inherited from domain::BoundaryConditions::BoundaryCondition | |
BoundaryCondition (BoundaryCondition &&)=default | |
BoundaryCondition & | operator= (BoundaryCondition &&)=default |
BoundaryCondition (const BoundaryCondition &)=default | |
BoundaryCondition & | operator= (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 |
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.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Implements domain::BoundaryConditions::BoundaryCondition.
|
staticconstexpr |