SpECTRE  v2024.04.12
Cce::WorldtubeBufferUpdater< BufferTags > Class Template Referenceabstract

Abstract base class for utilities that are able to perform the buffer updating procedure needed by the WorldtubeDataManager. More...

#include <WorldtubeBufferUpdater.hpp>

Public Types

using creatable_classes = tmpl::list< MetricWorldtubeH5BufferUpdater, BondiWorldtubeH5BufferUpdater, KleinGordonWorldtubeH5BufferUpdater >
 

Public Member Functions

 WRAPPED_PUPable_abstract (WorldtubeBufferUpdater)
 
virtual double update_buffers_for_time (gsl::not_null< Variables< BufferTags > * > 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 =0
 
virtual std::unique_ptr< WorldtubeBufferUpdaterget_clone () const =0
 
virtual bool time_is_outside_range (double time) const =0
 
virtual size_t get_l_max () const =0
 
virtual double get_extraction_radius () const =0
 
virtual bool has_version_history () const =0
 
virtual DataVectorget_time_buffer ()=0
 

Detailed Description

template<typename BufferTags>
class Cce::WorldtubeBufferUpdater< BufferTags >

Abstract base class for utilities that are able to perform the buffer updating procedure needed by the WorldtubeDataManager.

Details

The methods that are required to be overridden in the derived classes are:

  • WorldtubeBufferUpdater::update_buffers_for_time(): updates the buffers passed by pointer and the time_span_start and time_span_end to be appropriate for the requested time, interpolator_length, and buffer_depth.
  • WorldtubeBufferUpdater::get_clone() clone function to obtain a std::unique_ptr of the base WorldtubeBufferUpdater, needed to pass around the factory-created object.
  • WorldtubeBufferUpdater::time_is_outside_range() the override should return true if the time could be used in a update_buffers_for_time call given the data available to the derived class, and false otherwise
  • WorldtubeBufferUpdater::get_l_max() The override should return the l_max it uses in the Goldberg modal data placed in the buffers.
  • WorldtubeBufferUpdater::get_extraction_radius() The override should return the coordinate radius associated with the modal worldtube data that it supplies in the buffer update function. This is currently assumed to be a single double, but may be generalized in future to be time-dependent.
  • WorldtubeBufferUpdater::get_time_buffer The override should return the vector of times that it can produce modal data at. For instance, if associated with a file input, this will be the times at each of the rows of the time-series data.

Member Function Documentation

◆ get_extraction_radius()

template<typename BufferTags >
virtual double Cce::WorldtubeBufferUpdater< BufferTags >::get_extraction_radius ( ) const
pure virtual

◆ get_l_max()

template<typename BufferTags >
virtual size_t Cce::WorldtubeBufferUpdater< BufferTags >::get_l_max ( ) const
pure virtual

◆ get_time_buffer()

template<typename BufferTags >
virtual DataVector & Cce::WorldtubeBufferUpdater< BufferTags >::get_time_buffer ( )
pure virtual

◆ time_is_outside_range()

template<typename BufferTags >
virtual bool Cce::WorldtubeBufferUpdater< BufferTags >::time_is_outside_range ( double  time) const
pure virtual

◆ update_buffers_for_time()

template<typename BufferTags >
virtual double Cce::WorldtubeBufferUpdater< BufferTags >::update_buffers_for_time ( gsl::not_null< Variables< BufferTags > * >  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
pure virtual

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