SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
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  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_compute_tag
 Check if Tag derives off of db::ComputeTag. More...
struct  is_creation_tag
 Check if Tag is a simple, compute, or reference tag. 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_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 SimpleTag, ComputeTag, ReferenceTag, or the special tag Parallel::Tags::Metavariables. 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 > > >

Concepts

concept  simple_tag
concept  compute_tag
concept  reference_tag
concept  immutable_item_tag
concept  mutable_item_tag
concept  tag

Typedefs

template<typename Tag, typename Box>
using creation_tag
 The tag added to Box referred to by Tag. This resolves base tags and converts subitems to full items.
template<typename... Tags>
using AddSimpleTags = tmpl::flatten<tmpl::list<Tags...>>
 List of Tags to add to the DataBox.
template<typename... Tags>
using AddComputeTags = tmpl::flatten<tmpl::list<Tags...>>
 List of Compute Item Tags to add to the DataBox.
template<typename TagList>
using compute_databox_type = typename detail::compute_dbox_type<TagList>::type
 Returns the type of the DataBox that would be constructed from the TagList of tags.
template<typename Tag, typename TagsList>
using const_item_type
template<template< typename... > class Wrapper, typename TagList, typename... Args>
using wrap_tags_in
 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
 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 = typename detail::remove_tag_prefix_impl<Tag>::type
 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
 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
 Add a prefix to all tags in a Variables, leaving the argument unchanged if it is not a Variables.
template<typename T>
using unprefix_variables = typename detail::unprefix_variables<T>::type
 Remove the outer prefix from all tags in a Variables, leaving the argument unchanged if it is not a Variables.

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.
template<typename Tag, typename TagList>
const auto & get (const DataBox< TagList > &box)
 Retrieve the item with tag Tag from the DataBox.
template<typename CopiedItemsTagList, typename DbTagList>
auto copy_items (const DataBox< DbTagList > &box)
 Copy the items from the DataBox into a TaggedTuple.
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.
template<typename AddMutableItemTags, typename AddImmutableItemTags = tmpl::list<>, typename... Args>
constexpr auto create (Args &&... args)
 Create a new DataBox.
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
template<typename Tag>
std::string tag_name ()
 Get the name of a DataBox tag, including prefixes.
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.
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.
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.
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.
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
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
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
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.
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.
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.

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_creation_tag_v = is_creation_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, typename DataBoxType>
using tag_is_retrievable
 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.
template<typename Consumer, typename Provider, typename Box>
using tag_depends_on
 Check whether the tag Consumer depends on the tag Provider in a given Box.
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.

Detailed Description

Namespace for DataBox related things.

Typedef Documentation

◆ const_item_type

template<typename Tag, typename TagsList>
using db::const_item_type
Initial value:
typename detail::const_item_type_impl<Tag, TagsList>::type

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.