|
|
static void | fd_ghost (gsl::not_null< tnsr::ii< DataVector, 3, Frame::Inertial > * > conformal_metric, gsl::not_null< Scalar< DataVector > * > lapse, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > shift, gsl::not_null< Scalar< DataVector > * > conformal_factor, gsl::not_null< tnsr::ii< DataVector, 3, Frame::Inertial > * > a_tilde, gsl::not_null< Scalar< DataVector > * > trace_extrinsic_curvature, gsl::not_null< Scalar< DataVector > * > theta, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > gamma_hat, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > auxiliary_shift_b, const Direction< 3 > &direction, const tnsr::ii< DataVector, 3, Frame::Inertial > &interior_conformal_metric, const Scalar< DataVector > &interior_conformal_factor, const tnsr::ii< DataVector, 3, Frame::Inertial > &interior_a_tilde, const Scalar< DataVector > &interior_trace_extrinsic_curvature, const Scalar< DataVector > &interior_theta, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_gamma_hat, const Scalar< DataVector > &interior_lapse, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_shift, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_auxiliary_shift_b, const Mesh< 3 > &subcell_mesh, const fd::Reconstructor &reconstructor) |
| |
Sets Sommerfeld boundary conditions per tensor component.
Unlike time-independent subcell external boundary conditions, the Sommerfeld boundary condition is applied at the outermost interior points in the volume instead of the ghost zone. This is because the Sommerfeld condition requires radial derivatives of the fields and modify their time derivatives, which then need to be time integrated. Under current infrastructure, it is therefore the simplest to apply this boundary condition in the interior rather than the ghost zone. This file extrapolates the interior evolved variables into the ghost zone. Their radial derivatives and time derivatives are then computed and applied in SoTimeDerivative.hpp for the outermost interior points. All tensor components (including lapse and shift) are treated as independent fields when applying this boundary condition.
- Warning
- This boundary condition assumes a complete sphere domain (all wedges), as we only apply it on the upper_zeta direction in blocks with external boundaries.