Impose the analytic solution on the boundary. Works only if an analytic solution exists.
More...
|
| 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 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 |
|
| 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 |
|
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.