PRISMS-PF Manual
Loading...
Searching...
No Matches
InvMManager< dim, degree, number > Class Template Reference

A little class that computes the element volume for our triangulation. More...

#include <invm_manager.h>

Public Types

using ScalarValue = dealii::VectorizedArray< number >
 
using VectorValue = dealii::Tensor< 1, dim, ScalarValue >
 

Public Member Functions

 InvMManager (const DoFManager< dim, degree > &dof_manager, const ConstraintManager< dim, degree, number > &constraint_manager, bool _calculate_scalar, bool _calculate_vector)
 Constructor.
 
void reinit (const DoFManager< dim, degree > &dof_manager, const ConstraintManager< dim, degree, number > &constraint_manager)
 
void compute_invm ()
 Recompute the invm vectors.
 
const SolutionVector< number > & get_invm (TensorRank rank, unsigned int relative_level) const
 Get the invm vector for a given rank and level.
 
const SolutionVector< number > & get_jxw (TensorRank rank, unsigned int relative_level) const
 Get the integrated jxw vector for a given rank and level.
 
const SolutionVector< number > & get_invm_sqrt (TensorRank rank, unsigned int relative_level) const
 Get the integrated jxw vector for a given rank and level.
 
std::vector< const SolutionVector< number > * > get_invm (const std::vector< FieldAttributes > &field_container, const std::set< unsigned int > &field_indices, unsigned int relative_level) const
 
std::vector< const SolutionVector< number > * > get_jxw (const std::vector< FieldAttributes > &field_container, const std::set< unsigned int > &field_indices, unsigned int relative_level) const
 
std::vector< const SolutionVector< number > * > get_invm_sqrt (const std::vector< FieldAttributes > &field_container, const std::set< unsigned int > &field_indices, unsigned int relative_level) const
 

Private Member Functions

void initialize ()
 Initialize.
 
void compute_scalar_invm ()
 Compute element volume for the triangulation.
 
void compute_vector_invm ()
 
