SpECTRE  2021.08.02
Cce::BondiWorldtubeH5BufferUpdater Class Reference

A WorldtubeBufferUpdater specialized to the CCE input worldtube H5 file produced by the reduced SpEC format. More...

#include <WorldtubeBufferUpdater.hpp>

Public Member Functions

 BondiWorldtubeH5BufferUpdater (const std::string &cce_data_filename, std::optional< double > extraction_radius=std::nullopt) noexcept
 The constructor takes the filename of the SpEC h5 file that will be used for boundary data. The extraction radius can either be passed in directly, or if it takes the value std::nullopt, then the extraction radius is retrieved as an integer in the filename.
 
 WRAPPED_PUPable_decl_template (BondiWorldtubeH5BufferUpdater)
 
 BondiWorldtubeH5BufferUpdater (CkMigrateMessage *) noexcept
 
double update_buffers_for_time (gsl::not_null< Variables< cce_bondi_input_tags > * > buffers, gsl::not_null< size_t * > time_span_start, gsl::not_null< size_t * > time_span_end, double time, size_t computation_l_max, size_t interpolator_length, size_t buffer_depth) const noexcept override
 update the buffers, time_span_start, and time_span_end with time-varies-fastest, Goldberg modal data and the start and end index in the member time_buffer_ covered by the newly updated buffers. More...
 
std::unique_ptr< WorldtubeBufferUpdater< cce_bondi_input_tags > > get_clone () const noexcept override
 
bool time_is_outside_range (const double time) const noexcept override
 The time can only be supported in the buffer update if it is between the first and last time of the input file. More...
 
size_t get_l_max () const noexcept override
 retrieves the l_max of the input file More...
 
double get_extraction_radius () const noexcept override
 retrieves the extraction radius. In most normal circumstances, this will not be needed for Bondi data. More...
 
DataVector & get_time_buffer () noexcept override
 The time buffer is supplied by non-const reference to allow views to easily point into the buffer. More...
 
bool has_version_history () const noexcept override
 
void pup (PUP::er &p) noexcept override
 Serialization for Charm++.
 
- Public Member Functions inherited from Cce::WorldtubeBufferUpdater< cce_bondi_input_tags >
 WRAPPED_PUPable_abstract (WorldtubeBufferUpdater)
 

Additional Inherited Members

- Public Types inherited from Cce::WorldtubeBufferUpdater< cce_bondi_input_tags >
using creatable_classes = tmpl::list< MetricWorldtubeH5BufferUpdater, BondiWorldtubeH5BufferUpdater >
 

Detailed Description

A WorldtubeBufferUpdater specialized to the CCE input worldtube H5 file produced by the reduced SpEC format.

Member Function Documentation

◆ get_clone()

std::unique_ptr< WorldtubeBufferUpdater< cce_bondi_input_tags > > Cce::BondiWorldtubeH5BufferUpdater::get_clone ( ) const
inlineoverridevirtualnoexcept

◆ get_extraction_radius()

double Cce::BondiWorldtubeH5BufferUpdater::get_extraction_radius ( ) const
inlineoverridevirtualnoexcept

retrieves the extraction radius. In most normal circumstances, this will not be needed for Bondi data.

Implements Cce::WorldtubeBufferUpdater< cce_bondi_input_tags >.

◆ get_l_max()

size_t Cce::BondiWorldtubeH5BufferUpdater::get_l_max ( ) const
inlineoverridevirtualnoexcept

retrieves the l_max of the input file

Implements Cce::WorldtubeBufferUpdater< cce_bondi_input_tags >.

◆ get_time_buffer()

DataVector & Cce::BondiWorldtubeH5BufferUpdater::get_time_buffer ( )
inlineoverridevirtualnoexcept

The time buffer is supplied by non-const reference to allow views to easily point into the buffer.

Warning
Altering this buffer outside of the constructor of this class results in undefined behavior! This should be supplied by const reference once there is a convenient method of producing a const view of a vector type.

Implements Cce::WorldtubeBufferUpdater< cce_bondi_input_tags >.

◆ has_version_history()

bool Cce::BondiWorldtubeH5BufferUpdater::has_version_history ( ) const
inlineoverridevirtualnoexcept

◆ time_is_outside_range()

bool Cce::BondiWorldtubeH5BufferUpdater::time_is_outside_range ( const double  time) const
inlineoverridevirtualnoexcept

The time can only be supported in the buffer update if it is between the first and last time of the input file.

Implements Cce::WorldtubeBufferUpdater< cce_bondi_input_tags >.

◆ update_buffers_for_time()

double Cce::BondiWorldtubeH5BufferUpdater::update_buffers_for_time ( gsl::not_null< Variables< cce_bondi_input_tags > * >  buffers,
gsl::not_null< size_t * >  time_span_start,
gsl::not_null< size_t * >  time_span_end,
double  time,
size_t  computation_l_max,
size_t  interpolator_length,
size_t  buffer_depth 
) const
overridevirtualnoexcept

update the buffers, time_span_start, and time_span_end with time-varies-fastest, Goldberg modal data and the start and end index in the member time_buffer_ covered by the newly updated buffers.

Implements Cce::WorldtubeBufferUpdater< cce_bondi_input_tags >.