Flow123d  DF_patch_fevalues-e45dfbd
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
PatchFEValues< spacedim > Class Template Reference

#include <fe_values.hh>

Inheritance diagram for PatchFEValues< spacedim >:
Inheritance graph
[legend]
Collaboration diagram for PatchFEValues< spacedim >:
Collaboration graph
[legend]

Classes

class  ElementFEData
 

Public Member Functions

 PatchFEValues (unsigned int max_size=0)
 Constructor, set maximal number of elements on patch. More...
 
void reinit (PatchElementsList patch_elements)
 Reinit data. More...
 
unsigned int used_size () const
 
unsigned int max_size () const
 
void get_cell (const unsigned int patch_cell_idx)
 Set element that is selected for processing. Element is given by index on patch. More...
 
void get_side (unsigned int patch_cell_idx, unsigned int side_idx)
 Set element and side that are selected for processing. Element is given by index on patch. More...
 
double shape_value (const unsigned int function_no, const unsigned int point_no) const
 Return the value of the function_no-th shape function at the point_no-th quadrature point. More...
 
arma::vec::fixed< spacedim > shape_grad (const unsigned int function_no, const unsigned int point_no) const
 Return the gradient of the function_no-th shape function at the point_no-th quadrature point. More...
 
double shape_value_component (const unsigned int function_no, const unsigned int point_no, const unsigned int comp) const
 Return the value of the function_no-th shape function at the point_no-th quadrature point. More...
 
arma::vec::fixed< spacedim > shape_grad_component (const unsigned int function_no, const unsigned int point_no, const unsigned int comp) const
 Return the gradient of the function_no-th shape function at the point_no-th quadrature point. More...
 
void set_shape_value (unsigned int i_point, unsigned int i_func_comp, double val)
 
void set_shape_gradient (unsigned int i_point, unsigned int i_func_comp, arma::vec::fixed< spacedim > val)
 
double determinant (const unsigned int point_no)
 Return the relative volume change of the cell (Jacobian determinant). More...
 
double JxW (const unsigned int point_no)
 Return the product of Jacobian determinant and the quadrature weight at given quadrature point. More...
 
arma::vec::fixed< spacedim > normal_vector (unsigned int point_no)
 Returns the normal vector to a side at given quadrature point. More...
 
- Public Member Functions inherited from FEValuesBase< PatchFEValues< 3 >, 3 >
 FEValuesBase ()
 Default constructor with postponed initialization. More...
 
void initialize (Quadrature &_quadrature, FiniteElement< DIM > &_fe, UpdateFlags _flags)
 Initialize structures and calculates cell-independent data. More...
 
void allocate (Quadrature &_quadrature, FiniteElement< DIM > &_fe, UpdateFlags flags)
 Allocates space for computed data. More...
 
unsigned int n_points () const
 Returns the number of quadrature points. More...
 
unsigned int n_dofs () const
 Returns the number of shape functions. More...
 
unsigned int dim () const
 Return dimension of reference space. More...
 
const FEValuesViews::Scalar< PatchFEValues< 3 >, spacedim > & scalar_view (unsigned int i) const
 Accessor to scalar values of multicomponent FE. More...
 
const FEValuesViews::Vector< PatchFEValues< 3 >, spacedim > & vector_view (unsigned int i) const
 Accessor to vector values of multicomponent FE. More...
 
const FEValuesViews::Tensor< PatchFEValues< 3 >, spacedim > & tensor_view (unsigned int i) const
 Accessor to tensor values of multicomponent FE. More...
 
void fill_data_specialized (const ElementValues< spacedim > &elm_values, const typename FEValuesBase< PatchFEValues< 3 >, spacedim >::FEInternalData &fe_data)
 

Protected Types

enum  MeshObjectType { ElementFE = 0 , SideFE = 1 }
 

Protected Member Functions

void resize (unsigned int max_size)
 Set size of ElementFEData. Important: Use only during the initialization of FESystem ! More...
 
void allocate_in (unsigned int q_dim) override
 Implement FEValuesBase::allocate_in. More...
 
void initialize_in (Quadrature &q, unsigned int dim) override
 Implement FEValuesBase::initialize_in. More...
 
