SpECTRE
v2024.09.29
|
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 <WorldtubeDataManager.hpp>
Public Member Functions | |
BondiWorldtubeDataManager (std::unique_ptr< WorldtubeBufferUpdater< cce_bondi_input_tags > > buffer_updater, size_t l_max, size_t buffer_depth, std::unique_ptr< intrp::SpanInterpolator > interpolator) | |
WRAPPED_PUPable_decl_template (BondiWorldtubeDataManager) | |
BondiWorldtubeDataManager (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< WorldtubeDataManager > | get_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< Tags::characteristic_worldtube_boundary_tags< Tags::BoundaryValue > > | |
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< WorldtubeDataManager > | get_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< Tags::characteristic_worldtube_boundary_tags< Tags::BoundaryValue > > | |
using | creatable_classes = tmpl::list< MetricWorldtubeDataManager, BondiWorldtubeDataManager, KleinGordonWorldtubeDataManager > |
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.
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 cce_bondi_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.
|
overridevirtual |
|
inlineoverridevirtual |
retrieves the l_max that will be supplied to the DataBox in populate_hypersurface_boundary_data()
Implements Cce::WorldtubeDataManager< Tags::characteristic_worldtube_boundary_tags< Tags::BoundaryValue > >.
|
overridevirtual |
retrieves the current time span associated with the buffer_updater_
for diagnostics
Implements Cce::WorldtubeDataManager< Tags::characteristic_worldtube_boundary_tags< Tags::BoundaryValue > >.
|
overridevirtual |
Update the boundary_data_box
entries for all tags in Tags::characteristic_worldtube_boundary_tags
to the boundary data at time
.
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 cce_bondi_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.
Implements Cce::WorldtubeDataManager< Tags::characteristic_worldtube_boundary_tags< Tags::BoundaryValue > >.