SpECTRE  v2024.04.12
Cce::InitializeJ::InverseCubic< true > Struct Reference

Initialize \(J\) on the first hypersurface from provided boundary values of \(J\), \(R\), and \(\partial_r J\). More...

#include <InverseCubic.hpp>

Public Types

using options = tmpl::list<>
 
- Public Types inherited from Cce::InitializeJ::InitializeJ< true >
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, Tags::PartiallyFlatCartesianCoords, Tags::PartiallyFlatAngularCoords >
 
using argument_tags = tmpl::push_back< boundary_tags, Tags::LMax, Tags::NumberOfRadialPoints >
 
using creatable_classes = tmpl::list< InverseCubic< true > >
 

Public Member Functions

 WRAPPED_PUPable_decl_template (InverseCubic)
 
 InverseCubic (CkMigrateMessage *)
 
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, gsl::not_null< tnsr::i< DataVector, 3 > * > cartesian_inertial_coordinates, gsl::not_null< tnsr::i< DataVector, 2, ::Frame::Spherical<::Frame::Inertial > > * > angular_inertial_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 &) override
 
- Public Member Functions inherited from Cce::InitializeJ::InitializeJ< true >
 InitializeJ (CkMigrateMessage *)
 
 WRAPPED_PUPable_abstract (InitializeJ)
 
virtual std::unique_ptr< InitializeJ< true > > 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, gsl::not_null< tnsr::i< DataVector, 3 > * > cartesian_inertial_coordinates, gsl::not_null< tnsr::i< DataVector, 2, ::Frame::Spherical<::Frame::Inertial > > * > angular_inertial_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 from provided boundary values of \(J\), \(R\), and \(\partial_r J\).

Details

This initial data is chosen to take the function:

\[ J = \frac{A}{r} + \frac{B}{r^3},\]

where

\begin{align*} A &= R \left( \frac{3}{2} J|_{r = R} + \frac{1}{2} R \partial_r J|_{r = R}\right) \notag\\ B &= - \frac{1}{2} R^3 (J|_{r = R} + R \partial_r J|_{r = R}) \end{align*}

Member Function Documentation

◆ get_clone()

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

◆ operator()()

void Cce::InitializeJ::InverseCubic< true >::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,
gsl::not_null< tnsr::i< DataVector, 3 > * >  cartesian_inertial_coordinates,
gsl::not_null< tnsr::i< DataVector, 2, ::Frame::Spherical<::Frame::Inertial > > * >  angular_inertial_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::InverseCubic< true >::help
staticconstexpr
Initial value:
= {
"Initialization process where J is set to a simple Ansatz with a\n"
" A/r + B/r^3 piece such that it is smooth with the Cauchy data at the \n"
"worldtube"}

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