DiFfRG
Loading...
Searching...
No Matches
DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors > Class Template Reference

A class to describe how many FE functions, additional variables and extractors are used in a model. More...

#include <component_descriptor.hh>

Public Types

using FEFunction_Descriptor = _FEFunctionDescriptor
 
using Variable_Descriptor = _VariableDescriptor
 
using Extractor_Descriptor = _ExtractorDescriptor
 

Public Member Functions

 ComponentDescriptor ()
 
void add_dependency (uint dependent_subsystem, uint dependent, uint independent_subsystem, uint independent)
 Add a dependency between two FE subsystems, i.e. for LDG constructions.
 
void set_jacobian_constant (uint dependent_subsystem, uint independent_subsystem)
 
const CouplingListldg_couplings (uint dependent_subsystem, uint independent_subsystem) const
 
bool jacobians_constant (uint dependent_subsystem, uint independent_subsystem) const
 

Static Public Member Functions

static constexpr uint count_fe_functions (uint subsystem=0)
 
static constexpr uint count_variables ()
 
static constexpr uint count_extractors ()
 
static constexpr uint count_fe_subsystems ()
 
template<typename DoFH >
static std::vector< uintget_component_block_structure (const DoFH &dofh)
 

Private Types

using CouplingList = std::vector<std::array<uint, 2>>
 
template<typename T >
using SubsystemMatrix = std::array<std::array<T, n_fe_subsystems>, n_fe_subsystems>
 

Private Attributes

SubsystemMatrix< CouplingListcouplings
 
SubsystemMatrix< bool > j_const
 

Static Private Attributes

static constexpr uint n_fe_subsystems = sizeof...(LDGDescriptors) + 1
 
static constexpr std::array< uint, n_fe_subsystemsn_components
 
static constexpr uint n_variables = Variable_Descriptor::total_size
 
static constexpr uint n_extractors = Extractor_Descriptor::total_size
 

Detailed Description

template<typename _FEFunctionDescriptor, typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
class DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >

A class to describe how many FE functions, additional variables and extractors are used in a model.

Template Parameters
components_A DiFfRG::NumberFEFunctions object, which describes how many FE functions are used.
variables_A DiFfRG::NumberVariables object, which describes how many additional variables are used.
extractors_A DiFfRG::NumberExtractors object, which describes how many extractors are used.

Member Typedef Documentation

◆ CouplingList

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
using DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::CouplingList = std::vector<std::array<uint, 2>>
private

◆ Extractor_Descriptor

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
using DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::Extractor_Descriptor = _ExtractorDescriptor

◆ FEFunction_Descriptor

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
using DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::FEFunction_Descriptor = _FEFunctionDescriptor

◆ SubsystemMatrix

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
template<typename T >
using DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::SubsystemMatrix = std::array<std::array<T, n_fe_subsystems>, n_fe_subsystems>
private

◆ Variable_Descriptor

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
using DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::Variable_Descriptor = _VariableDescriptor

Constructor & Destructor Documentation

◆ ComponentDescriptor()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::ComponentDescriptor ( )
inline

Member Function Documentation

◆ add_dependency()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
void DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::add_dependency ( uint dependent_subsystem,
uint dependent,
uint independent_subsystem,
uint independent )
inline

Add a dependency between two FE subsystems, i.e. for LDG constructions.

Parameters
dependent_subsystemThe subsystem that depends on the other.
dependentThe index of the dependent variable in the dependent subsystem.
independent_subsystemThe subsystem that is independent.
independentThe index of the independent variable on which the dependent depends.

◆ count_extractors()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
static constexpr uint DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::count_extractors ( )
inlinestaticconstexpr

◆ count_fe_functions()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
static constexpr uint DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::count_fe_functions ( uint subsystem = 0)
inlinestaticconstexpr

◆ count_fe_subsystems()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
static constexpr uint DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::count_fe_subsystems ( )
inlinestaticconstexpr

◆ count_variables()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
static constexpr uint DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::count_variables ( )
inlinestaticconstexpr

◆ get_component_block_structure()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
template<typename DoFH >
static std::vector< uint > DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::get_component_block_structure ( const DoFH & dofh)
inlinestatic

◆ jacobians_constant()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
bool DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::jacobians_constant ( uint dependent_subsystem,
uint independent_subsystem ) const
inline

◆ ldg_couplings()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
const CouplingList & DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::ldg_couplings ( uint dependent_subsystem,
uint independent_subsystem ) const
inline

◆ set_jacobian_constant()

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
void DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::set_jacobian_constant ( uint dependent_subsystem,
uint independent_subsystem )
inline

Member Data Documentation

◆ couplings

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
SubsystemMatrix<CouplingList> DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::couplings
private

◆ j_const

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
SubsystemMatrix<bool> DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::j_const
private

◆ n_components

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
std::array<uint, n_fe_subsystems> DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::n_components
staticconstexprprivate
Initial value:
{
{FEFunction_Descriptor::total_size, LDGDescriptors::total_size...}}

◆ n_extractors

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
uint DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::n_extractors = Extractor_Descriptor::total_size
staticconstexprprivate

◆ n_fe_subsystems

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
uint DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::n_fe_subsystems = sizeof...(LDGDescriptors) + 1
staticconstexprprivate

◆ n_variables

template<typename _FEFunctionDescriptor , typename _VariableDescriptor = VariableDescriptor<>, typename _ExtractorDescriptor = ExtractorDescriptor<>, typename... LDGDescriptors>
uint DiFfRG::ComponentDescriptor< _FEFunctionDescriptor, _VariableDescriptor, _ExtractorDescriptor, LDGDescriptors >::n_variables = Variable_Descriptor::total_size
staticconstexprprivate

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