SpECTRE  v2024.04.12
Poisson::BoundaryConditions::Robin< Dim > Class Template Reference

Impose Robin boundary conditions \(a u + b n_i \nabla^i u = c\). The boundary condition is imposed as Neumann-type (i.e. on \(n_i \nabla^i u\)) if \(|b| > 0\) and as Dirichlet-type (i.e. on \(u\)) if \(b = 0\). More...

#include <Robin.hpp>

Classes

struct  Constant
 
struct  DirichletWeight
 
struct  NeumannWeight
 

Public Types

using options = tmpl::list< DirichletWeight, NeumannWeight, Constant >
 
using argument_tags = tmpl::list<>
 
using volume_tags = tmpl::list<>
 
using argument_tags_linearized = tmpl::list<>
 
using volume_tags_linearized = tmpl::list<>
 

Public Member Functions

 Robin (const Robin &)=default
 
Robinoperator= (const Robin &)=default
 
 Robin (Robin &&)=default
 
Robinoperator= (Robin &&)=default
 
std::unique_ptr< domain::BoundaryConditions::BoundaryConditionget_clone () const override
 
 Robin (double dirichlet_weight, double neumann_weight, double constant, const Options::Context &context={})
 
double dirichlet_weight () const
 
double neumann_weight () const
 
double constant () const
 
std::vector< elliptic::BoundaryConditionTypeboundary_condition_types () const override
 
void apply (gsl::not_null< Scalar< DataVector > * > field, gsl::not_null< Scalar< DataVector > * > n_dot_field_gradient, const tnsr::i< DataVector, Dim > &deriv_field) const
 
void apply_linearized (gsl::not_null< Scalar< DataVector > * > field_correction, gsl::not_null< Scalar< DataVector > * > n_dot_field_gradient_correction, const tnsr::i< DataVector, Dim > &deriv_field_correction) 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<size_t Dim>
class Poisson::BoundaryConditions::Robin< Dim >

Impose Robin boundary conditions \(a u + b n_i \nabla^i u = c\). The boundary condition is imposed as Neumann-type (i.e. on \(n_i \nabla^i u\)) if \(|b| > 0\) and as Dirichlet-type (i.e. on \(u\)) if \(b = 0\).

Member Function Documentation

◆ boundary_condition_types()

template<size_t Dim>
std::vector< elliptic::BoundaryConditionType > Poisson::BoundaryConditions::Robin< Dim >::boundary_condition_types ( ) const
inlineoverridevirtual

◆ get_clone()

Member Data Documentation

◆ help

template<size_t Dim>
constexpr Options::String Poisson::BoundaryConditions::Robin< Dim >::help
staticconstexpr
Initial value:
=
"Robin boundary conditions a * u + b * n_i grad(u)^i = c. The boundary "
"condition is imposed as Neumann-type (i.e. on n_i grad(u)^i) if abs(b) "
"> 0 and as Dirichlet-type (i.e. on u) if b = 0."

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