PRISMS-PF Manual
Loading...
Searching...
No Matches
FieldContainer< dim, degree, number >::FEEValuationDeps< Rank > Struct Template Reference

Struct to hold the relevant dealii::FEEvaluation for a given solution block index. More...

#include <field_container.h>

Public Types

using FEEDepPair = std::pair< FEEval< Rank >, EvalFlags >
 dealii::FEEvaluation object and the evaluation flags.
 
using FEEDepPairPtr = std::shared_ptr< FEEDepPair >
 Pointer the the FEEDepPair. We have to use ptrs because we don't want to construct fields we don't need.
 

Public Member Functions

 FEEValuationDeps ()=default
 Default constructor.
 
 FEEValuationDeps (const Dependency &dependency, const std::pair< const SolutionLevel< dim, number > *, unsigned int > &mf_id_pair, bool is_dst)
 
template<DependencyType type>
const FEEval< Rank > & get () const
 
template<DependencyType type>
FEEval< Rank > & get ()
 
const FEEval< Rank > & get (DependencyType type) const
 
FEEval< Rank > & get (DependencyType type)
 
void reinit (unsigned int cell)
 
void eval (const BlockVector< number > *_src_solutions)
 
void reinit_and_eval (unsigned int cell, const BlockVector< number > *_src_solutions)
 
void integrate ()
 
void distribute (BlockVector< number > *dst_solutions)
 
void integrate_and_distribute (BlockVector< number > *dst_solutions)
 
template<DependencyType Type>
DEAL_II_ALWAYS_INLINE const FieldContainer< dim, degree, number >::template FEEval< Rank > & get () const
 
template<DependencyType Type>
DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template FEEval< Rank > & get ()
 

Public Attributes

FEEDepPairPtr fe_eval
 FEEvaluation for the current solution.
 
FEEDepPairPtr fe_eval_src_dst
 FEEvaluation for the src and dst solutions.
 
std::vector< FEEDepPairPtrfe_eval_old
 Collection of FEEvaluation for old solutions (< n -1 state).
 
EvalFlags integration_flags = EvalFlags::nothing
 Destination integration flags. We use this to integrate value and gradient terms, if they exist.
 
const SolutionLevel< dim, number > * solution_level = nullptr
 The solution group.
 
unsigned int block_index = -1
 The solution block index.
 

Detailed Description

template<unsigned int dim, unsigned int degree, typename number>
template<TensorRank Rank>
struct FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >

Struct to hold the relevant dealii::FEEvaluation for a given solution block index.

Member Typedef Documentation

◆ FEEDepPair

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
using FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::FEEDepPair = std::pair<FEEval<Rank>, EvalFlags>

dealii::FEEvaluation object and the evaluation flags.

◆ FEEDepPairPtr

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
using FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::FEEDepPairPtr = std::shared_ptr<FEEDepPair>

Pointer the the FEEDepPair. We have to use ptrs because we don't want to construct fields we don't need.

Constructor & Destructor Documentation

◆ FEEValuationDeps() [1/2]

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::FEEValuationDeps ( )
default

Default constructor.

◆ FEEValuationDeps() [2/2]

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::FEEValuationDeps ( const Dependency dependency,
const std::pair< const SolutionLevel< dim, number > *, unsigned int > &  mf_id_pair,
bool  is_dst 
)

Member Function Documentation

◆ distribute()

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
void FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::distribute ( BlockVector< number > *  dst_solutions)
inline

◆ eval()

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
void FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::eval ( const BlockVector< number > *  _src_solutions)
inline

◆ get() [1/6]

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
template<DependencyType type>
FEEval< Rank > & FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::get ( )

◆ get() [2/6]

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
template<DependencyType Type>
DEAL_II_ALWAYS_INLINE FieldContainer< dim, degree, number >::template FEEval< Rank > & FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::get ( )
inline

◆ get() [3/6]

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
template<DependencyType type>
const FEEval< Rank > & FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::get ( ) const

◆ get() [4/6]

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
template<DependencyType Type>
DEAL_II_ALWAYS_INLINE const FieldContainer< dim, degree, number >::template FEEval< Rank > & FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::get ( ) const
inline

◆ get() [5/6]

◆ get() [6/6]

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
DEAL_II_ALWAYS_INLINE const FieldContainer< dim, degree, number >::template FEEval< Rank > & FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::get ( DependencyType  type) const
inline

◆ integrate()

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
void FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::integrate ( )
inline

◆ integrate_and_distribute()

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
void FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::integrate_and_distribute ( BlockVector< number > *  dst_solutions)
inline

◆ reinit()

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
void FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::reinit ( unsigned int  cell)
inline

◆ reinit_and_eval()

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
void FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::reinit_and_eval ( unsigned int  cell,
const BlockVector< number > *  _src_solutions 
)
inline

Member Data Documentation

◆ block_index

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
unsigned int FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::block_index = -1

The solution block index.

This is the index that tells dealii::FEEvaluation the corresponding dealii::DoFHandler, dealii::AffineConstraints, and dealii::Quadrature to use from the dealii::MatrixFree.

◆ fe_eval

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
FEEDepPairPtr FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::fe_eval

FEEvaluation for the current solution.

◆ fe_eval_old

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
std::vector<FEEDepPairPtr> FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::fe_eval_old

Collection of FEEvaluation for old solutions (< n -1 state).

◆ fe_eval_src_dst

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
FEEDepPairPtr FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::fe_eval_src_dst

FEEvaluation for the src and dst solutions.

◆ integration_flags

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
EvalFlags FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::integration_flags = EvalFlags::nothing

Destination integration flags. We use this to integrate value and gradient terms, if they exist.

◆ solution_level

template<unsigned int dim, unsigned int degree, typename number >
template<TensorRank Rank>
const SolutionLevel<dim, number>* FieldContainer< dim, degree, number >::FEEValuationDeps< Rank >::solution_level = nullptr

The solution group.

Remarks
It would look nicer to just use the SolutionIndexer, but this way decreases indexing, increasing performance.

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