void init_fe_val_vec () override
 Implement FEValuesBase::initialize_in. More...
 
- Protected Member Functions inherited from FEValuesBase< PatchFEValues< 3 >, 3 >
void fill_data (const ElementValues< spacedim > &elm_values, const FEInternalData &fe_data)
 Computes the shape function values and gradients on the actual cell and fills the FEValues structure. More...
 
void fill_data_specialized (const ElementValues< spacedim > &elm_values, const FEInternalData &fe_data)
 Computes the shape function values and gradients on the actual cell and fills the FEValues structure. Specialized variant of previous method for different FETypes given by template parameter. More...
 
std::shared_ptr< typename FEValuesBase< PatchFEValues< 3 >, spacedim >::FEInternalData > init_fe_data (const FiniteElement< DIM > &fe, const Quadrature &q)
 Precompute finite element data on reference element. More...
 

Protected Attributes

unsigned int patch_data_idx_
 Patch index of processed element / side. More...
 
std::map< unsigned int, unsigned int > element_patch_map_
 Map of element patch indexes to element_data_. More...
 
std::vector< ElementFEDataelement_data_
 Data of elements / sides on patch. More...
 
unsigned int used_size_
 Number of elements / sides on patch. Must be less or equal to size of element_data vector. More...
 
unsigned int max_n_elem_
 Maximal number of elements on patch. More...
 
MeshObjectType object_type_
 Distinguishes using of PatchFEValues for storing data of elements or sides. More...
 
- Protected Attributes inherited from FEValuesBase< PatchFEValues< 3 >, 3 >
unsigned int dim_
 Dimension of reference space. More...
 
unsigned int n_points_
 Number of integration points. More...
 
unsigned int n_dofs_
 Number of finite element dofs. More...
 
FEType fe_type_
 Type of finite element (scalar, vector, tensor). More...
 
std::vector< std::vector< unsigned int > > fe_sys_dofs_
 Dof indices of FESystem sub-elements. More...
 
std::vector< unsigned int > fe_sys_n_components_
 Numbers of components of FESystem sub-elements in reference space. More...
 
std::vector< unsigned int > fe_sys_n_space_components_
 Numbers of components of FESystem sub-elements in real space. More...
 
UpdateFlags update_flags
 Flags that indicate which finite element quantities are to be computed. More...
 
std::vector< PatchFEValues< 3 > > fe_values_vec
 Vector of FEValues for sub-elements of FESystem. More...
 
unsigned int n_components_
 Number of components of the FE. More...
 
ViewsCache views_cache_
 Auxiliary storage of FEValuesViews accessors. More...
 
std::shared_ptr< FEInternalData > fe_data_
 Precomputed finite element data. More...
 
std::vector< shared_ptr< FEInternalData > > side_fe_data_
 Precomputed FE data (shape functions on reference element) for all side quadrature points. More...
 
PatchFEValues< 3 > * fv_
 Helper object, we need its for ViewsCache initialization. More...
 

Friends

class MapScalar< PatchFEValues< spacedim >, spacedim >
 
class MapPiola< PatchFEValues< spacedim >, spacedim >
 
class MapContravariant< PatchFEValues< spacedim >, spacedim >
 
class MapVector< PatchFEValues< spacedim >, spacedim >
 
class MapTensor< PatchFEValues< spacedim >, spacedim >
 
class MapSystem< PatchFEValues< spacedim >, spacedim >
 

Detailed Description

template<unsigned int spacedim = 3>
class PatchFEValues< spacedim >

Definition at line 498 of file fe_values.hh.

Member Enumeration Documentation

◆ MeshObjectType

template<unsigned int spacedim = 3>
enum PatchFEValues::MeshObjectType
protected
Enumerator
ElementFE 
SideFE 

Definition at line 643 of file fe_values.hh.

Constructor & Destructor Documentation

◆ PatchFEValues()

template<unsigned int spacedim = 3>
PatchFEValues< spacedim >::PatchFEValues ( unsigned int  max_size = 0)

Constructor, set maximal number of elements on patch.

Member Function Documentation

◆ allocate_in()

template<unsigned int spacedim = 3>
void PatchFEValues< spacedim >::allocate_in ( unsigned int  q_dim)
overrideprotectedvirtual

