Sets boundary conditions for the elements abutting the worldtube using a combination of constraint-preserving boundary conditions and the local solution evolved inside the worldtube.
More...
|
| Worldtube (CkMigrateMessage *msg) |
|
| WRAPPED_PUPable_decl_base_template (domain::BoundaryConditions::BoundaryCondition, Worldtube) |
|
auto | get_clone () const -> std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > override |
|
void | pup (PUP::er &p) override |
|
std::optional< std::string > | dg_time_derivative (gsl::not_null< Scalar< DataVector > * > dt_psi_correction, gsl::not_null< Scalar< DataVector > * > dt_pi_correction, gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > dt_phi_correction, const std::optional< tnsr::I< DataVector, Dim > > &face_mesh_velocity, const tnsr::i< DataVector, Dim > &normal_covector, const tnsr::I< DataVector, Dim > &normal_vector, const Scalar< DataVector > &, const Scalar< DataVector > &, const tnsr::i< DataVector, Dim > &phi, const Scalar< DataVector > &lapse, const tnsr::I< DataVector, Dim > &shift, const tnsr::II< DataVector, Dim, Frame::Inertial > &, const Scalar< DataVector > &gamma1, const Scalar< DataVector > &gamma2, const Scalar< DataVector > &, const tnsr::i< DataVector, Dim > &d_psi, const tnsr::ij< DataVector, Dim > &d_phi, const Variables< tmpl::list< Tags::Psi, Tags::Pi, Tags::Phi< Dim > > > &) const |
|
std::optional< std::string > | dg_ghost (const gsl::not_null< Scalar< DataVector > * > psi, const gsl::not_null< Scalar< DataVector > * > pi, const gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > phi, const gsl::not_null< Scalar< DataVector > * > lapse, const gsl::not_null< tnsr::I< DataVector, Dim, Frame::Inertial > * > shift, const gsl::not_null< Scalar< DataVector > * > gamma1, const gsl::not_null< Scalar< DataVector > * > gamma2, const gsl::not_null< tnsr::II< DataVector, Dim, Frame::Inertial > * > inverse_spatial_metric, const std::optional< tnsr::I< DataVector, Dim, Frame::Inertial > > &, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_covector, const tnsr::I< DataVector, Dim, Frame::Inertial > &normal_vector, const Scalar< DataVector > &psi_interior, const Scalar< DataVector > &pi_interior, const tnsr::i< DataVector, Dim > &phi_interior, const Scalar< DataVector > &lapse_interior, const tnsr::I< DataVector, Dim, Frame::Inertial > &shift_interior, const tnsr::II< DataVector, Dim, Frame::Inertial > &inverse_spatial_metric_interior, const Scalar< DataVector > &gamma1_interior, const Scalar< DataVector > &gamma2_interior, const Scalar< DataVector > &, const tnsr::i< DataVector, Dim > &d_psi, const tnsr::ij< DataVector, Dim > &, const Variables< tmpl::list< Tags::Psi, Tags::Pi, Tags::Phi< Dim > > > &worldtube_vars) 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) |
|
virtual auto | get_clone () const -> std::unique_ptr< BoundaryCondition >=0 |
|
template<size_t Dim>
class CurvedScalarWave::BoundaryConditions::Worldtube< Dim >
Sets boundary conditions for the elements abutting the worldtube using a combination of constraint-preserving boundary conditions and the local solution evolved inside the worldtube.
Details
After extensive experimentation we found this set of boundary conditions to be optimal. They are formulated in terms of characteristic fields.
Boundary conditions for \(w^0_\psi\) \(w^0_i\) are formulated by demanding that there are no constraint violations flowing into the numerical domain and are formulated as corrections to the time derivative of the evolved variables directly. The derivation is described in ConstraintPreservingSphericalRadiation .
Boundary conditions for \(\w^-\) are formulated by evaluating the analytical solution of the worldtube at the grid points of each element abutting the worldtube. The data is updated and saved to CurvedScalarWave::Worldtube::Tags::WorldtubeSolution each time step. It is then treated like a ghost field and applied with the chosen numerical flux. So far only the upwind flux has been tried.
We tried several other combinations such as setting all fields from the worldtube solution but found that this caused major constraint violations to flow out of the worldtube.
- Note
- We found that, depending on the worldtube size, a fairly high value for \(\gamma_2\) of ca. 10 is required near the worldtube to ensure a stable evolution when using these boundary conditions.