SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::eos::runtime::RuntimeRelationStorage< EOS, relations::Relation< OutputT, InputTs... > > Struct Template Reference

A specialization of the RuntimeRelationStorage trait for a relation. This specialization extracts the output and input quantity types from the relation and stores them in a tuple. More...

#include <details.hpp>

Collaboration diagram for serif::eos::runtime::RuntimeRelationStorage< EOS, relations::Relation< OutputT, InputTs... > >:
[legend]

Public Types

using RelationType = relations::Relation<OutputT, InputTs...>
 The relation type that this storage is for.
 

Static Public Member Functions

template<std::size_t... Indices>
static consteval std::uint64_t makePartialDerivativeMask (std::index_sequence< Indices... >)
 A helper function to create a bitmask of the partial derivatives that are supported by the EOS model for the relation. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers.
 

Static Public Attributes

static constexpr std::array< dimensions::runtime::ThermodynamicQuantityID, sizeof...(InputTs)> inputQuantityIDs
 A static array of the runtime quantity identifiers for the input quantities of the relation. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers.
 
static constexpr std::uint64_t partialDerivativeMask = makePartialDerivativeMask(std::index_sequence_for<InputTs...>{})
 A bitmask of the partial derivatives that are supported by the EOS model for the relation. Each bit corresponds to an input quantity, with the least significant bit corresponding to the first input quantity and the most significant bit corresponding to the last input quantity.
 
static constexpr dimensions::runtime::RuntimeRelationDescriptor descriptor
 A runtime relation descriptor for the relation. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers.
 

Detailed Description

template<typename EOS, typename OutputT, typename... InputTs>
struct serif::eos::runtime::RuntimeRelationStorage< EOS, relations::Relation< OutputT, InputTs... > >

A specialization of the RuntimeRelationStorage trait for a relation. This specialization extracts the output and input quantity types from the relation and stores them in a tuple.

Template Parameters
EOSThe EOS model type that supports the relation.
OutputTThe output quantity type of the relation.
InputTsThe input quantity types of the relation.

Member Typedef Documentation

◆ RelationType

template<typename EOS, typename OutputT, typename... InputTs>
using serif::eos::runtime::RuntimeRelationStorage< EOS, relations::Relation< OutputT, InputTs... > >::RelationType = relations::Relation<OutputT, InputTs...>

The relation type that this storage is for.

Member Function Documentation

◆ makePartialDerivativeMask()

template<typename EOS, typename OutputT, typename... InputTs>
template<std::size_t... Indices>
static consteval std::uint64_t serif::eos::runtime::RuntimeRelationStorage< EOS, relations::Relation< OutputT, InputTs... > >::makePartialDerivativeMask ( std::index_sequence< Indices... > )
inlinestaticnodiscardconsteval

A helper function to create a bitmask of the partial derivatives that are supported by the EOS model for the relation. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers.

Template Parameters
IndicesThe indices of the input quantities to check.
Returns
A bitmask of the partial derivatives that are supported by the EOS model for the relation.

Member Data Documentation

◆ descriptor

template<typename EOS, typename OutputT, typename... InputTs>
dimensions::runtime::RuntimeRelationDescriptor serif::eos::runtime::RuntimeRelationStorage< EOS, relations::Relation< OutputT, InputTs... > >::descriptor
staticconstexpr
Initial value:
{
.inputQuantities = std::span<const dimensions::runtime::ThermodynamicQuantityID>{inputQuantityIDs},
.partialDerivativeMask = partialDerivativeMask
}
constexpr ThermodynamicQuantityID thermodynamicQuantityID
Extract a compile time identifier from a thermodynamic quantity and project it into a runtime string_...
Definition concepts.hpp:38
static constexpr std::uint64_t partialDerivativeMask
A bitmask of the partial derivatives that are supported by the EOS model for the relation....
Definition details.hpp:203
static constexpr std::array< dimensions::runtime::ThermodynamicQuantityID, sizeof...(InputTs)> inputQuantityIDs
A static array of the runtime quantity identifiers for the input quantities of the relation....
Definition details.hpp:163

A runtime relation descriptor for the relation. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers.

◆ inputQuantityIDs

template<typename EOS, typename OutputT, typename... InputTs>
std::array<dimensions::runtime::ThermodynamicQuantityID, sizeof...(InputTs)> serif::eos::runtime::RuntimeRelationStorage< EOS, relations::Relation< OutputT, InputTs... > >::inputQuantityIDs
staticconstexpr
Initial value:

A static array of the runtime quantity identifiers for the input quantities of the relation. This is used to ensure that all relations in a catalog have unique runtime quantity identifiers.

◆ partialDerivativeMask

template<typename EOS, typename OutputT, typename... InputTs>
std::uint64_t serif::eos::runtime::RuntimeRelationStorage< EOS, relations::Relation< OutputT, InputTs... > >::partialDerivativeMask = makePartialDerivativeMask(std::index_sequence_for<InputTs...>{})
staticconstexpr

A bitmask of the partial derivatives that are supported by the EOS model for the relation. Each bit corresponds to an input quantity, with the least significant bit corresponding to the first input quantity and the most significant bit corresponding to the last input quantity.


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