SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > > Struct Template Reference

#include <plan.hpp>

Public Types

using Test = typename EquationT::Test
 
using Support = discretization::blocks::SupportOf<Test>
 
using Operands = utils::types::TypeList<O...>
 
using Columns = typename detail::Columns<Operands>::type
 
template<typename OperandT, typename ContributionT = EquationT>
using Form = typename detail::CouplingForm<OperandT, equations::TestOperandOf<ContributionT>>::type
 

Static Public Member Functions

template<typename OperandT>
static consteval std::size_t column_index ()
 Locate the unique coefficient column shared by every operation on a term.
 
template<typename OperandT>
static consteval int component_offset ()
 Locate the first scalar component of an operand in pointwise derivative storage.
 
template<typename FunctionT>
static void for_each_operand (FunctionT &&function)
 Visit all sampled operations in stable first-appearance order.
 
template<typename ContributionT, typename FunctionT>
static void for_each_input (FunctionT &&function)
 Visit only the operands needed by this contribution, retaining global sample indices.
 
template<typename FunctionT>
static void for_each_column (FunctionT &&function)
 Visit each physical coefficient vector once for binding and packed actions.
 

Static Public Attributes

static constexpr std::size_t operand_count = sizeof...(O)
 
static constexpr std::size_t column_count = equations::OperandValues<Columns>::count
 
static constexpr int component_count = (discretization::forms::component_count<discretization::forms::OperandValue<O>> + ... + 0)
 

Member Typedef Documentation

◆ Columns

template<VolumeEquation EquationT, typename... O>
using serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::Columns = typename detail::Columns<Operands>::type

◆ Form

template<VolumeEquation EquationT, typename... O>
template<typename OperandT, typename ContributionT = EquationT>
using serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::Form = typename detail::CouplingForm<OperandT, equations::TestOperandOf<ContributionT>>::type

◆ Operands

template<VolumeEquation EquationT, typename... O>
using serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::Operands = utils::types::TypeList<O...>

◆ Support

template<VolumeEquation EquationT, typename... O>
using serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::Support = discretization::blocks::SupportOf<Test>

◆ Test

template<VolumeEquation EquationT, typename... O>
using serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::Test = typename EquationT::Test

Member Function Documentation

◆ column_index()

template<VolumeEquation EquationT, typename... O>
template<typename OperandT>
static consteval std::size_t serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::column_index ( )
inlinestaticconsteval

Locate the unique coefficient column shared by every operation on a term.

◆ component_offset()

template<VolumeEquation EquationT, typename... O>
template<typename OperandT>
static consteval int serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::component_offset ( )
inlinestaticconsteval

Locate the first scalar component of an operand in pointwise derivative storage.

◆ for_each_column()

template<VolumeEquation EquationT, typename... O>
template<typename FunctionT>
static void serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::for_each_column ( FunctionT && function)
inlinestatic

Visit each physical coefficient vector once for binding and packed actions.

◆ for_each_input()

template<VolumeEquation EquationT, typename... O>
template<typename ContributionT, typename FunctionT>
static void serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::for_each_input ( FunctionT && function)
inlinestatic

Visit only the operands needed by this contribution, retaining global sample indices.

◆ for_each_operand()

template<VolumeEquation EquationT, typename... O>
template<typename FunctionT>
static void serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::for_each_operand ( FunctionT && function)
inlinestatic

Visit all sampled operations in stable first-appearance order.

Member Data Documentation

◆ column_count

template<VolumeEquation EquationT, typename... O>
std::size_t serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::column_count = equations::OperandValues<Columns>::count
staticconstexpr

◆ component_count

template<VolumeEquation EquationT, typename... O>
int serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::component_count = (discretization::forms::component_count<discretization::forms::OperandValue<O>> + ... + 0)
staticconstexpr

◆ operand_count

template<VolumeEquation EquationT, typename... O>
std::size_t serif::operators::EquationPlan< EquationT, utils::types::TypeList< O... > >::operand_count = sizeof...(O)
staticconstexpr

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