Reference documentation for deal.II version 9.1.0-pre
Public Member Functions | Private Member Functions | List of all members
TensorProductMatrixSymmetricSum< dim, VectorizedArray< Number >, size > Class Template Reference

#include <deal.II/lac/tensor_product_matrix.h>

Inheritance diagram for TensorProductMatrixSymmetricSum< dim, VectorizedArray< Number >, size >:
[legend]

Public Member Functions

 TensorProductMatrixSymmetricSum ()=default
 
 TensorProductMatrixSymmetricSum (const std::array< Table< 2, VectorizedArray< Number >>, dim > &mass_matrix, const std::array< Table< 2, VectorizedArray< Number >>, dim > &derivative_matrix)
 
 TensorProductMatrixSymmetricSum (const Table< 2, VectorizedArray< Number >> &mass_matrix, const Table< 2, VectorizedArray< Number >> &derivative_matrix)
 
void reinit (const std::array< Table< 2, VectorizedArray< Number >>, dim > &mass_matrix, const std::array< Table< 2, VectorizedArray< Number >>, dim > &derivative_matrix)
 
void reinit (const Table< 2, VectorizedArray< Number >> &mass_matrix, const Table< 2, VectorizedArray< Number >> &derivative_matrix)
 
- Public Member Functions inherited from TensorProductMatrixSymmetricSumBase< dim, VectorizedArray< Number >, size >
unsigned int m () const
 
unsigned int n () const
 
void vmult (const ArrayView< VectorizedArray< Number > > &dst, const ArrayView< const VectorizedArray< Number > > &src) const
 
void apply_inverse (const ArrayView< VectorizedArray< Number > > &dst, const ArrayView< const VectorizedArray< Number > > &src) const
 

Private Member Functions

template<typename MatrixArray >
void reinit_impl (MatrixArray &&mass_matrix, MatrixArray &&derivative_matrix)
 

Additional Inherited Members

- Protected Member Functions inherited from TensorProductMatrixSymmetricSumBase< dim, VectorizedArray< Number >, size >
 TensorProductMatrixSymmetricSumBase ()=default
 
- Protected Attributes inherited from TensorProductMatrixSymmetricSumBase< dim, VectorizedArray< Number >, size >
std::array< Table< 2, VectorizedArray< Number > >, dim > mass_matrix
 
std::array< Table< 2, VectorizedArray< Number > >, dim > derivative_matrix
 
std::array< AlignedVector< VectorizedArray< Number > >, dim > eigenvalues
 
std::array< Table< 2, VectorizedArray< Number > >, dim > eigenvectors
 

Detailed Description

template<int dim, typename Number, int size>
class TensorProductMatrixSymmetricSum< dim, VectorizedArray< Number >, size >

This is the template specialization for VectorizedArray<Number> being the arithmetic template. For a detailed description see the main documentation of the generic TensorProductMatrixSymmetricSum class.

Author
Martin Kronbichler and Julius Witte, 2017

Definition at line 319 of file tensor_product_matrix.h.

Constructor & Destructor Documentation

template<int dim, typename Number , int size>
TensorProductMatrixSymmetricSum< dim, VectorizedArray< Number >, size >::TensorProductMatrixSymmetricSum ( )
default

Default constructor.

template<int dim, typename Number , int size>
TensorProductMatrixSymmetricSum< dim, VectorizedArray< Number >, size >::TensorProductMatrixSymmetricSum ( const std::array< Table< 2, VectorizedArray< Number >>, dim > &  mass_matrix,
const std::array< Table< 2, VectorizedArray< Number >>, dim > &  derivative_matrix 
)

Constructor that is equivalent to the empty constructor and immediately calling reinit(const std::array<Table<2,VectorizedArray<Number> >, dim>&,const std::array<Table<2,VectorizedArray<Number> >, dim>&).

template<int dim, typename Number , int size>
TensorProductMatrixSymmetricSum< dim, VectorizedArray< Number >, size >::TensorProductMatrixSymmetricSum ( const Table< 2, VectorizedArray< Number >> &  mass_matrix,
const Table< 2, VectorizedArray< Number >> &  derivative_matrix 
)

Constructor that is equivalent to the empty constructor and immediately calling reinit(const Table<2,VectorizedArray<Number> >&,const Table<2,VectorizedArray<Number> >&).

Member Function Documentation

template<int dim, typename Number , int size>
void TensorProductMatrixSymmetricSum< dim, VectorizedArray< Number >, size >::reinit ( const std::array< Table< 2, VectorizedArray< Number >>, dim > &  mass_matrix,
const std::array< Table< 2, VectorizedArray< Number >>, dim > &  derivative_matrix 
)

Initializes the tensor product matrix by copying the arrays of 1D mass matrices mass_matrix and 1D derivative matrices derivative_matrix into its base class counterparts, respectively, and by assembling the regarding generalized eigenvalues and eigenvectors in TensorProductMatrixSymmetricSumBase::eigenvalues and TensorProductMatrixSymmetricSumBase::eigenvectors, respectively. Note that the current implementation requires each \(M_{d}\) to be symmetric and positive definite and every \(A_{d}\) to be symmetric and invertible but not necessarily positive definite.

template<int dim, typename Number , int size>
void TensorProductMatrixSymmetricSum< dim, VectorizedArray< Number >, size >::reinit ( const Table< 2, VectorizedArray< Number >> &  mass_matrix,
const Table< 2, VectorizedArray< Number >> &  derivative_matrix 
)

This function is equivalent to the previous reinit() except that we consider the same 1D mass matrix mass_matrix and the same 1D derivative matrix derivative_matrix for each tensor direction.

template<int dim, typename Number , int size>
template<typename MatrixArray >
void TensorProductMatrixSymmetricSum< dim, VectorizedArray< Number >, size >::reinit_impl ( MatrixArray &&  mass_matrix,
MatrixArray &&  derivative_matrix 
)
private

A generic implementation of all reinit() functions based on perfect forwarding, that allows to pass lvalue as well as rvalue arguments.

Template Parameters
MatrixArrayHas to be convertible to the underlying type of TensorProductMatrixSymmetricSumBase::mass_matrix and TensorProductMatrixSymmetricSumBase::derivative_matrix.

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