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

Initialize \(J\) on the first hypersurface to be vanishing, finding the appropriate angular coordinates to be continuous with the provided worldtube boundary data. More...

#include <ZeroNonSmooth.hpp>

Classes

struct  AngularCoordinateTolerance
 
struct  MaxIterations
 
struct  RequireConvergence
 

Public Types

using options = tmpl::list< AngularCoordinateTolerance, MaxIterations, RequireConvergence >
 
- 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 (ZeroNonSmooth)
 
 ZeroNonSmooth (CkMigrateMessage *)
 
 ZeroNonSmooth (double angular_coordinate_tolerance, size_t max_iterations, bool require_convergence=false)
 
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

Initialize \(J\) on the first hypersurface to be vanishing, finding the appropriate angular coordinates to be continuous with the provided worldtube boundary data.

Details

Internally, this performs an iterative solve for the angular coordinates necessary to give rise to a vanishing gauge-transformed J on the worldtube boundary. The parameters for the iterative procedure are determined by options ZeroNonSmooth::AngularCoordinateTolerance and ZeroNonSmooth::MaxIterations. The resulting J will necessarily have vanishing first radial derivative, and so will typically not be smooth (only continuous) with the provided Cauchy data at the worldtube boundary.

Member Function Documentation

◆ get_clone()

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

◆ operator()()

void Cce::InitializeJ::ZeroNonSmooth::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::ZeroNonSmooth::help
staticconstexpr
Initial value:
= {
"Initialization process where J is set so Psi0 is vanishing\n"
"(roughly a no incoming radiation condition)"}

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