Generate initial data that has a conformal factor \(\omega\) chosen to compensate for the boundary value of \(\beta\) so that the initial time coordinate is approximately inertial at \(I^+\).
More...
|
| WRAPPED_PUPable_decl_template (ConformalFactor) |
|
| ConformalFactor (CkMigrateMessage *msg) |
|
| ConformalFactor (double angular_coordinate_tolerance, size_t max_iterations, bool require_convergence, bool optimize_l_0_mode, bool use_beta_integral_estimate, ::Cce::InitializeJ::ConformalFactorIterationHeuristic iteration_heuristic, bool use_input_modes, std::string input_mode_filename) |
|
| ConformalFactor (double angular_coordinate_tolerance, size_t max_iterations, bool require_convergence, bool optimize_l_0_mode, bool use_beta_integral_estimate, ::Cce::InitializeJ::ConformalFactorIterationHeuristic iteration_heuristic, bool use_input_modes, std::vector< std::complex< double > > input_modes) |
|
std::unique_ptr< InitializeJ > | get_clone () const override |
|
void | operator() (gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, 2 > > * > j, gsl::not_null< tnsr::i< DataVector, 3 > * > cartesian_cauchy_coordinates, gsl::not_null< tnsr::i< DataVector, 2, ::Frame::Spherical<::Frame::Inertial > > * > angular_cauchy_coordinates, const Scalar< SpinWeighted< ComplexDataVector, 2 > > &boundary_j, const Scalar< SpinWeighted< ComplexDataVector, 2 > > &boundary_dr_j, const Scalar< SpinWeighted< ComplexDataVector, 0 > > &r, const Scalar< SpinWeighted< ComplexDataVector, 0 > > &beta, size_t l_max, size_t number_of_radial_points, gsl::not_null< Parallel::NodeLock * > hdf5_lock) const override |
|
void | pup (PUP::er &p) override |
|
| InitializeJ (CkMigrateMessage *) |
|
| WRAPPED_PUPable_abstract (InitializeJ) |
|
virtual std::unique_ptr< InitializeJ< false > > | get_clone () const =0 |
|
virtual void | operator() (gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, 2 > > * > j, gsl::not_null< tnsr::i< DataVector, 3 > * > cartesian_cauchy_coordinates, gsl::not_null< tnsr::i< DataVector, 2, ::Frame::Spherical<::Frame::Inertial > > * > angular_cauchy_coordinates, const Scalar< SpinWeighted< ComplexDataVector, 2 > > &boundary_j, const Scalar< SpinWeighted< ComplexDataVector, 2 > > &boundary_dr_j, const Scalar< SpinWeighted< ComplexDataVector, 0 > > &r, const Scalar< SpinWeighted< ComplexDataVector, 0 > > &beta, size_t l_max, size_t number_of_radial_points, gsl::not_null< Parallel::NodeLock * > hdf5_lock) const =0 |
|
Generate initial data that has a conformal factor \(\omega\) chosen to compensate for the boundary value of \(\beta\) so that the initial time coordinate is approximately inertial at \(I^+\).
Details
The core calculation for this initial data choice is the iterative optimization of the angular conformal factor \(\omega\) such that it cancels some portion of the value of \(e^{2\beta}\) that contributes to the definition of the asymptotically inertial time. The initial data generation process proceeds slightly differently depending on the set of input options that are used:
- If
UseBetaIntegralEstimate
is false, the conformal factor will be optimized to minimize the transformed value of \(\beta\) on the worldtube boundary.
- If
UseBetaIntegralEstimate
is true, the conformal factor will be optimized to minimize an estimate of the asymptotic value of \(\beta\) in the evolved coordinates.
OptimizeL0Mode
indicates whether the \(l=0\) mode of the conformal factor shoudl be included in the optimization. This option is useful because the optimization can usually find a better solution when the \(l=0\) mode is ignored, and the \(l=0\) should not contribute significantly to the resulting waveform.
- If
UseInputModes
is false, the \(J\) value on the initial hypersurface will be set by an \(A/r + B/r^3\) ansatz, chosen to match the worldtube boundary value of \(J\) and \(\partial_r J\) in the new coordinates. In this case, the alternative arguments InputModes
or InputModesFromFile
are ignored.
- If
UseInputModes
is true, the \(1/r\) part of \(J\) will be set to spin-weighted spherical harmonic modes specified by either an input h5 file (in the case of using the input option InputModesFromFile
) or from a list of complex values specified in the input file (in the case of using the input option InputModes
). Then, the \(1/r^3\) and \(1/r^4\) parts of \(J\) are chosen to match the boundary value of \(J\) and \(\partial_r J\) on the worldtube boundary in the new coordinates.