SpECTRE  v2024.04.12
Cce::InitializeJ::ConformalFactor Struct Reference

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...

#include <ConformalFactor.hpp>

Classes

struct  AngularCoordinateTolerance
 
struct  ConformalFactorIterationHeuristic
 
struct  InputModes
 
struct  InputModesFromFile
 
struct  MaxIterations
 
struct  OptimizeL0Mode
 
struct  RequireConvergence
 
struct  UseBetaIntegralEstimate
 
struct  UseInputModes
 

Public Types

using options = tmpl::list< AngularCoordinateTolerance, MaxIterations, RequireConvergence, OptimizeL0Mode, UseBetaIntegralEstimate, ConformalFactorIterationHeuristic, UseInputModes, Options::Alternatives< tmpl::list< InputModesFromFile >, tmpl::list< InputModes > > >
 
- Public Types inherited from Cce::InitializeJ::InitializeJ< false >
using boundary_tags = tmpl::list< Tags::BoundaryValue< Tags::BondiJ >, Tags::BoundaryValue< Tags::Dr< Tags::BondiJ > >, Tags::BoundaryValue< Tags::BondiR >, Tags::BoundaryValue< Tags::BondiBeta > >
 
using mutate_tags = tmpl::list< Tags::BondiJ, Tags::CauchyCartesianCoords, Tags::CauchyAngularCoords >
 
using argument_tags = tmpl::push_back< boundary_tags, Tags::LMax, Tags::NumberOfRadialPoints >
 
using creatable_classes = tmpl::list< ConformalFactor, InverseCubic< false >, NoIncomingRadiation, ZeroNonSmooth >
 

Public Member Functions

 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
 
- Public Member Functions inherited from Cce::InitializeJ::InitializeJ< false >
 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
 

Static Public Attributes

static constexpr Options::String help
 

Detailed Description

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.

Member Function Documentation

◆ get_clone()

std::unique_ptr< InitializeJ > Cce::InitializeJ::ConformalFactor::get_clone ( ) const
overridevirtual

◆ operator()()

void Cce::InitializeJ::ConformalFactor::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
overridevirtual

Member Data Documentation

◆ help

constexpr Options::String Cce::InitializeJ::ConformalFactor::help
staticconstexpr
Initial value:
= {
"Generate CCE initial data based on choosing an angular conformal factor "
"based on the value of the CCE scalar beta in an attempt to make the "
"time variable approximately asymptotically inertial"}

The documentation for this struct was generated from the following file: