SpECTRE  v2021.11.01
Cce::InterfaceManagers::GhLocalTimeStepping Class Reference

Implementation of a GhInterfaceManager that provides data according to local time-stepping dense output. More...

#include <GhLocalTimeStepping.hpp>

Classes

struct  AdamsBashforthOrder
 

Public Types

using dt_gh_variables = Variables< tmpl::list< ::Tags::dt< gr::Tags::SpacetimeMetric< 3, ::Frame::Inertial, DataVector > >, ::Tags::dt< GeneralizedHarmonic::Tags::Pi< 3, ::Frame::Inertial > >, ::Tags::dt< GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial > > > >
 
using options = tmpl::list< AdamsBashforthOrder >
 
- Public Types inherited from Cce::InterfaceManagers::GhInterfaceManager
using gh_variables = Variables< tmpl::list< gr::Tags::SpacetimeMetric< 3, ::Frame::Inertial, DataVector >, GeneralizedHarmonic::Tags::Pi< 3, ::Frame::Inertial >, GeneralizedHarmonic::Tags::Phi< 3, ::Frame::Inertial > > >
 
using creatable_classes = tmpl::list< GhLocalTimeStepping, GhLockstep >
 

Public Member Functions

 GhLocalTimeStepping (const size_t order)
 
 GhLocalTimeStepping (CkMigrateMessage *)
 
 WRAPPED_PUPable_decl_template (GhLocalTimeStepping)
 
std::unique_ptr< GhInterfaceManagerget_clone () const override
 
void insert_gh_data (TimeStepId time_id, const tnsr::aa< DataVector, 3 > &spacetime_metric, const tnsr::iaa< DataVector, 3 > &phi, const tnsr::aa< DataVector, 3 > &pi, const tnsr::aa< DataVector, 3 > &dt_spacetime_metric, const tnsr::iaa< DataVector, 3 > &dt_phi, const tnsr::aa< DataVector, 3 > &dt_pi) override
 Store the provided data set to prepare for time-stepping dense output. More...
 
void insert_next_gh_time (TimeStepId time_id, TimeStepId next_time_id) override
 
void request_gh_data (const TimeStepId &time_id) override
 Store the next time step that will be required by the CCE system to proceed with the evolution. More...
 
auto retrieve_and_remove_first_ready_gh_data () -> std::optional< std::tuple< TimeStepId, gh_variables > > override
 Return a std::optional of either the dense-output data at the least recently requested time, or std::nullopt if not enough GH data has been supplied yet. More...
 
size_t number_of_pending_requests () const override
 The number of requests that have been submitted and not yet retrieved. More...
 
size_t number_of_gh_times () const override
 The number of times for which data from the GH system is stored. More...
 
void pup (PUP::er &p) override
 Serialization for Charm++.
 
InterpolationStrategy get_interpolation_strategy () const override
 
- Public Member Functions inherited from Cce::InterfaceManagers::GhInterfaceManager
 WRAPPED_PUPable_abstract (GhInterfaceManager)
 
virtual std::unique_ptr< GhInterfaceManagerget_clone () const =0
 
virtual void insert_gh_data (TimeStepId time_id, const tnsr::aa< DataVector, 3 > &spacetime_metric, const tnsr::iaa< DataVector, 3 > &phi, const tnsr::aa< DataVector, 3 > &pi, const tnsr::aa< DataVector, 3 > &dt_spacetime_metric, const tnsr::iaa< DataVector, 3 > &dt_phi, const tnsr::aa< DataVector, 3 > &dt_pi)=0
 
virtual void insert_next_gh_time (TimeStepId time_id, TimeStepId next_time_id)=0
 
virtual void request_gh_data (const TimeStepId &)=0
 
virtual auto retrieve_and_remove_first_ready_gh_data () -> std::optional< std::tuple< TimeStepId, gh_variables > >=0
 
virtual size_t number_of_pending_requests () const =0
 
virtual size_t number_of_gh_times () const =0
 
virtual InterpolationStrategy get_interpolation_strategy () const =0
 

