SpECTRE  v2021.11.01
Cce::MetricWorldtubeDataManager Class Reference

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

#include <WorldtubeDataManager.hpp>

Public Member Functions

 MetricWorldtubeDataManager (std::unique_ptr< WorldtubeBufferUpdater< cce_metric_input_tags > > buffer_updater, size_t l_max, size_t buffer_depth, std::unique_ptr< intrp::SpanInterpolator > interpolator, bool fix_spec_normalization)
 
 WRAPPED_PUPable_decl_template (MetricWorldtubeDataManager)
 
 MetricWorldtubeDataManager (CkMigrateMessage *)
 
bool populate_hypersurface_boundary_data (gsl::not_null< Variables< Tags::characteristic_worldtube_boundary_tags< Tags::BoundaryValue > > * > boundary_data_variables, double time, gsl::not_null< Parallel::NodeLock * > hdf5_lock) const override
 Update the boundary_data_box entries for all tags in Tags::characteristic_worldtube_boundary_tags to the boundary data at time. More...
 
std::unique_ptr< WorldtubeDataManagerget_clone () const override
 
size_t get_l_max () const override
 retrieves the l_max that will be supplied to the DataBox in populate_hypersurface_boundary_data() More...
 
std::pair< size_t, size_t > get_time_span () const override
 retrieves the current time span associated with the buffer_updater_ for diagnostics More...
 
void pup (PUP::er &p) override
 Serialization for Charm++.
 
- Public Member Functions inherited from Cce::WorldtubeDataManager
 WRAPPED_PUPable_abstract (WorldtubeDataManager)
 
virtual bool populate_hypersurface_boundary_data (gsl::not_null< Variables< Tags::characteristic_worldtube_boundary_tags< Tags::BoundaryValue > > * > boundary_data_variables, double time, gsl::not_null< Parallel::NodeLock * > hdf5_lock) const =0
 
virtual std::unique_ptr< WorldtubeDataManagerget_clone () const =0
 
virtual size_t get_l_max () const =0
 
virtual std::pair< size_t, size_t > get_time_span () const =0
 

Additional Inherited Members

- Public Types inherited from Cce::WorldtubeDataManager
using creatable_classes = tmpl::list< MetricWorldtubeDataManager, BondiWorldtubeDataManager >
 

Detailed Description

Manages the cached buffer data 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 maintained 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.

Member Function Documentation

◆ get_clone()

std::unique_ptr< WorldtubeDataManager > Cce::MetricWorldtubeDataManager::get_clone ( ) const
overridevirtual

◆ get_l_max()

size_t Cce::MetricWorldtubeDataManager::get_l_max ( ) const
inlineoverridevirtual

retrieves the l_max that will be supplied to the DataBox in populate_hypersurface_boundary_data()

Implements Cce::WorldtubeDataManager.

◆ get_time_span()

std::pair< size_t, size_t > Cce::MetricWorldtubeDataManager::get_time_span ( ) const
overridevirtual

retrieves the current time span associated with the buffer_updater_ for diagnostics

Implements Cce::WorldtubeDataManager.

◆ populate_hypersurface_boundary_data()

bool Cce::MetricWorldtubeDataManager::populate_hypersurface_boundary_data ( gsl::not_null< Variables< Tags::characteristic_worldtube_boundary_tags< Tags::BoundaryValue > > * >  boundary_data_variables,
double  time,
gsl::not_null< Parallel::NodeLock * >  hdf5_lock 
) const
overridevirtual

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 spatial metric, shift, lapse, and each of their radial and time derivatives are interpolated across buffer points to the requested time value (via the Interpolator provided in the constructor). Finally, that data is supplied to the create_bondi_boundary_data(), which updates the boundary_data_box with the Bondi spin-weighted scalars determined from the interpolated Cartesian data.

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

Implements Cce::WorldtubeDataManager.


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