|
|
| Sommerfeld (const Sommerfeld &)=default |
|
Sommerfeld & | operator= (const Sommerfeld &)=default |
|
| Sommerfeld (Sommerfeld &&)=default |
|
Sommerfeld & | operator= (Sommerfeld &&)=default |
|
| Sommerfeld (double black_hole_mass, double black_hole_spin, double orbital_radius, int m_mode_number, bool hyperboloidal_slicing, int order) |
|
double | black_hole_mass () const |
|
double | black_hole_spin () const |
|
double | orbital_radius () const |
|
int | m_mode_number () const |
|
bool | hyperboloidal_slicing () const |
|
int | order () const |
| std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > | get_clone () const override |
| std::vector< elliptic::BoundaryConditionType > | boundary_condition_types () const override |
|
void | apply (gsl::not_null< tnsr::aa< ComplexDataVector, 3 > * > field, gsl::not_null< tnsr::aa< ComplexDataVector, 3 > * > n_dot_flux, const GradTensorType &deriv_field, const tnsr::I< ComplexDataVector, 2 > &alpha, const tnsr::aaBB< ComplexDataVector, 3 > &beta, const tnsr::aaBB< ComplexDataVector, 3 > &gamma_rstar) const |
|
void | apply_linearized (gsl::not_null< tnsr::aa< ComplexDataVector, 3 > * > field_correction, gsl::not_null< tnsr::aa< ComplexDataVector, 3 > * > n_dot_flux_correction, const GradTensorType &deriv_field_correction, const tnsr::I< ComplexDataVector, 2 > &alpha, const tnsr::aaBB< ComplexDataVector, 3 > &beta, const tnsr::aaBB< ComplexDataVector, 3 > &gamma_rstar) const |
|
void | pup (PUP::er &p) override |
|
| BoundaryCondition (const BoundaryCondition &)=default |
|
| BoundaryCondition (BoundaryCondition &&)=default |
|
BoundaryCondition & | operator= (const BoundaryCondition &)=default |
|
BoundaryCondition & | operator= (BoundaryCondition &&)=default |
| 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) |
Radial Sommerfeld boundary conditions for the m-mode metric perturbations.
These radial boundary conditions enforce an outgoing direction of radiation propagation. They apply both near the Kerr horizon (inner radial boundary) and at large distance (outer radial boundary):
\begin{equation}n_i F^i = i m \Omega \Psi_m
\end{equation}
With hyperboloidal slicing (see HyperboloidalSlicing), the outgoing radiation condition above is replaced by a Neumann condition ( \(F^i = 0\)) at first order (Order = 1). At second order (Order = 2), it instead imposes
\begin{equation}\partial_{x^i}\left(\alpha^{i}\partial_{x^i}\Psi\right) = 0,
\end{equation}
i.e. \(\gamma^{i}\cdot\partial_{x^i}\Psi = -\beta\cdot\Psi\), where \(x^i\) is the radial coordinate ( \(r_\star\) or \(r\), depending on PenetratingHorizon; see CircularOrbit). Since \(\gamma^{i}\) and \(\beta\) couple all tensor components of \(\Psi\) together, we invert this dense matrix in tensor-component space to solve for \(\partial_{x^i}\Psi\), then set the flux \(F^{i} = \alpha^{i}\partial_{x^i}\Psi\).
These boundary conditions currently assume a circular equatorial orbit.