Public Member Functions | List of all members
Cce::ReducedWorldtubeDataManager Class Reference

Manages the 'reduced' cached buffer dataset associated with a CCE worldtube and interpolates to requested time points to provide worldtube boundary data to the main evolution routines. More...

#include <ReadBoundaryDataH5.hpp>

Public Member Functions

 ReducedWorldtubeDataManager (std::unique_ptr< ReducedWorldtubeBufferUpdater > buffer_updater, size_t l_max, size_t buffer_depth, std::unique_ptr< intrp::SpanInterpolator > interpolator) noexcept
 
template<typename TagList >
bool populate_hypersurface_boundary_data (gsl::not_null< db::DataBox< TagList > * > boundary_data_box, double time) const noexcept
 Update the boundary_data_box entries for all tags in Tags::characteristic_worldtube_boundary_tags to the boundary data at time. More...
 
size_t get_l_max () const noexcept
 retrieves the l_max that will be supplied to the DataBox in populate_hypersurface_boundary_data()
 
std::pair< size_t, size_t > get_time_span () const noexcept
 retrieves the current time span associated with the buffer_updater_ for diagnostics
 
void pup (PUP::er &p) noexcept
 Serialization for Charm++.
 
template<typename TagList >
bool populate_hypersurface_boundary_data (const gsl::not_null< db::DataBox< TagList > * > boundary_data_box, const double time) const noexcept
 

Detailed Description

Manages the 'reduced' cached buffer dataset associated with a CCE worldtube and interpolates to requested time points to provide worldtube boundary data to the main evolution routines.

Details

The maintained buffer will be kept at a length that is set by the Interpolator and the buffer_depth also passed to the constructor. A longer depth will ensure that the buffer updater is called less frequently, which is useful for slow updaters (e.g. those that perform file access). The main functionality is provided by the WorldtubeDataManager::populate_hypersurface_boundary_data() member function that handles buffer updating and boundary computation. This version of the data manager handles the 9 scalars of detail::reduced_cce_input_tags, rather than direct metric components handled by WorldtubeDataManager. The set of 9 scalars is a far leaner (factor of ~4) data storage format.

Member Function Documentation

◆ populate_hypersurface_boundary_data()

template<typename TagList >
bool Cce::ReducedWorldtubeDataManager::populate_hypersurface_boundary_data ( gsl::not_null< db::DataBox< TagList > * >  boundary_data_box,
double  time 
) const
noexcept

Update the boundary_data_box entries for all tags in Tags::characteristic_worldtube_boundary_tags to the boundary data at time.

Details

First, if the stored buffer requires updating, it will be updated via the buffer_updater_ supplied in the constructor. Then, each of the 9 spin-weighted scalars in detail::reduced_cce_input_tags are interpolated across buffer points to the requested time value (via the Interpolator provided in the constructor). Finally, the remaining two scalars not directly supplied in the input file are calculated in-line and put in the DataBox.

Returns true if the time can be supplied from the buffer_updater_, and false otherwise. No tags are updated if false is returned.


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