void compute_local_scalar (const MatrixFree< dim, number > &_data, SolutionVector< number > &dst, const int &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 
void compute_local_vector (const MatrixFree< dim, number > &_data, SolutionVector< number > &dst, const int &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 
void invert (SolutionVector< number > &dst, const SolutionVector< number > &src) const
 
void sqrt (SolutionVector< number > &dst, const SolutionVector< number > &src) const
 

Private Attributes

std::vector< std::array< MatrixFree< dim, number >, 2 > > data
 Matrix-free object.
 
unsigned int num_levels
 
bool calculate_scalar = false
 
bool calculate_vector = false
 
std::vector< SolutionVector< number > > jxw_scalar
 Vector that stores element volumes.
 
std::vector< SolutionVector< number > > jxw_vector
 
std::vector< SolutionVector< number > > invm_scalar
 
std::vector< SolutionVector< number > > invm_vector
 
std::vector< SolutionVector< number > > invm_sqrt_scalar
 
std::vector< SolutionVector< number > > invm_sqrt_vector
 

Static Private Attributes

static const VectorValue one
 

Detailed Description

template<unsigned int dim, unsigned int degree, typename number>
class InvMManager< dim, degree, number >

A little class that computes the element volume for our triangulation.

Member Typedef Documentation

◆ ScalarValue

template<unsigned int dim, unsigned int degree, typename number >
using InvMManager< dim, degree, number >::ScalarValue = dealii::VectorizedArray<number>

◆ VectorValue

template<unsigned int dim, unsigned int degree, typename number >
using InvMManager< dim, degree, number >::VectorValue = dealii::Tensor<1, dim, ScalarValue>

Constructor & Destructor Documentation

◆ InvMManager()

template<unsigned int dim, unsigned int degree, typename number >
InvMManager< dim, degree, number >::InvMManager ( const DoFManager< dim, degree > &  dof_manager,
const ConstraintManager< dim, degree, number > &  constraint_manager,
bool  _calculate_scalar,
bool  _calculate_vector 
)
inlineexplicit

Constructor.

Parameters
dof_managerThe DoF manager to get the triangulation and DoF handlers from.
_calculate_scalarWhether to calculate the scalar invm (element volume).
_calculate_vectorWhether to calculate the vector invm (for vector fields).

Member Function Documentation

◆ compute_invm()

template<unsigned int dim, unsigned int degree, typename number >
void InvMManager< dim, degree, number >::compute_invm ( )
inline

Recompute the invm vectors.

◆ compute_local_scalar()

template<unsigned int dim, unsigned int degree, typename number >
void InvMManager< dim, degree, number >::compute_local_scalar ( const MatrixFree< dim, number > &  _data,
SolutionVector< number > &  dst,
const int src,
const std::pair< unsigned int, unsigned int > &  cell_range 
) const
inlineprivate

◆ compute_local_vector()

template<unsigned int dim, unsigned int degree, typename number >
void InvMManager< dim, degree, number >::compute_local_vector ( const MatrixFree< dim, number > &  _data,
SolutionVector< number > &  dst,
const int src,
const std::pair< unsigned int, unsigned int > &  cell_range 
) const
inlineprivate

◆ compute_scalar_invm()

template<unsigned int dim, unsigned int degree, typename number >
void InvMManager< dim, degree, number >::compute_scalar_invm ( )
inlineprivate

Compute element volume for the triangulation.

◆ compute_vector_invm()

template<unsigned int dim, unsigned int degree, typename number >
void InvMManager< dim, degree, number >::compute_vector_invm ( )
inlineprivate

◆ get_invm() [1/2]

template<unsigned int dim, unsigned int degree, typename number >
std::vector< const SolutionVector< number > * > InvMManager< dim, degree, number >::get_invm ( const std::vector< FieldAttributes > &  field_container,
const std::set< unsigned int > &  field_indices,
unsigned int  relative_level 
) const
inline

◆ get_invm() [2/2]

template<unsigned int dim, unsigned int degree, typename number >
const SolutionVector< number > & InvMManager< dim, degree, number >::get_invm ( TensorRank  rank,
unsigned int  relative_level 
) const
inline

Get the invm vector for a given rank and level.

Parameters
rankThe tensor rank of the field (scalar or vector).
relative_levelThe relative level to get the invm for.

◆ get_invm_sqrt() [1/2]

template<unsigned int dim, unsigned int degree, typename number >
std::vector< const SolutionVector< number > * > InvMManager< dim, degree, number >::get_invm_sqrt ( const std::vector< FieldAttributes > &  field_container,
const std::set< unsigned int > &  field_indices,
unsigned int  relative_level 
) const
inline

◆ get_invm_sqrt() [2/2]

template<unsigned int dim, unsigned int degree, typename number >
const SolutionVector< number > & InvMManager< dim, degree, number >::get_invm_sqrt ( TensorRank  rank,
unsigned int  relative_level 
) const
inline

Get the integrated jxw vector for a given rank and level.

Parameters
rankThe tensor rank of the field (scalar or vector).
relative_levelThe relative level to get the jxw for.

◆ get_jxw() [1/2]

template<unsigned int dim, unsigned int degree, typename number >
std::vector< const SolutionVector< number > * > InvMManager< dim, degree, number >::get_jxw ( const std::vector< FieldAttributes > &  field_container,
const std::set< unsigned int > &  field_indices,
unsigned int  relative_level 
) const
inline

◆ get_jxw() [2/2]

template<unsigned int dim, unsigned int degree, typename number >
const SolutionVector< number > & InvMManager< dim, degree, number >::get_jxw ( TensorRank  rank,
unsigned int  relative_level 
) const
inline

Get the integrated jxw vector for a given rank and level.

Parameters
rankThe tensor rank of the field (scalar or vector).
relative_levelThe relative level to get the jxw for.

◆ initialize()

template<unsigned int dim, unsigned int degree, typename number >
void InvMManager< dim, degree, number >::initialize ( )
inlineprivate

Initialize.

◆ invert()

template<unsigned int dim, unsigned int degree, typename number >
void InvMManager< dim, degree, number >::invert ( SolutionVector< number > &  dst,
const SolutionVector< number > &  src 
) const
inlineprivate

◆ reinit()

template<unsigned int dim, unsigned int degree, typename number >
void InvMManager< dim, degree, number >::reinit ( const DoFManager< dim, degree > &  dof_manager,
const ConstraintManager< dim, degree, number > &  constraint_manager 
)
inline

◆ sqrt()

template<unsigned int dim, unsigned int degree, typename number >
void InvMManager< dim, degree, number >::sqrt ( SolutionVector< number > &  dst,
const SolutionVector< number > &  src 
) const
inlineprivate

Member Data Documentation

◆ calculate_scalar

template<unsigned int dim, unsigned int degree, typename number >
bool InvMManager< dim, degree, number >::calculate_scalar = false
private

◆ calculate_vector

template<unsigned int dim, unsigned int degree, typename number >
bool InvMManager< dim, degree, number >::calculate_vector = false
private

◆ data

template<unsigned int dim, unsigned int degree, typename number >
std::vector<std::array<MatrixFree<dim, number>, 2> > InvMManager< dim, degree, number >::data
private

Matrix-free object.

◆ invm_scalar

template<unsigned int dim, unsigned int degree, typename number >
std::vector<SolutionVector<number> > InvMManager< dim, degree, number >::invm_scalar
private

◆ invm_sqrt_scalar

template<unsigned int dim, unsigned int degree, typename number >
std::vector<SolutionVector<number> > InvMManager< dim, degree, number >::invm_sqrt_scalar
private

◆ invm_sqrt_vector

template<unsigned int dim, unsigned int degree, typename number >
std::vector<SolutionVector<number> > InvMManager< dim, degree, number >::invm_sqrt_vector
private

◆ invm_vector

template<unsigned int dim, unsigned int degree, typename number >
std::vector<SolutionVector<number> > InvMManager< dim, degree, number >::invm_vector
private

◆ jxw_scalar

template<unsigned int dim, unsigned int degree, typename number >
std::vector<SolutionVector<number> > InvMManager< dim, degree, number >::jxw_scalar
private

Vector that stores element volumes.

◆ jxw_vector

template<unsigned int dim, unsigned int degree, typename number >
std::vector<SolutionVector<number> > InvMManager< dim, degree, number >::jxw_vector
private

◆ num_levels

template<unsigned int dim, unsigned int degree, typename number >
unsigned int InvMManager< dim, degree, number >::num_levels
private

◆ one

template<unsigned int dim, unsigned int degree, typename number >
const VectorValue InvMManager< dim, degree, number >::one
inlinestaticprivate
Initial value:
= []()
{
for (unsigned int i = 0; i < dim; ++i)
{
one1[i] = 1.0;
}
return one1;
}()
dealii::Tensor< 1, dim, ScalarValue > VectorValue
Definition invm_manager.h:31
@ Value
Use value of the variable as a criterion for refinement.
Definition grid_refiner_criterion.h:31

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