◆ determinant()

template<unsigned int spacedim = 3>
double PatchFEValues< spacedim >::determinant ( const unsigned int  point_no)
inline

Return the relative volume change of the cell (Jacobian determinant).

If dim_==spacedim then the sign may be negative, otherwise the result is a positive number.

Parameters
point_noNumber of the quadrature point.

Definition at line 610 of file fe_values.hh.

◆ get_cell()

template<unsigned int spacedim = 3>
void PatchFEValues< spacedim >::get_cell ( const unsigned int  patch_cell_idx)
inline

Set element that is selected for processing. Element is given by index on patch.

Definition at line 515 of file fe_values.hh.

Here is the caller graph for this function:

◆ get_side()

template<unsigned int spacedim = 3>
void PatchFEValues< spacedim >::get_side ( unsigned int  patch_cell_idx,
unsigned int  side_idx 
)
inline

Set element and side that are selected for processing. Element is given by index on patch.

Definition at line 520 of file fe_values.hh.

◆ init_fe_val_vec()

template<unsigned int spacedim = 3>
void PatchFEValues< spacedim >::init_fe_val_vec ( )
overrideprotectedvirtual

◆ initialize_in()

template<unsigned int spacedim = 3>
void PatchFEValues< spacedim >::initialize_in ( Quadrature q,
unsigned int  dim 
)
overrideprotectedvirtual

◆ JxW()

template<unsigned int spacedim = 3>
double PatchFEValues< spacedim >::JxW ( const unsigned int  point_no)
inline

Return the product of Jacobian determinant and the quadrature weight at given quadrature point.

Parameters
point_noNumber of the quadrature point.

Definition at line 622 of file fe_values.hh.

Here is the caller graph for this function:

◆ max_size()

template<unsigned int spacedim = 3>
unsigned int PatchFEValues< spacedim >::max_size ( ) const
inline

Definition at line 510 of file fe_values.hh.

Here is the caller graph for this function:

◆ normal_vector()

template<unsigned int spacedim = 3>
arma::vec::fixed<spacedim> PatchFEValues< spacedim >::normal_vector ( unsigned int  point_no)
inline

Returns the normal vector to a side at given quadrature point.

Parameters
point_noNumber of the quadrature point.

Definition at line 635 of file fe_values.hh.

◆ reinit()

template<unsigned int spacedim = 3>
void PatchFEValues< spacedim >::reinit ( PatchElementsList  patch_elements)

Reinit data.

Here is the caller graph for this function:

◆ resize()

template<unsigned int spacedim = 3>
void PatchFEValues< spacedim >::resize ( unsigned int  max_size)
inlineprotected

Set size of ElementFEData. Important: Use only during the initialization of FESystem !

Definition at line 666 of file fe_values.hh.

◆ set_shape_gradient()

template<unsigned int spacedim = 3>
void PatchFEValues< spacedim >::set_shape_gradient ( unsigned int  i_point,
unsigned int  i_func_comp,
arma::vec::fixed< spacedim >  val 
)
inline

Set shape gradient val of the i_point and i_func_comp.

Definition at line 597 of file fe_values.hh.

◆ set_shape_value()

template<unsigned int spacedim = 3>
void PatchFEValues< spacedim >::set_shape_value ( unsigned int  i_point,
unsigned int  i_func_comp,
double  val 
)
inline

Set shape value val of the i_point and i_func_comp.

Definition at line 589 of file fe_values.hh.

◆ shape_grad()

template<unsigned int spacedim = 3>
arma::vec::fixed<spacedim> PatchFEValues< spacedim >::shape_grad ( const unsigned int  function_no,
const unsigned int  point_no 
) const
inline

Return the gradient of the function_no-th shape function at the point_no-th quadrature point.

Parameters
function_noNumber of the shape function.
point_noNumber of the quadrature point.

Definition at line 546 of file fe_values.hh.

◆ shape_grad_component()

template<unsigned int spacedim = 3>
arma::vec::fixed<spacedim> PatchFEValues< spacedim >::shape_grad_component ( const unsigned int  function_no,
const unsigned int  point_no,
const unsigned int  comp 
) const

