SpECTRE  v2024.09.29
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
db Namespace Reference

Namespace for DataBox related things. More...

Namespaces

namespace  protocols
 Protocols for the DataBox.
 

Classes

class  Access
 A class for retrieving items from a DataBox without needing to know all the tags in the box. More...
 
struct  BaseTag
 Mark a (usually) empty struct as a base tag by inheriting from this. More...
 
struct  ComputeTag
 Mark a struct as a compute tag by inheriting from this. More...
 
class  DataBox< tmpl::list< Tags... > >
 A DataBox stores objects that can be retrieved by using Tags. More...
 
struct  is_base_tag
 Check if Tag is a base DataBox tag. More...
 
struct  is_compute_tag
 Check if Tag derives off of db::ComputeTag. More...
 
struct  is_immutable_item_tag
 Check if Tag is a DataBox tag for an immutable item, i.e. a ComputeTag or ReferenceTag. More...
 
struct  is_mutable_item_tag
 Check if Tag is a DataBox tag for a mutable item, i.e. a SimpleTag. More...
 
struct  is_non_base_tag
 Check if Tag is not a base tag. More...
 
struct  is_reference_tag
 Check if Tag derives off of db::ReferenceTag. More...
 
struct  is_simple_tag
 Check if Tag is a simple tag. More...
 
struct  is_tag
 Check if Tag is a DataBox tag, i.e. a BaseTag, SimpleTag, ComputeTag, or ReferenceTag. More...
 
struct  PrefixTag
 Mark a struct as a prefix tag by inheriting from this. More...
 
struct  ReferenceTag
 Mark a struct as a reference tag by inheriting from this. More...
 
struct  SimpleTag
 Mark a struct as a simple tag by inheriting from this. More...
 
struct  Subitems
 Struct that can be specialized to allow DataBox items to have subitems. Specializations must define: More...
 
struct  Subitems< domain::Tags::Interface< DirectionsTag, VariablesTag >, Requires< tt::is_a_v< Variables, typename VariablesTag::type > > >
 
struct  Subitems< domain::Tags::InterfaceCompute< DirectionsTag, VariablesTag >, Requires< tt::is_a_v< Variables, typename VariablesTag::type > > >
 
struct  Subitems< domain::Tags::Slice< DirectionsTag, VariablesTag >, Requires< tt::is_a_v< Variables, typename VariablesTag::type > > >
 
struct  Subitems< FacesTag, Requires< std::is_base_of_v< domain::Tags::Faces< FacesTag::volume_dim, typename FacesTag::tag >, FacesTag > and tt::is_a_v< Variables, typename FacesTag::tag::type > > >
 
struct  Subitems< LinearSolver::Schwarz::Tags::Overlaps< VariablesTag, Dim, OptionsGroup >, Requires< tt::is_a_v< Variables, typename VariablesTag::type > > >
 
struct  Subitems< Tag, Requires< Variables_detail::is_a_variables_tag_v< Tag > > >
 

Typedefs

template<typename Tag , typename Box >
using creation_tag = implementation defined
 The tag added to Box referred to by Tag. This resolves base tags and converts subitems to full items.
 
template<typename... Tags>
using AddSimpleTags = implementation defined
 List of Tags to add to the DataBox.
 
template<typename... Tags>
using AddComputeTags = implementation defined
 List of Compute Item Tags to add to the DataBox.
 
template<typename TagList >
using compute_databox_type = implementation defined
 Returns the type of the DataBox that would be constructed from the TagList of tags.
 
template<typename Tag , typename TagsList >
using const_item_type = implementation defined
 
template<template< typename... > class Wrapper, typename TagList , typename... Args>
using wrap_tags_in = implementation defined
 Create a new tmpl::list of tags by wrapping each tag in TagList in Wrapper<_, Args...>.
 
template<template< typename... > class Prefix, typename Tag , typename... Args>
using add_tag_prefix = implementation defined
 Wrap Tag in Prefix<_, Args...>, unless Tag is a Tags::Variables, in which case this creates a new Tags::Variables, wrapping each tag in Tag::tags_list with Prefix<_, Args...>.
 
