deal.II version GIT relicensing-2250-g88cb8ba3cb 2024-12-13 12:20:00+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number > Class Template Reference

#include <deal.II/matrix_free/mapping_data_on_the_fly.h>

Inheritance diagram for internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >:
Inheritance graph
[legend]

Public Member Functions

 MappingDataOnTheFly ()=default
 
 MappingDataOnTheFly (const Mapping< dim > &mapping, const Quadrature< 1 > &quadrature, const UpdateFlags update_flags)
 
 MappingDataOnTheFly (const Quadrature< 1 > &quadrature, const UpdateFlags update_flags)
 
void reinit (typename ::Triangulation< dim >::cell_iterator cell)
 
bool is_initialized () const
 
typename::Triangulation< dim >::cell_iterator get_cell () const
 
const ::FEValues< dim > & get_fe_values () const
 
const MappingInfoStorage< dim, dim, Number > & get_data_storage () const
 
MappingInfoStorage< dim, dim, Number > & get_data_storage ()
 
const Quadrature< 1 > & get_quadrature () const
 

Private Attributes

typename::Triangulation< dim >::cell_iterator present_cell
 
std::unique_ptr< FE_Nothing< dim > > fe_dummy
 
std::unique_ptr<::FEValues< dim > > fe_values
 
const Quadrature< 1 > quadrature_1d
 
MappingInfoStorage< dim, dim, Number > mapping_info_storage
 

Detailed Description

template<int dim, typename Number>
class internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >

This class provides evaluated mapping information using standard deal.II information in a form that FEEvaluation and friends can use for vectorized access. Since no vectorization over cells is available with the DoFHandler/Triangulation cell iterators, the interface to FEEvaluation's vectorization model is to use VectorizedArray::size() copies of the same element. This interface is thus primarily useful for evaluating several operators on the same cell, e.g., when assembling cell matrices.

As opposed to the Mapping classes in deal.II, this class does not actually provide a boundary description that can be used to evaluate the geometry, but it rather provides the evaluated geometry from a given deal.II mapping (as passed to the constructor of this class) in a form accessible to FEEvaluation.

Definition at line 59 of file mapping_data_on_the_fly.h.

Constructor & Destructor Documentation

◆ MappingDataOnTheFly() [1/3]

template<int dim, typename Number >
internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::MappingDataOnTheFly ( )
default

Default constructor.

◆ MappingDataOnTheFly() [2/3]

template<int dim, typename Number >
internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::MappingDataOnTheFly ( const Mapping< dim > &  mapping,
const Quadrature< 1 > &  quadrature,
const UpdateFlags  update_flags 
)
inline

Constructor, similar to FEValues. Since this class only evaluates the geometry, no finite element has to be specified and the simplest element, FE_Nothing, is used internally for the underlying FEValues object.

Definition at line 172 of file mapping_data_on_the_fly.h.

◆ MappingDataOnTheFly() [3/3]

template<int dim, typename Number >
internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::MappingDataOnTheFly ( const Quadrature< 1 > &  quadrature,
const UpdateFlags  update_flags 
)
inline

Constructor. This constructor is equivalent to the other one except that it makes the object use a \(Q_1\) mapping (i.e., an object of type MappingQ(1)) implicitly.

Definition at line 210 of file mapping_data_on_the_fly.h.

Member Function Documentation

◆ reinit()

template<int dim, typename Number >
void internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::reinit ( typename ::Triangulation< dim >::cell_iterator  cell)
inline

Initialize with the given cell iterator.

Definition at line 222 of file mapping_data_on_the_fly.h.

◆ is_initialized()

template<int dim, typename Number >
bool internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::is_initialized ( ) const
inline

Return whether reinit() has been called at least once, i.e., a cell has been set.

Definition at line 261 of file mapping_data_on_the_fly.h.

◆ get_cell()

template<int dim, typename Number >
typename::Triangulation< dim >::cell_iterator internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::get_cell ( ) const
inline

Return a triangulation iterator to the current cell.

Definition at line 271 of file mapping_data_on_the_fly.h.

◆ get_fe_values()

template<int dim, typename Number >
const ::FEValues< dim > & internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::get_fe_values ( ) const
inline

Return a reference to the underlying FEValues object that evaluates certain quantities (only mapping-related ones like Jacobians or mapped quadrature points are accessible, as no finite element data is actually used).

Definition at line 280 of file mapping_data_on_the_fly.h.

◆ get_data_storage() [1/2]

template<int dim, typename Number >
const MappingInfoStorage< dim, dim, Number > & internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::get_data_storage ( ) const
inline

Return a reference to the underlying storage field of type MappingInfoStorage of the same format as the data fields in MappingInfo. This ensures compatibility with the precomputed data fields in the MappingInfo class.

Definition at line 289 of file mapping_data_on_the_fly.h.

◆ get_data_storage() [2/2]

template<int dim, typename Number >
MappingInfoStorage< dim, dim, Number > & internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::get_data_storage ( )
inline

Return a non-const reference to the underlying storage field of type MappingInfoStorage of the same format as the data fields in MappingInfo. This function can be used to manually fill the data if the default constructor has been called and reinit() was not called for a given cell.

Definition at line 298 of file mapping_data_on_the_fly.h.

◆ get_quadrature()

template<int dim, typename Number >
const Quadrature< 1 > & internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::get_quadrature ( ) const
inline

Return a reference to 1d quadrature underlying this object.

Definition at line 307 of file mapping_data_on_the_fly.h.

Member Data Documentation

◆ present_cell

template<int dim, typename Number >
typename::Triangulation<dim>::cell_iterator internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::present_cell
private

A cell iterator in case we generate the data on the fly to be able to check if we need to re-generate the information stored in this class.

Definition at line 143 of file mapping_data_on_the_fly.h.

◆ fe_dummy

template<int dim, typename Number >
std::unique_ptr<FE_Nothing<dim> > internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::fe_dummy
private

Dummy finite element object necessary for initializing the FEValues object.

Definition at line 149 of file mapping_data_on_the_fly.h.

◆ fe_values

template<int dim, typename Number >
std::unique_ptr<::FEValues<dim> > internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::fe_values
private

An underlying FEValues object that performs the (scalar) evaluation.

Definition at line 154 of file mapping_data_on_the_fly.h.

◆ quadrature_1d

template<int dim, typename Number >
const Quadrature<1> internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::quadrature_1d
private

Get 1d quadrature formula to be used for reinitializing shape info.

Definition at line 159 of file mapping_data_on_the_fly.h.

◆ mapping_info_storage

template<int dim, typename Number >
MappingInfoStorage<dim, dim, Number> internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number >::mapping_info_storage
private

The storage part created for a single cell and held in analogy to MappingInfo.

Definition at line 165 of file mapping_data_on_the_fly.h.


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