Return the gradient of the function_no-th shape function at the point_no-th quadrature point.

For vectorial finite elements.

Parameters
function_noNumber of the shape function.
point_noNumber of the quadrature point.

◆ shape_value()

template<unsigned int spacedim = 3>
double PatchFEValues< spacedim >::shape_value ( const unsigned int  function_no,
const unsigned int  point_no 
) const
inline

Return the value of the function_no-th shape function at the point_no-th quadrature point.

Parameters
function_noNumber of the shape function.
point_noNumber of the quadrature point.

Definition at line 531 of file fe_values.hh.

Here is the caller graph for this function:

◆ shape_value_component()

template<unsigned int spacedim = 3>
double PatchFEValues< spacedim >::shape_value_component ( const unsigned int  function_no,
const unsigned int  point_no,
const unsigned int  comp 
) const
inline

Return the value of the function_no-th shape function at the point_no-th quadrature point.

For vectorial finite elements.

Parameters
function_noNumber of the shape function.
point_noNumber of the quadrature point.

Definition at line 562 of file fe_values.hh.

◆ used_size()

template<unsigned int spacedim = 3>
unsigned int PatchFEValues< spacedim >::used_size ( ) const
inline

Definition at line 506 of file fe_values.hh.

Friends And Related Function Documentation

◆ MapContravariant< PatchFEValues< spacedim >, spacedim >

template<unsigned int spacedim = 3>
friend class MapContravariant< PatchFEValues< spacedim >, spacedim >
friend

Definition at line 695 of file fe_values.hh.

◆ MapPiola< PatchFEValues< spacedim >, spacedim >

template<unsigned int spacedim = 3>
friend class MapPiola< PatchFEValues< spacedim >, spacedim >
friend

Definition at line 695 of file fe_values.hh.

◆ MapScalar< PatchFEValues< spacedim >, spacedim >

template<unsigned int spacedim = 3>
friend class MapScalar< PatchFEValues< spacedim >, spacedim >
friend

Definition at line 695 of file fe_values.hh.

◆ MapSystem< PatchFEValues< spacedim >, spacedim >

template<unsigned int spacedim = 3>
friend class MapSystem< PatchFEValues< spacedim >, spacedim >
friend

Definition at line 695 of file fe_values.hh.

◆ MapTensor< PatchFEValues< spacedim >, spacedim >

template<unsigned int spacedim = 3>
friend class MapTensor< PatchFEValues< spacedim >, spacedim >
friend

Definition at line 695 of file fe_values.hh.

◆ MapVector< PatchFEValues< spacedim >, spacedim >

template<unsigned int spacedim = 3>
friend class MapVector< PatchFEValues< spacedim >, spacedim >
friend

Definition at line 695 of file fe_values.hh.

Member Data Documentation

◆ element_data_

template<unsigned int spacedim = 3>
std::vector<ElementFEData> PatchFEValues< spacedim >::element_data_
protected

Data of elements / sides on patch.

Definition at line 686 of file fe_values.hh.

◆ element_patch_map_

template<unsigned int spacedim = 3>
std::map<unsigned int, unsigned int> PatchFEValues< spacedim >::element_patch_map_
protected

Map of element patch indexes to element_data_.

Definition at line 683 of file fe_values.hh.

◆ max_n_elem_

template<unsigned int spacedim = 3>
unsigned int PatchFEValues< spacedim >::max_n_elem_
protected

Maximal number of elements on patch.

Definition at line 692 of file fe_values.hh.

◆ object_type_

template<unsigned int spacedim = 3>
MeshObjectType PatchFEValues< spacedim >::object_type_
protected

Distinguishes using of PatchFEValues for storing data of elements or sides.

Definition at line 695 of file fe_values.hh.

◆ patch_data_idx_

template<unsigned int spacedim = 3>
unsigned int PatchFEValues< spacedim >::patch_data_idx_
protected

Patch index of processed element / side.

Definition at line 680 of file fe_values.hh.

◆ used_size_

template<unsigned int spacedim = 3>
unsigned int PatchFEValues< spacedim >::used_size_
protected

Number of elements / sides on patch. Must be less or equal to size of element_data vector.

Definition at line 689 of file fe_values.hh.


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