template<typename Tag >
using remove_tag_prefix = implementation defined
 Remove the outer prefix from a prefixed tag Tag, or remove the outer prefix of each tag in Tag::tags_list if Tag is a Tags::Variables.
 
template<typename Tag >
using remove_all_prefixes = implementation defined
 Completely remove all prefix tags from a Tag, or all prefixes from the tags in Tag::tags_list if Tag is a Tags::Variables.
 
template<template< typename... > class Wrapper, typename T , typename... Args>
using prefix_variables = implementation defined
 Add a prefix to all tags in a Variables, leaving the argument unchanged if it is not a Variables. More...
 
template<typename T >
using unprefix_variables = implementation defined
 Remove the outer prefix from all tags in a Variables, leaving the argument unchanged if it is not a Variables. More...
 

Functions

template<typename Tag >
const auto & get (const Access &box)
 Retrieve a tag from a db::Access
 
template<typename... MutateTags, typename Invokable , typename... Args>
decltype(auto) mutate (Invokable &&invokable, const gsl::not_null< Access * > box, Args &&... args)
 Mutate a tag in a db::Access.
 
template<typename... MutateTags, typename TagList , typename Invokable , typename... Args>
decltype(auto) mutate (Invokable &&invokable, const gsl::not_null< DataBox< TagList > * > box, Args &&... args)
 Allows changing the state of one or more non-computed elements in the DataBox. More...
 
template<typename Tag , typename TagList >
const auto & get (const DataBox< TagList > &box)
 Retrieve the item with tag Tag from the DataBox. More...
 
template<typename CopiedItemsTagList , typename DbTagList >
auto copy_items (const DataBox< DbTagList > &box)
 Copy the items from the DataBox into a TaggedTuple. More...
 
template<typename Tag , typename TagList >
auto & get_mutable_reference (const gsl::not_null< DataBox< TagList > * > box)
 Retrieve a mutable reference to the item with tag Tag from the DataBox. More...
 
template<typename AddMutableItemTags , typename AddImmutableItemTags = tmpl::list<>, typename... Args>
constexpr auto create (Args &&... args)
 Create a new DataBox. More...
 
template<size_t VolumeDim, typename TagsList , typename... TagsToSlice>
Variables< tmpl::list< TagsToSlice... > > data_on_slice (const db::DataBox< TagsList > &box, const Index< VolumeDim > &element_extents, const size_t sliced_dim, const size_t fixed_index, tmpl::list< TagsToSlice... >)
 Slices volume Tensors from a DataBox into a Variables More...
 
template<typename Tag >
std::string tag_name ()
 Get the name of a DataBox tag, including prefixes. More...
 
template<typename Tags >
void validate_selection (const std::vector< std::string > &selected_names, const Options::Context &context)
 Validate that the selected names are a subset of the given tags. More...
 
template<typename MutateTags , typename ArgumentTags , typename F , typename... Args>
constexpr decltype(auto) mutate_apply (F &&f, const gsl::not_null< Access * > box, Args &&... args)
 Apply the invokable f mutating items MutateTags and taking as additional arguments ArgumentTags and args. More...
 
template<typename F , typename... Args>
constexpr decltype(auto) mutate_apply (F &&f, const gsl::not_null< Access * > box, Args &&... args)
 Apply the invokable f mutating items MutateTags and taking as additional arguments ArgumentTags and args. More...
 
template<typename F , typename... Args>
constexpr decltype(auto) mutate_apply (const gsl::not_null< Access * > box, Args &&... args)
 Apply the invokable f mutating items MutateTags and taking as additional arguments ArgumentTags and args. More...
 
template<typename TagsList >
const Accessas_access (const DataBox< TagsList > &box)
 Convert a db::DataBox to a db::Access.
 
template<typename TagsList >
Accessas_access (DataBox< TagsList > &box)
 Convert a db::DataBox to a db::Access.
 
