Sets boundary conditions using the characteristic decomposition: the incoming mode is set from analytic data, the outgoing and zero-speed modes from the interior.
More...
|
|
| DirichletCharacteristics (DirichletCharacteristics &&)=default |
|
DirichletCharacteristics & | operator= (DirichletCharacteristics &&)=default |
|
| DirichletCharacteristics (const DirichletCharacteristics &) |
|
DirichletCharacteristics & | operator= (const DirichletCharacteristics &) |
|
| DirichletCharacteristics (std::optional< std::unique_ptr< evolution::initial_data::InitialData > > analytic_prescription, bool copy_psi_from_interior) |
|
| DirichletCharacteristics (CkMigrateMessage *msg) |
|
| WRAPPED_PUPable_decl_base_template (domain::BoundaryConditions::BoundaryCondition, DirichletCharacteristics) |
| auto | get_clone () const -> std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > override |
|
void | pup (PUP::er &p) override |
|
std::optional< std::string > | dg_ghost (gsl::not_null< Scalar< DataVector > * > psi, gsl::not_null< Scalar< DataVector > * > pi, gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > phi, const std::optional< tnsr::I< DataVector, Dim, Frame::Inertial > > &face_mesh_velocity, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_covector, const Scalar< DataVector > &boundary_psi, const Scalar< DataVector > &interior_psi, const Scalar< DataVector > &interior_pi, const tnsr::i< DataVector, Dim, Frame::Inertial > &interior_phi, const tnsr::I< DataVector, Dim, Frame::Inertial > &coords, double time) const |
|
std::optional< std::string > | boundary_field_time_derivatives (gsl::not_null< Scalar< DataVector > * > dt_boundary_psi, const std::optional< tnsr::I< DataVector, Dim, Frame::Inertial > > &face_mesh_velocity, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_covector, const Scalar< DataVector > &boundary_psi, const Scalar< DataVector > &interior_pi, const tnsr::i< DataVector, Dim, Frame::Inertial > &interior_phi, const tnsr::I< DataVector, Dim, Frame::Inertial > &coords, double time) const |
|
| BoundaryCondition (BoundaryCondition &&)=default |
|
BoundaryCondition & | operator= (BoundaryCondition &&)=default |
|
| BoundaryCondition (const BoundaryCondition &)=default |
|
BoundaryCondition & | operator= (const BoundaryCondition &)=default |
|
| BoundaryCondition (CkMigrateMessage *msg) |
|
void | pup (PUP::er &p) override |
| 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) |
template<size_t Dim>
class SecondOrderScalarWave::BoundaryConditions::DirichletCharacteristics< Dim >
Sets boundary conditions using the characteristic decomposition: the incoming mode is set from analytic data, the outgoing and zero-speed modes from the interior.
If \(n^i\) is the outward pointing unit normal at the external boundary, the characteristic fields and their speeds are (see SecondOrderScalarWave::characteristic_fields):
- \(v^+ = \Pi + n^i\Phi_i\): speed \(+1\) (outgoing, taken from the interior)
- \(v^- = \Pi - n^i\Phi_i\): speed \(-1\) (incoming, taken from the analytic data, or set to zero if AnalyticPrescription is ZeroIncomingMode)
- \(v^0_i\): speed \(0\) (taken from the interior)
The ghost \(\Pi\) and \(\Phi_i\) are reconstructed from these modes. The ghost \(\Psi\) by default is the boundary-evolved evolution::dg::Tags::BoundaryValue<Tags::Psi>, integrated per face using the interior evolution equation defined in boundary_field_time_derivatives. If CopyPsiFromInterior is true the ghost \(\Psi\) is instead the interior evolved \(\Psi\); the boundary value is still integrated but unused.
Moving meshes are not supported: the characteristic speeds are defined without a mesh velocity, so both member functions return an error if a face mesh velocity is supplied.