SpECTRE  v2024.05.11
control_system::Tags::MeasurementTimescales Struct Reference

The measurement timescales associated with domain::Tags::FunctionsOfTime. More...

#include <MeasurementTimescales.hpp>

Public Types

using type = std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > >
template<typename Metavariables >
using option_holders = control_system::inputs< tmpl::transform< tmpl::filter< typename Metavariables::component_list, tt::is_a< ControlComponent, tmpl::_1 > >, tmpl::bind< tmpl::back, tmpl::_1 > > >
template<typename Metavariables >
using option_tags = tmpl::push_front< option_holders< Metavariables >, control_system::OptionTags::MeasurementsPerUpdate, domain::OptionTags::DomainCreator< Metavariables::volume_dim >, ::OptionTags::InitialTime, ::OptionTags::InitialTimeStep >

Static Public Member Functions

template<typename Metavariables , typename... OptionHolders>
static type create_from_options (const int measurements_per_update, const std::unique_ptr<::DomainCreator< Metavariables::volume_dim > > &domain_creator, const double initial_time, const double initial_time_step, const OptionHolders &... option_holders)

Static Public Attributes

static constexpr bool pass_metavariables = true

Detailed Description

The measurement timescales associated with domain::Tags::FunctionsOfTime.

We group measurement timescales by the control_system::protocols::Measurement that their corresponding control systems use. This is because one measurement may be used to update many functions of time. Each group of functions of time associated with a particular measurement has a corresponding timescale here, represented as PiecewisePolynomial<0> with a single entry. That single entry is the minimum of all control_system::calculate_measurement_timescales for every control system in that group.

The name of a measurement timescale is calculated using control_system::system_to_combined_names for every group of control systems with the same measurement.

If all control systems that use the same measurement aren't active, then the measurement timescale and expiration time are std::numeric_limits<double>::infinity().

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