![]() |
Reference documentation for deal.II version 8.1.0
|
#include <integration_info.h>
Public Member Functions | |
IntegrationInfo () | |
IntegrationInfo (const IntegrationInfo< dim, spacedim > &other) | |
template<class FEVALUES > | |
void | initialize (const FiniteElement< dim, spacedim > &el, const Mapping< dim, spacedim > &mapping, const Quadrature< FEVALUES::integral_dimension > &quadrature, const UpdateFlags flags, const BlockInfo *local_block_info=0) |
void | initialize_data (const std_cxx1x::shared_ptr< VectorDataBase< dim, spacedim > > &data) |
void | clear () |
const FEValuesBase< dim, spacedim > & | fe_values () const |
Access to finite element. More... | |
const FEValuesBase< dim, spacedim > & | fe_values (const unsigned int i) const |
Access to finite elements. More... | |
template<typename number > | |
void | reinit (const DoFInfo< dim, spacedim, number > &i) |
template<typename number > | |
void | fill_local_data (const DoFInfo< dim, spacedim, number > &info, bool split_fevalues) |
std::size_t | memory_consumption () const |
Public Attributes | |
bool | multigrid |
This is true if we are assembling for multigrid. | |
std::vector< std::vector< std::vector< double > > > | values |
std::vector< std::vector< std::vector< Tensor< 1, dim > > > > | gradients |
std::vector< std::vector< std::vector< Tensor< 2, dim > > > > | hessians |
std_cxx1x::shared_ptr< VectorDataBase< dim, spacedim > > | global_data |
Static Public Attributes | |
static const unsigned int | dimension = dim |
static const unsigned int | space_dimension = spacedim |
Private Member Functions | |
template<typename TYPE > | |
void | fill_local_data (std::vector< std::vector< std::vector< TYPE > > > &data, VectorSelector &selector, bool split_fevalues) const |
Private Attributes | |
std::vector< std_cxx1x::shared_ptr< FEValuesBase< dim, spacedim > > > | fevalv |
vector of FEValues objects | |
unsigned int | n_components |
Class for objects handed to local integration functions.
Objects of this class contain one or more objects of type FEValues, FEFaceValues or FESubfaceValues to be used in local integration. They are stored in an array of pointers to the base classes FEValuesBase. The template parameter VECTOR allows the use of different data types for the global system.
Additionally, this function contains space to store the values of finite element functions stored in global_data in the quadrature points. These vectors are initialized automatically on each cell or face. In order to avoid initializing unused vectors, you can use initialize_selector() to select the vectors by name that you actually want to use.
This class supports two local integration models, corresponding to the data models in the documentation of the Assembler namespace. One is the standard model suggested by the use of FESystem. Namely, there is one FEValuseBase object in this class, containing all shape functions of the whole system, and having as many components as the system. Using this model involves loops over all system shape functions. It requires to identify the system components for each shape function and to select the correct bilinear form, usually in an if
or switch
statement.
The second integration model builds one FEValuesBase object per base element of the system. The degrees of freedom on each cell are renumbered by block, such that they represent the same block structure as the global system. Objects performing the integration can then process each block separately, which improves reusability of code considerably.
Definition at line 78 of file integration_info.h.
|
inline |
Constructor.
Definition at line 560 of file integration_info.h.
|
inline |
Copy constructor, creating a clone to be used by WorksTream::run().
Definition at line 570 of file integration_info.h.
|
inline |
Build all internal structures, in particular the FEValuesBase objects and allocate space for data vectors.
el | is the finite element of the DoFHandler. |
mapping | is the Mapping object used to map the mesh cells. |
quadrature | is a Quadrature formula used in the constructor of the FEVALUES objects. |
flags | are the UpdateFlags used in the constructor of the FEVALUES objects. |
local_block_info | is an optional parameter for systems of PDE. If it is provided with reasonable data, then the degrees of freedom on the cells will be re-ordered to reflect the block structure of the system. |
Definition at line 607 of file integration_info.h.
void MeshWorker::IntegrationInfo< dim, sdim >::initialize_data | ( | const std_cxx1x::shared_ptr< VectorDataBase< dim, sdim > > & | data | ) |
Initialize the data vector and cache the selector.
Definition at line 28 of file integration_info.templates.h.
void MeshWorker::IntegrationInfo< dim, sdim >::clear | ( | ) |
Delete the data created by initialize().
Definition at line 82 of file integration_info.templates.h.
|
inline |
Access to finite element.
This is the access function being used, if the constructor for a single element was used. It throws an exception, if applied to a vector of elements.
Definition at line 635 of file integration_info.h.
|
inline |
Access to finite elements.
This access function must be used if the constructor for a group of elements was used.
Definition at line 644 of file integration_info.h.
|
inline |
Reinitialize internal data structures for use on a cell.
Definition at line 654 of file integration_info.h.
void MeshWorker::IntegrationInfo< dim, sdim >::fill_local_data | ( | const DoFInfo< dim, sdim, number > & | info, |
bool | split_fevalues | ||
) |
Use the finite element functions in global_data and fill the vectors values, gradients and hessians.
Definition at line 92 of file integration_info.templates.h.
std::size_t MeshWorker::IntegrationInfo< dim, sdim >::memory_consumption | ( | ) | const |
The memory used by this object.
Definition at line 131 of file integration_info.templates.h.
|
private |
Use the finite element functions in global_data and fill the vectors values, gradients and hessians with values according to the selector.
std::vector<std::vector<std::vector<double> > > MeshWorker::IntegrationInfo< dim, spacedim >::values |
The vector containing the values of finite element functions in the quadrature points.
There is one vector per selected finite element function, containing one vector for each component, containing vectors with values for each quadrature point.
Definition at line 162 of file integration_info.h.
std::vector<std::vector<std::vector<Tensor<1,dim> > > > MeshWorker::IntegrationInfo< dim, spacedim >::gradients |
The vector containing the derivatives of finite element functions in the quadrature points.
There is one vector per selected finite element function, containing one vector for each component, containing vectors with values for each quadrature point.
Definition at line 172 of file integration_info.h.
std::vector<std::vector<std::vector<Tensor<2,dim> > > > MeshWorker::IntegrationInfo< dim, spacedim >::hessians |
The vector containing the second derivatives of finite element functions in the quadrature points.
There is one vector per selected finite element function, containing one vector for each component, containing vectors with values for each quadrature point.
Definition at line 182 of file integration_info.h.
std_cxx1x::shared_ptr<VectorDataBase<dim, spacedim> > MeshWorker::IntegrationInfo< dim, spacedim >::global_data |
The global data vector used to compute function values in quadrature points.
Definition at line 201 of file integration_info.h.
|
private |
Cache the number of components of the system element.
Definition at line 222 of file integration_info.h.