template<typename ArgumentTags , typename F , typename BoxTags , typename... Args>
constexpr auto apply (F &&f, const DataBox< BoxTags > &box, Args &&... args)
 Apply the invokable f with argument Tags TagsList from DataBox box More...
 
template<typename F , typename BoxTags , typename... Args>
constexpr auto apply (F &&f, const DataBox< BoxTags > &box, Args &&... args)
 Apply the invokable f with argument Tags TagsList from DataBox box More...
 
template<typename F , typename BoxTags , typename... Args>
constexpr auto apply (const DataBox< BoxTags > &box, Args &&... args)
 Apply the invokable f with argument Tags TagsList from DataBox box More...
 
template<typename MutateTags , typename ArgumentTags , typename F , typename BoxTags , typename... Args>
constexpr decltype(auto) mutate_apply (F &&f, const gsl::not_null< DataBox< BoxTags > * > box, Args &&... args)
 Apply the invokable f mutating items MutateTags and taking as additional arguments ArgumentTags and args. More...
 
template<typename F , typename BoxTags , typename... Args>
constexpr decltype(auto) mutate_apply (F &&f, const gsl::not_null< DataBox< BoxTags > * > box, Args &&... args)
 Apply the invokable f mutating items MutateTags and taking as additional arguments ArgumentTags and args. More...
 
template<typename F , typename BoxTags , typename... Args>
constexpr decltype(auto) mutate_apply (const gsl::not_null< DataBox< BoxTags > * > box, Args &&... args)
 Apply the invokable f mutating items MutateTags and taking as additional arguments ArgumentTags and args. More...
 

Variables

template<typename Tag >
constexpr bool is_compute_tag_v = is_compute_tag<Tag>::value
 True if Tag derives from db::ComputeTag.
 
template<typename Tag >
constexpr bool is_reference_tag_v = is_reference_tag<Tag>::value
 True if Tag derives from db::ReferenceTag.
 
template<typename Tag >
constexpr bool is_immutable_item_tag_v = is_immutable_item_tag<Tag>::value
 True if Tag is a DataBox tag for an immutable item, i.e. a ComputeTag or ReferenceTag.
 
template<typename Tag >
constexpr bool is_mutable_item_tag_v = is_mutable_item_tag<Tag>::value
 True if Tag is a DataBox tag for a mutable item, i.e. a SimpleTag.
 
template<typename Tag >
constexpr bool is_simple_tag_v = is_simple_tag<Tag>::value
 True if Tag is a simple tag.
 
template<typename Tag >
constexpr bool is_non_base_tag_v = is_non_base_tag<Tag>::value
 True if Tag is not a base tag.
 
template<typename Tag >
constexpr bool is_tag_v = is_tag<Tag>::value
 True if Tag is a DataBox tag.
 
template<typename Tag >
constexpr bool is_base_tag_v = is_base_tag<Tag>::value
 True if Tag is a base tag.
 
template<typename Tag , typename DataBoxType >
using tag_is_retrievable = implementation defined
 Equal to true if Tag can be retrieved from a DataBox of type DataBoxType.
 
template<typename Tag , typename DataBoxType >
constexpr bool tag_is_retrievable_v
 Equal to true if Tag can be retrieved from a DataBox of type DataBoxType. More...
 
template<typename Consumer , typename Provider , typename Box >
using tag_depends_on = std::bool_constant< Box::template tag_depends_on< Consumer, Provider >()>
 Check whether the tag Consumer depends on the tag Provider in a given Box. More...
 
template<typename Consumer , typename Provider , typename Box >
constexpr bool tag_depends_on_v
 Check whether the tag Consumer depends on the tag Provider in a given Box. More...
 

Detailed Description

Namespace for DataBox related things.

Function Documentation

◆ validate_selection()

template<typename Tags >
void db::validate_selection ( const std::vector< std::string > &  selected_names,
const Options::Context context 
)

Validate that the selected names are a subset of the given tags.

The possible choices for the selection are the db::tag_names of the Tags.

Template Parameters
TagsList of possible tags.
Parameters
selected_namesNames to validate.
contextOptions context for error reporting.