Static Public Attributes

static constexpr Options::String help
 

Detailed Description

Implementation of a GhInterfaceManager that provides data according to local time-stepping dense output.

Details

This class receives data from the Generalized Harmonic system sufficient to perform the time-stepping dense output to arbitrary times required by CCE. From the Generalized Harmonic system, it receives the spacetime metric \(g_{a b}\) and Generalized Harmonic \(\Phi_{i a b}\) and \(\Pi_{ab}\), as well as each of their time derivatives, the current TimeStepId, and the next TimeStepId via GhLocalTimeStepping::insert_gh_data(). The CCE system supplies requests for time steps via GhLocalTimeStepping::request_gh_data() and receives dense output boundary data via GhLocalTimeStepping::retrieve_and_remove_first_ready_gh_data().

Member Function Documentation

◆ get_clone()

std::unique_ptr< GhInterfaceManager > Cce::InterfaceManagers::GhLocalTimeStepping::get_clone ( ) const
overridevirtual

◆ get_interpolation_strategy()

InterpolationStrategy Cce::InterfaceManagers::GhLocalTimeStepping::get_interpolation_strategy ( ) const
inlineoverridevirtual

◆ insert_gh_data()

void Cce::InterfaceManagers::GhLocalTimeStepping::insert_gh_data ( TimeStepId  time_id,
const tnsr::aa< DataVector, 3 > &  spacetime_metric,
const tnsr::iaa< DataVector, 3 > &  phi,
const tnsr::aa< DataVector, 3 > &  pi,
const tnsr::aa< DataVector, 3 > &  dt_spacetime_metric,
const tnsr::iaa< DataVector, 3 > &  dt_phi,
const tnsr::aa< DataVector, 3 > &  dt_pi 
)
overridevirtual

Store the provided data set to prepare for time-stepping dense output.

Details

The next_time_id is required to infer the span of time values that should be permitted for the dense output, and at what point the CCE system should wait for additional data from the GH system.

Implements Cce::InterfaceManagers::GhInterfaceManager.

◆ insert_next_gh_time()

void Cce::InterfaceManagers::GhLocalTimeStepping::insert_next_gh_time ( TimeStepId  time_id,
TimeStepId  next_time_id 
)
overridevirtual

◆ number_of_gh_times()

size_t Cce::InterfaceManagers::GhLocalTimeStepping::number_of_gh_times ( ) const
inlineoverridevirtual

The number of times for which data from the GH system is stored.

Details

This will be roughly the order of the time stepper plus the number of times that the GH system is ahead of the CCE system.

Implements Cce::InterfaceManagers::GhInterfaceManager.

◆ number_of_pending_requests()

size_t Cce::InterfaceManagers::GhLocalTimeStepping::number_of_pending_requests ( ) const
inlineoverridevirtual

The number of requests that have been submitted and not yet retrieved.

Implements Cce::InterfaceManagers::GhInterfaceManager.

◆ request_gh_data()

void Cce::InterfaceManagers::GhLocalTimeStepping::request_gh_data ( const TimeStepId time_id)
overridevirtual

Store the next time step that will be required by the CCE system to proceed with the evolution.

Details

The values of these time steps will be used to generate the dense output from the provided GH data.

Implements Cce::InterfaceManagers::GhInterfaceManager.

◆ retrieve_and_remove_first_ready_gh_data()

auto Cce::InterfaceManagers::GhLocalTimeStepping::retrieve_and_remove_first_ready_gh_data ( ) -> std::optional< std::tuple< TimeStepId, gh_variables > >
overridevirtual

Return a std::optional of either the dense-output data at the least recently requested time, or std::nullopt if not enough GH data has been supplied yet.

Implements Cce::InterfaceManagers::GhInterfaceManager.

Member Data Documentation

◆ help

constexpr Options::String Cce::InterfaceManagers::GhLocalTimeStepping::help
staticconstexpr
Initial value:
{
"Pass data between GH and CCE systems via Adams-Bashforth local "
"time-stepping"}

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