deal.II version GIT relicensing-2287-g6548a49e0a 2024-12-20 18:30:00+00:00
|
#include <deal.II/meshworker/scratch_data.h>
Public Member Functions | |
ScratchData (const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &quadrature, const UpdateFlags &update_flags, const Quadrature< dim - 1 > &face_quadrature=Quadrature< dim - 1 >(), const UpdateFlags &face_update_flags=update_default) | |
ScratchData (const Mapping< dim, spacedim > &mapping, const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &quadrature, const UpdateFlags &update_flags, const UpdateFlags &neighbor_update_flags, const Quadrature< dim - 1 > &face_quadrature=Quadrature< dim - 1 >(), const UpdateFlags &face_update_flags=update_default, const UpdateFlags &neighbor_face_update_flags=update_default) | |
ScratchData (const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &quadrature, const UpdateFlags &update_flags, const Quadrature< dim - 1 > &face_quadrature=Quadrature< dim - 1 >(), const UpdateFlags &face_update_flags=update_default) | |
ScratchData (const FiniteElement< dim, spacedim > &fe, const Quadrature< dim > &quadrature, const UpdateFlags &update_flags, const UpdateFlags &neighbor_update_flags, const Quadrature< dim - 1 > &face_quadrature=Quadrature< dim - 1 >(), const UpdateFlags &face_update_flags=update_default, const UpdateFlags &neighbor_face_update_flags=update_default) | |
ScratchData (const hp::MappingCollection< dim, spacedim > &mapping_collection, const hp::FECollection< dim, spacedim > &fe_collection, const hp::QCollection< dim > &cell_quadrature_collection, const UpdateFlags &cell_update_flags, const hp::QCollection< dim - 1 > &face_quadrature_collection=hp::QCollection< dim - 1 >(), const UpdateFlags &face_update_flags=update_default) | |
ScratchData (const hp::MappingCollection< dim, spacedim > &mapping_collection, const hp::FECollection< dim, spacedim > &fe_collection, const hp::QCollection< dim > &cell_quadrature_collection, const UpdateFlags &cell_update_flags, const UpdateFlags &neighbor_cell_update_flags, const hp::QCollection< dim - 1 > &face_quadrature_collection=hp::QCollection< dim - 1 >(), const UpdateFlags &face_update_flags=update_default, const UpdateFlags &neighbor_face_update_flags=update_default) | |
ScratchData (const hp::FECollection< dim, spacedim > &fe_collection, const hp::QCollection< dim > &cell_quadrature_collection, const UpdateFlags &cell_update_flags, const hp::QCollection< dim - 1 > &face_quadrature_collection=hp::QCollection< dim - 1 >(), const UpdateFlags &face_update_flags=update_default) | |
ScratchData (const hp::FECollection< dim, spacedim > &fe_collection, const hp::QCollection< dim > &cell_quadrature_collection, const UpdateFlags &cell_update_flags, const UpdateFlags &neighbor_cell_update_flags, const hp::QCollection< dim - 1 > &face_quadrature_collection=hp::QCollection< dim - 1 >(), const UpdateFlags &face_update_flags=update_default, const UpdateFlags &neighbor_face_update_flags=update_default) | |
ScratchData (const ScratchData< dim, spacedim > &scratch) | |
GeneralDataStorage & | get_general_data_storage () |
const GeneralDataStorage & | get_general_data_storage () const |
const Mapping< dim, spacedim > & | get_mapping () const |
const FiniteElement< dim, spacedim > & | get_fe () const |
const Quadrature< dim > & | get_cell_quadrature () const |
const Quadrature< dim - 1 > & | get_face_quadrature () const |
const hp::MappingCollection< dim, spacedim > & | get_mapping_collection () const |
const hp::FECollection< dim, spacedim > & | get_fe_collection () const |
const hp::QCollection< dim > & | get_cell_quadrature_collection () const |
const hp::QCollection< dim - 1 > & | get_face_quadrature_collection () const |
bool | has_hp_capabilities () const |
UpdateFlags | get_cell_update_flags () const |
UpdateFlags | get_neighbor_cell_update_flags () const |
UpdateFlags | get_face_update_flags () const |
UpdateFlags | get_neighbor_face_update_flags () const |
Methods to work on current cell | |
const FEValues< dim, spacedim > & | reinit (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell) |
const FEFaceValues< dim, spacedim > & | reinit (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const unsigned int face_no) |
const FEFaceValuesBase< dim, spacedim > & | reinit (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const unsigned int face_no, const unsigned int subface_no) |
const FEInterfaceValues< dim, spacedim > & | reinit (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const unsigned int face_no, const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell_neighbor, const unsigned int face_no_neighbor) |
const FEInterfaceValues< dim, spacedim > & | reinit (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const unsigned int face_no, const unsigned int sub_face_no, const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell_neighbor, const unsigned int face_no_neighbor, const unsigned int sub_face_no_neighbor) |
const FEValuesBase< dim, spacedim > & | get_current_fe_values () const |
const FEInterfaceValues< dim, spacedim > & | get_current_interface_fe_values () const |
const std::vector< Point< spacedim > > & | get_quadrature_points () const |
const std::vector< double > & | get_JxW_values () const |
const std::vector< Tensor< 1, spacedim > > & | get_normal_vectors () const |
const std::vector< types::global_dof_index > & | get_local_dof_indices () const |
unsigned int | n_dofs_per_cell () const |
Methods to work on neighbor cell | |
const FEValues< dim, spacedim > & | reinit_neighbor (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell) |
const FEFaceValues< dim, spacedim > & | reinit_neighbor (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const unsigned int face_no) |
const FEFaceValuesBase< dim, spacedim > & | reinit_neighbor (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const unsigned int face_no, const unsigned int subface_no) |
const FEValuesBase< dim, spacedim > & | get_current_neighbor_fe_values () const |
const std::vector< double > & | get_neighbor_JxW_values () const |
const std::vector< Tensor< 1, spacedim > > & | get_neighbor_normal_vectors () |
const std::vector< types::global_dof_index > & | get_neighbor_dof_indices () const |
unsigned int | n_neighbor_dofs_per_cell () const |
hp-compatible methods to work on cells and neighbor cells | |
const FEFaceValues< dim, spacedim > & | reinit (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const typename DoFHandler< dim, spacedim >::active_cell_iterator &neighbor_cell, const unsigned int face_no) |
const FEFaceValuesBase< dim, spacedim > & | reinit (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const typename DoFHandler< dim, spacedim >::active_cell_iterator &neighbor_cell, const unsigned int face_no, const unsigned int subface_no) |
const FEFaceValues< dim, spacedim > & | reinit_neighbor (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const typename DoFHandler< dim, spacedim >::active_cell_iterator &neighbor_cell, const unsigned int face_no) |
const FEFaceValuesBase< dim, spacedim > & | reinit_neighbor (const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, const typename DoFHandler< dim, spacedim >::active_cell_iterator &neighbor_cell, const unsigned int face_no, const unsigned int subface_no) |
Evaluation of finite element fields and their derivatives on the current cell | |
template<typename VectorType , typename Number = double> | |
void | extract_local_dof_values (const std::string &global_vector_name, const VectorType &input_vector, const Number dummy=Number(0)) |
template<typename Number = double> | |
const std::vector< Number > & | get_local_dof_values (const std::string &global_vector_name, Number dummy=Number(0)) const |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >::template solution_value_type< Number > > & | get_values (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >::template solution_gradient_type< Number > > & | get_gradients (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >::template solution_symmetric_gradient_type< Number > > & | get_symmetric_gradients (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >::template solution_divergence_type< Number > > & | get_divergences (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >::template solution_curl_type< Number > > & | get_curls (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >::template solution_hessian_type< Number > > & | get_hessians (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >::template solution_laplacian_type< Number > > & | get_laplacians (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >::template solution_third_derivative_type< Number > > & | get_third_derivatives (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
Evaluation of jumps in finite element fields and their derivatives on the current interface | |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >::template solution_value_type< Number > > & | get_jumps_in_values (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >::template solution_gradient_type< Number > > & | get_jumps_in_gradients (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >::template solution_hessian_type< Number > > & | get_jumps_in_hessians (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >::template solution_third_derivative_type< Number > > & | get_jumps_in_third_derivatives (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
Evaluation of averages of finite element fields and their derivatives on the current interface | |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >::template solution_value_type< Number > > & | get_averages_of_values (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >::template solution_gradient_type< Number > > & | get_averages_of_gradients (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
template<typename Extractor , typename Number = double> | |
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >::template solution_hessian_type< Number > > & | get_averages_of_hessians (const std::string &global_vector_name, const Extractor &variable, const Number dummy=Number(0)) |
Private Member Functions | |
template<typename Extractor , typename Number = double> | |
std::string | get_unique_name (const std::string &global_vector_name, const Extractor &variable, const std::string &object_type, const unsigned int size, const Number &exemplar_number) const |
template<typename Number = double> | |
std::string | get_unique_dofs_name (const std::string &global_vector_name, const unsigned int size, const Number &exemplar_number) const |
Data that supports the hp-FE implementation | |
ObserverPointer< const hp::MappingCollection< dim, spacedim > > | mapping_collection |
ObserverPointer< const hp::FECollection< dim, spacedim > > | fe_collection |
hp::QCollection< dim > | cell_quadrature_collection |
hp::QCollection< dim - 1 > | face_quadrature_collection |
bool | hp_capability_enabled |
std::unique_ptr< hp::FEValues< dim, spacedim > > | hp_fe_values |
std::unique_ptr< hp::FEFaceValues< dim, spacedim > > | hp_fe_face_values |
std::unique_ptr< hp::FESubfaceValues< dim, spacedim > > | hp_fe_subface_values |
std::unique_ptr< hp::FEValues< dim, spacedim > > | neighbor_hp_fe_values |
std::unique_ptr< hp::FEFaceValues< dim, spacedim > > | neighbor_hp_fe_face_values |
std::unique_ptr< hp::FESubfaceValues< dim, spacedim > > | neighbor_hp_fe_subface_values |
static ::ExceptionBase & | ExcOnlyAvailableWithoutHP () |
static ::ExceptionBase & | ExcOnlyAvailableWithHP () |
A helper class to simplify the parallel assembly of linear and non-linear problems, and the evaluation of finite element fields.
This class is a drop in ScratchData to use with the WorkStream::run() function and with the MeshWorker::mesh_loop() function.
The ScratchData class has three main goals:
The methods in the section "Methods to work on current cell" initialize on demand internal FEValues, FEFaceValues, FESubfaceValues, and FEInterfaceValues objects on the current cell, allowing the use of this class as a single substitute for four different objects used to integrate and query finite element values on cells, faces, and subfaces.
Similarly, the methods in the section "Methods to work on neighbor cell" initialize on demand (different) internal FEValues, FEFaceValues, and FESubfaceValues, on neighbor cells, allowing the use of this class also as a single substitute for the additional three objects you would typically need to integrate on the neighbor cell, and on its faces and subfaces (for example, in discontinuous Galerkin methods).
If you need to retrieve values or gradients of finite element solution vectors, on the cell, face, or subface that has just been initialized with one of the functions in the section "Methods to work on current cell", you can use the methods in the section "Evaluation of finite element fields and their derivatives on the current cell".
An example usage for this class is given by the following snippet of code:
The order in which you call functions of this class matters: if you call the ScratchData::reinit() function that takes an active cell iterator, then subsequent calls to methods that internally need an FEValuesBase object will use the internal FEValues object initialized with the given cell to perform their calculations. On the other hand, if you have called the ScratchData::reinit() method that also takes a face index, all subsequent calls to methods that need an FEValuesBase object, will use an internally stored FEFaceValues object, initialized with the cell and face index passed to the ScratchData::reinit() function. The same applies for the ScratchData::reinit() method that takes three arguments: the cell, the face index, and the subface index.
The user code should be structured without interleaving work on cells and work on faces.
Consider, for example, the following snippet of code:
When using this class, please cite [191].
Definition at line 209 of file scratch_data.h.
MeshWorker::ScratchData< dim, spacedim >::ScratchData | ( | const Mapping< dim, spacedim > & | mapping, |
const FiniteElement< dim, spacedim > & | fe, | ||
const Quadrature< dim > & | quadrature, | ||
const UpdateFlags & | update_flags, | ||
const Quadrature< dim - 1 > & | face_quadrature = Quadrature<dim - 1>() , |
||
const UpdateFlags & | face_update_flags = update_default |
||
) |
Create an empty ScratchData object. A ObserverPointer pointing to mapping
and fe
is stored internally. Make sure they live longer than this class instance.
The constructor does not initialize any of the internal FEValues objects. These are initialized the first time one of the reinit() functions is called, using the arguments passed here.
mapping | The mapping to use in the internal FEValues objects |
fe | The finite element |
quadrature | The cell quadrature |
update_flags | UpdateFlags for the current cell FEValues and neighbor cell FEValues |
face_quadrature | Face quadrature, used for FEFaceValues and FESubfaceValues for both the current cell and the neighbor cell |
face_update_flags | UpdateFlags used for FEFaceValues and FESubfaceValues for both the current cell and the neighbor cell |
Definition at line 24 of file scratch_data.cc.
MeshWorker::ScratchData< dim, spacedim >::ScratchData | ( | const Mapping< dim, spacedim > & | mapping, |
const FiniteElement< dim, spacedim > & | fe, | ||
const Quadrature< dim > & | quadrature, | ||
const UpdateFlags & | update_flags, | ||
const UpdateFlags & | neighbor_update_flags, | ||
const Quadrature< dim - 1 > & | face_quadrature = Quadrature<dim - 1>() , |
||
const UpdateFlags & | face_update_flags = update_default , |
||
const UpdateFlags & | neighbor_face_update_flags = update_default |
||
) |
Similar to the other constructor, but this one allows to specify different flags for neighbor cells and faces.
mapping | The mapping to use in the internal FEValues objects |
fe | The finite element |
quadrature | The cell quadrature |
update_flags | UpdateFlags for the current cell FEValues |
neighbor_update_flags | UpdateFlags for the neighbor cell FEValues |
face_quadrature | Face quadrature, used for FEFaceValues and FESubfaceValues for both the current cell and the neighbor cell |
face_update_flags | UpdateFlags used for FEFaceValues and FESubfaceValues for the current cell |
neighbor_face_update_flags | UpdateFlags used for FEFaceValues and FESubfaceValues for the neighbor cell |
Definition at line 47 of file scratch_data.cc.
MeshWorker::ScratchData< dim, spacedim >::ScratchData | ( | const FiniteElement< dim, spacedim > & | fe, |
const Quadrature< dim > & | quadrature, | ||
const UpdateFlags & | update_flags, | ||
const Quadrature< dim - 1 > & | face_quadrature = Quadrature<dim - 1>() , |
||
const UpdateFlags & | face_update_flags = update_default |
||
) |
Same as the other constructor, using the default linear mapping.
fe | The finite element |
quadrature | The cell quadrature |
update_flags | UpdateFlags for the current cell FEValues and neighbor cell FEValues |
face_quadrature | Face quadrature, used for FEFaceValues and FESubfaceValues for both the current cell and the neighbor cell |
face_update_flags | UpdateFlags used for FEFaceValues and FESubfaceValues for both the current cell and the neighbor cell |
Definition at line 72 of file scratch_data.cc.
MeshWorker::ScratchData< dim, spacedim >::ScratchData | ( | const FiniteElement< dim, spacedim > & | fe, |
const Quadrature< dim > & | quadrature, | ||
const UpdateFlags & | update_flags, | ||
const UpdateFlags & | neighbor_update_flags, | ||
const Quadrature< dim - 1 > & | face_quadrature = Quadrature<dim - 1>() , |
||
const UpdateFlags & | face_update_flags = update_default , |
||
const UpdateFlags & | neighbor_face_update_flags = update_default |
||
) |
Same as the other constructor, using the default linear mapping.
fe | The finite element |
quadrature | The cell quadrature |
update_flags | UpdateFlags for the current cell FEValues |
neighbor_update_flags | UpdateFlags for the neighbor cell FEValues |
face_quadrature | Face quadrature, used for FEFaceValues and FESubfaceValues for both the current cell and the neighbor cell |
face_update_flags | UpdateFlags used for FEFaceValues and FESubfaceValues for the current cell |
neighbor_face_update_flags | UpdateFlags used for FEFaceValues and FESubfaceValues for the neighbor cell |
Definition at line 90 of file scratch_data.cc.
MeshWorker::ScratchData< dim, spacedim >::ScratchData | ( | const hp::MappingCollection< dim, spacedim > & | mapping_collection, |
const hp::FECollection< dim, spacedim > & | fe_collection, | ||
const hp::QCollection< dim > & | cell_quadrature_collection, | ||
const UpdateFlags & | cell_update_flags, | ||
const hp::QCollection< dim - 1 > & | face_quadrature_collection = hp::QCollection<dim - 1>() , |
||
const UpdateFlags & | face_update_flags = update_default |
||
) |
Create an empty ScratchData object. A ObserverPointer pointing to mapping_collection
and fe_collection
is stored internally. Make sure they live longer than this class instance.
The constructor does not initialize any of the internal hp::FEValues objects. These are initialized the first time one of the reinit() functions is called, using the arguments passed here.
mapping_collection | The mapping collection to use in the internal hp::FEValues objects |
fe_collection | The finite element collection |
cell_quadrature_collection | The cell quadrature collection |
cell_update_flags | UpdateFlags for the current cell hp::FEValues and neighbor cell hp::FEValues |
face_quadrature_collection | The face quadrature collection, used for hp::FEFaceValues and hp::FESubfaceValues for both the current cell and the neighbor cell |
face_update_flags | UpdateFlags used for FEFaceValues and hp::FESubfaceValues for both the current cell and the neighbor cell |
Definition at line 112 of file scratch_data.cc.
MeshWorker::ScratchData< dim, spacedim >::ScratchData | ( | const hp::MappingCollection< dim, spacedim > & | mapping_collection, |
const hp::FECollection< dim, spacedim > & | fe_collection, | ||
const hp::QCollection< dim > & | cell_quadrature_collection, | ||
const UpdateFlags & | cell_update_flags, | ||
const UpdateFlags & | neighbor_cell_update_flags, | ||
const hp::QCollection< dim - 1 > & | face_quadrature_collection = hp::QCollection<dim - 1>() , |
||
const UpdateFlags & | face_update_flags = update_default , |
||
const UpdateFlags & | neighbor_face_update_flags = update_default |
||
) |
Similar to the other constructor, but this one allows to specify different flags for neighbor cells and faces.
mapping_collection | The mapping collection to use in the internal hp::FEValues objects |
fe_collection | The finite element collection |
cell_quadrature_collection | The cell quadrature collection |
cell_update_flags | UpdateFlags for the current cell hp::FEValues |
neighbor_cell_update_flags | UpdateFlags for the neighbor cell hp::FEValues |
face_quadrature_collection | The face quadrature collection, used for hp::FEFaceValues and hp::FESubfaceValues for both the current cell and the neighbor cell |
face_update_flags | UpdateFlags used for FEFaceValues and hp::FESubfaceValues for the current cell |
neighbor_face_update_flags | UpdateFlags used for hp::FEFaceValues and hp::FESubfaceValues for the neighbor cell |
Definition at line 136 of file scratch_data.cc.
MeshWorker::ScratchData< dim, spacedim >::ScratchData | ( | const hp::FECollection< dim, spacedim > & | fe_collection, |
const hp::QCollection< dim > & | cell_quadrature_collection, | ||
const UpdateFlags & | cell_update_flags, | ||
const hp::QCollection< dim - 1 > & | face_quadrature_collection = hp::QCollection<dim - 1>() , |
||
const UpdateFlags & | face_update_flags = update_default |
||
) |
Same as the other constructor, using the default linear mapping.
fe_collection | The finite element collection |
cell_quadrature_collection | The cell quadrature collection |
cell_update_flags | UpdateFlags for the current cell hp::FEValues and neighbor cell hp::FEValues |
face_quadrature_collection | The face quadrature collection, used for hp::FEFaceValues and hp::FESubfaceValues for both the current cell and the neighbor cell |
face_update_flags | UpdateFlags used for FEFaceValues and hp::FESubfaceValues for both the current cell and the neighbor cell |
Definition at line 162 of file scratch_data.cc.
MeshWorker::ScratchData< dim, spacedim >::ScratchData | ( | const hp::FECollection< dim, spacedim > & | fe_collection, |
const hp::QCollection< dim > & | cell_quadrature_collection, | ||
const UpdateFlags & | cell_update_flags, | ||
const UpdateFlags & | neighbor_cell_update_flags, | ||
const hp::QCollection< dim - 1 > & | face_quadrature_collection = hp::QCollection<dim - 1>() , |
||
const UpdateFlags & | face_update_flags = update_default , |
||
const UpdateFlags & | neighbor_face_update_flags = update_default |
||
) |
Same as the other constructor, using the default linear mapping.
fe_collection | The finite element collection |
cell_quadrature_collection | The cell quadrature collection |
cell_update_flags | UpdateFlags for the current cell hp::FEValues |
neighbor_cell_update_flags | UpdateFlags for the neighbor cell hp::FEValues |
face_quadrature_collection | The face quadrature collection, used for hp::FEFaceValues and hp::FESubfaceValues for both the current cell and the neighbor cell |
face_update_flags | UpdateFlags used for FEFaceValues and hp::FESubfaceValues for the current cell |
neighbor_face_update_flags | UpdateFlags used for hp::FEFaceValues and hp::FESubfaceValues for the neighbor cell |
Definition at line 179 of file scratch_data.cc.
MeshWorker::ScratchData< dim, spacedim >::ScratchData | ( | const ScratchData< dim, spacedim > & | scratch | ) |
Deep copy constructor. FEValues objects are not copied.
Definition at line 200 of file scratch_data.cc.
const FEValues< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell | ) |
Initialize the internal FEValues with the given cell
, and return a reference to it.
After calling this function, get_current_fe_values() will return the same object of this method, as an FEValuesBase reference.
Definition at line 225 of file scratch_data.cc.
const FEFaceValues< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const unsigned int | face_no | ||
) |
Initialize the internal FEFaceValues to use the given face_no
on the given cell
, and return a reference to it.
After calling this function, get_current_fe_values() will return the same object of this method, as an FEValuesBase reference.
Definition at line 267 of file scratch_data.cc.
const FEFaceValuesBase< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const unsigned int | face_no, | ||
const unsigned int | subface_no | ||
) |
Initialize the internal FESubfaceValues to use the given subface_no
, on face_no
, on the given cell
, and return a reference to it.
After calling this function, get_current_fe_values() will return the same object of this method, as an FEValuesBase reference.
If subface_no
is numbers::invalid_unsigned_int, the reinit() function that takes only the cell
and the face_no
is called.
Definition at line 349 of file scratch_data.cc.
const FEInterfaceValues< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const unsigned int | face_no, | ||
const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell_neighbor, | ||
const unsigned int | face_no_neighbor | ||
) |
Initialize the internal FEInterfaceValues with the given arguments, and return a reference to it.
After calling this function, get_local_dof_indices(), get_quadrature_points(), get_normal_vectors(), and get_JxW_values() will be forwarded to the local FEInterfaceValues object. The methods get_current_fe_values() will return the FEValuesBase associated to the current cell, while get_neighbor_fe_values() will be associated with the neighbor cell. The method get_local_dof_indices() will return the same result of FEInterfaceValues::get_interface_dof_indices(), while the get_neighbor_dof_indices() will return the local dof indices of the neighbor cell.
Definition at line 449 of file scratch_data.cc.
const FEInterfaceValues< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const unsigned int | face_no, | ||
const unsigned int | sub_face_no, | ||
const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell_neighbor, | ||
const unsigned int | face_no_neighbor, | ||
const unsigned int | sub_face_no_neighbor | ||
) |
Initialize the internal FEInterfaceValues with the given arguments, and return a reference to it.
After calling this function, get_local_dof_indices(), get_quadrature_points(), get_normal_vectors(), and get_JxW_values() will be forwarded to the local FEInterfaceValues object. The methods get_current_fe_values() will return the FEValuesBase associated to the current cell, while get_neighbor_fe_values() will be associated with the neighbor cell. The method get_local_dof_indices() will return the same result of FEInterfaceValues::get_interface_dof_indices(), while the get_neighbor_dof_indices() will return the local dof indices of the neighbor cell.
Definition at line 468 of file scratch_data.cc.
const FEValuesBase< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_current_fe_values | ( | ) | const |
Get the currently initialized FEValues.
This function will return the internal FEValues if the reinit(cell) function was called last. If the reinit(cell, face_no) function was called, then this function returns the internal FEFaceValues, and if the reinit(cell, face_no, subface_no) function was called (with a valid subface_no
argument), it returns the internal FESubfaceValues object.
Definition at line 764 of file scratch_data.cc.
const FEInterfaceValues< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_current_interface_fe_values | ( | ) | const |
Get the currently initialized FEInterfaceValues.
Definition at line 776 of file scratch_data.cc.
const std::vector< Point< spacedim > > & MeshWorker::ScratchData< dim, spacedim >::get_quadrature_points | ( | ) | const |
Return the quadrature points of the internal FEValues object.
Definition at line 800 of file scratch_data.cc.
const std::vector< double > & MeshWorker::ScratchData< dim, spacedim >::get_JxW_values | ( | ) | const |
Return the JxW values of the internal FEValues object.
Definition at line 809 of file scratch_data.cc.
const std::vector< Tensor< 1, spacedim > > & MeshWorker::ScratchData< dim, spacedim >::get_normal_vectors | ( | ) | const |
Return the last computed normal vectors.
Definition at line 827 of file scratch_data.cc.
const std::vector< types::global_dof_index > & MeshWorker::ScratchData< dim, spacedim >::get_local_dof_indices | ( | ) | const |
Return the local dof indices for the cell passed the last time the reinit() function was called.
Definition at line 845 of file scratch_data.cc.
unsigned int MeshWorker::ScratchData< dim, spacedim >::n_dofs_per_cell | ( | ) | const |
Return the number of local dof indices for the cell passed the last time the reinit() function was called.
Definition at line 854 of file scratch_data.cc.
const FEValues< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit_neighbor | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell | ) |
Initialize the internal neighbor FEValues to use the given cell
, and return a reference to it.
After calling this function, get_current_neighbor_fe_values() will return the same object of this method, as an FEValuesBase reference.
Definition at line 537 of file scratch_data.cc.
const FEFaceValues< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit_neighbor | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const unsigned int | face_no | ||
) |
Initialize the internal FEFaceValues to use the given face_no
on the given cell
, and return a reference to it.
After calling this function, get_current_neighbor_fe_values() will return the same object of this method, as an FEValuesBase reference.
Definition at line 579 of file scratch_data.cc.
const FEFaceValuesBase< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit_neighbor | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const unsigned int | face_no, | ||
const unsigned int | subface_no | ||
) |
Initialize the internal FESubfaceValues to use the given subface_no
, on face_no
, on the given cell
, and return a reference to it.
After calling this function, get_current_neighbor_fe_values() will return the same object of this method, as an FEValuesBase reference.
If subface_no
is numbers::invalid_unsigned_int, the reinit() function that takes only the cell
and the face_no
is called.
Definition at line 663 of file scratch_data.cc.
const FEValuesBase< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_current_neighbor_fe_values | ( | ) | const |
Get the currently initialized neighbor FEValues.
This function will return the neighbor FEValues if the reinit_neighbor(cell) function was called last. If the reinit_neighbor(cell, face_no) function was called, then this function returns the internal neighbor FEFaceValues, and if the reinit_neighbor(cell, face_no, subface_no) function was called (with a valid subface_no
argument), it returns the internal neighbor FESubfaceValues object.
Definition at line 788 of file scratch_data.cc.
const std::vector< double > & MeshWorker::ScratchData< dim, spacedim >::get_neighbor_JxW_values | ( | ) | const |
Return the JxW values of the neighbor FEValues object.
Definition at line 818 of file scratch_data.cc.
const std::vector< Tensor< 1, spacedim > > & MeshWorker::ScratchData< dim, spacedim >::get_neighbor_normal_vectors | ( | ) |
Return the last computed normal vectors on the neighbor.
Definition at line 836 of file scratch_data.cc.
const std::vector< types::global_dof_index > & MeshWorker::ScratchData< dim, spacedim >::get_neighbor_dof_indices | ( | ) | const |
Return the local dof indices of the neighbor passed the last time the reinit_neighbor() function was called.
Definition at line 863 of file scratch_data.cc.
unsigned int MeshWorker::ScratchData< dim, spacedim >::n_neighbor_dofs_per_cell | ( | ) | const |
Return the number of local dof indices for the neighbor passed the last time the reinit_neighbor() function was called.
Definition at line 872 of file scratch_data.cc.
const FEFaceValues< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const typename DoFHandler< dim, spacedim >::active_cell_iterator & | neighbor_cell, | ||
const unsigned int | face_no | ||
) |
Initialize the internal FEFaceValues to use the given face_no
on the given cell
, and return a reference to it.
This variant of the reinit() function compares the active finite element on each cell, and chooses the dominated finite element's index to select the quadrature rule and mapping for the returned FEFaceValues object. This is useful in instances where the shape functions of the elements on either side of a face are being evaluated at the same time (such as is done in DG methods). See FECollection::find_dominated_fe() for more information on the selection process.
After calling this function, get_current_fe_values() will return the same object of this method, as an FEValuesBase reference.
Definition at line 293 of file scratch_data.cc.
const FEFaceValuesBase< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const typename DoFHandler< dim, spacedim >::active_cell_iterator & | neighbor_cell, | ||
const unsigned int | face_no, | ||
const unsigned int | subface_no | ||
) |
Initialize the internal FESubfaceValues to use the given subface_no
, on face_no
, on the given cell
, and return a reference to it.
This variant of the reinit() function compares the active finite element on each cell, and chooses the dominated finite element's index to select the quadrature rule and mapping for the returned FEFaceValues object. This is useful in instances where the shape functions of the elements on either side of a face are being evaluated at the same time (such as is done in DG methods). See FECollection::find_dominated_fe() for more information on the selection process.
After calling this function, get_current_fe_values() will return the same object of this method, as an FEValuesBase reference.
If subface_no
is numbers::invalid_unsigned_int, the reinit() function that takes only the cell
and the face_no
is called.
Definition at line 382 of file scratch_data.cc.
const FEFaceValues< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit_neighbor | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const typename DoFHandler< dim, spacedim >::active_cell_iterator & | neighbor_cell, | ||
const unsigned int | face_no | ||
) |
Initialize the internal FEFaceValues to use the given face_no
on the given neighbor_cell
, and return a reference to it.
This variant of the reinit() function compares the active finite element on each cell, and chooses the dominated finite element's index to select the quadrature rule and mapping for the returned FEFaceValues object. This is useful in instances where the shape functions of the elements on either side of a face are being evaluated at the same time (such as is done in DG methods). See FECollection::find_dominated_fe() for more information on the selection process.
After calling this function, get_current_neighbor_fe_values() will return the same object of this method, as an FEValuesBase reference.
Definition at line 604 of file scratch_data.cc.
const FEFaceValuesBase< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::reinit_neighbor | ( | const typename DoFHandler< dim, spacedim >::active_cell_iterator & | cell, |
const typename DoFHandler< dim, spacedim >::active_cell_iterator & | neighbor_cell, | ||
const unsigned int | face_no, | ||
const unsigned int | subface_no | ||
) |
Initialize the internal FESubfaceValues to use the given subface_no
, on face_no
, on the given neighbor_cell
, and return a reference to it.
This variant of the reinit() function compares the active finite element on each cell, and chooses the dominated finite element's index to select the quadrature rule and mapping for the returned FEFaceValues object. This is useful in instances where the shape functions of the elements on either side of a face are being evaluated at the same time (such as is done in DG methods). See FECollection::find_dominated_fe() for more information on the selection process.
After calling this function, get_current_neighbor_fe_values() will return the same object of this method, as an FEValuesBase reference.
If subface_no
is numbers::invalid_unsigned_int, the reinit() function that takes only the neighbor_cell
and the face_no
is called.
Definition at line 694 of file scratch_data.cc.
GeneralDataStorage & MeshWorker::ScratchData< dim, spacedim >::get_general_data_storage | ( | ) |
Return a GeneralDataStorage object that can be used to store any amount of data, of any type, which is then made accessible by an identifier string.
Definition at line 881 of file scratch_data.cc.
const GeneralDataStorage & MeshWorker::ScratchData< dim, spacedim >::get_general_data_storage | ( | ) | const |
Return a GeneralDataStorage object that can be used to store any amount of data, of any type, which is then made accessible by an identifier string.
Definition at line 890 of file scratch_data.cc.
const Mapping< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_mapping | ( | ) | const |
Return a reference to the used mapping.
Definition at line 899 of file scratch_data.cc.
const FiniteElement< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_fe | ( | ) | const |
Return a reference to the selected finite element object.
Definition at line 910 of file scratch_data.cc.
const Quadrature< dim > & MeshWorker::ScratchData< dim, spacedim >::get_cell_quadrature | ( | ) | const |
Return a reference to the cell quadrature object in use.
Definition at line 921 of file scratch_data.cc.
const Quadrature< dim - 1 > & MeshWorker::ScratchData< dim, spacedim >::get_face_quadrature | ( | ) | const |
Return a reference to the face quadrature object in use.
Definition at line 931 of file scratch_data.cc.
const hp::MappingCollection< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_mapping_collection | ( | ) | const |
Return a reference to the used mapping.
Definition at line 941 of file scratch_data.cc.
const hp::FECollection< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_fe_collection | ( | ) | const |
Return a reference to the selected finite element object.
Definition at line 952 of file scratch_data.cc.
const hp::QCollection< dim > & MeshWorker::ScratchData< dim, spacedim >::get_cell_quadrature_collection | ( | ) | const |
Return a reference to the cell quadrature object in use.
Definition at line 963 of file scratch_data.cc.
const hp::QCollection< dim - 1 > & MeshWorker::ScratchData< dim, spacedim >::get_face_quadrature_collection | ( | ) | const |
Return a reference to the face quadrature object in use.
Definition at line 973 of file scratch_data.cc.
bool MeshWorker::ScratchData< dim, spacedim >::has_hp_capabilities | ( | ) | const |
Returns a boolean indicating whether or not this ScratchData object has hp-capabilities enabled.
Definition at line 983 of file scratch_data.cc.
UpdateFlags MeshWorker::ScratchData< dim, spacedim >::get_cell_update_flags | ( | ) | const |
Return the cell update flags set.
Definition at line 992 of file scratch_data.cc.
UpdateFlags MeshWorker::ScratchData< dim, spacedim >::get_neighbor_cell_update_flags | ( | ) | const |
Return the neighbor cell update flags set.
Definition at line 1001 of file scratch_data.cc.
UpdateFlags MeshWorker::ScratchData< dim, spacedim >::get_face_update_flags | ( | ) | const |
Return the face update flags set.
Definition at line 1010 of file scratch_data.cc.
UpdateFlags MeshWorker::ScratchData< dim, spacedim >::get_neighbor_face_update_flags | ( | ) | const |
Return the neighbor face update flags set.
Definition at line 1019 of file scratch_data.cc.
void MeshWorker::ScratchData< dim, spacedim >::extract_local_dof_values | ( | const std::string & | global_vector_name, |
const VectorType & | input_vector, | ||
const Number | dummy = Number(0) |
||
) |
Extract the local dof values associated with the internally initialized cell.
Before you call this function, you have to make sure you have previously called one of the reinit() functions.
At every call of this function, a new vector of dof values is generated and stored internally, unless a previous vector with the same name is found. If this is the case, the content of that vector is overwritten.
If you give a unique global_vector_name
, then for each cell you are guaranteed to get a unique vector of independent dofs of the same type as the dummy variable. If you use an automatic differentiation number type (like Sacado::Fad::DFad<double>, Sacado::Fad::DFad<Sacado::Fad::DFad<double>>, etc.) this method will also initialize the independent variables internally, allowing you to perform automatic differentiation.
You can access the extracted local dof values by calling the method get_local_dof_values() with the same global_vector_name
argument you passed here.
Notice that using this initialization strategy renders the use of this ScratchData object incompatible with the AD helper classes (since they do their own data management). In particular, it is necessary for the user to manage all of the AD data themselves (both before and after this call).
const std::vector< Number > & MeshWorker::ScratchData< dim, spacedim >::get_local_dof_values | ( | const std::string & | global_vector_name, |
Number | dummy = Number(0) |
||
) | const |
After calling extract_local_dof_values(), you can retrieve the stored information through this method.
Both the argument global_vector_name
and the type of the dummy
variable should match the ones you passed to the extract_local_dof_values() function.
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >:: template solution_value_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_values | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the values of the function at the quadrature points, and return a vector with the correct type deduced by the Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEValues, FEFaceValues, or FESubfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >:: template solution_gradient_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_gradients | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the gradients of the function at the quadrature points, and return a vector with the correct type deduced by the Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEValues, FEFaceValues, or FESubfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >:: template solution_symmetric_gradient_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_symmetric_gradients | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the symmetric gradients of the function at the quadrature points, and return a vector with the correct type deduced by the Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEValues, FEFaceValues, or FESubfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >:: template solution_divergence_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_divergences | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the divergences of the function at the quadrature points, and return a vector with the correct type deduced by the Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEValues, FEFaceValues, or FESubfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >:: template solution_curl_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_curls | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the curls of the function at the quadrature points, and return a vector with the correct type deduced by the Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEValues, FEFaceValues, or FESubfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >:: template solution_hessian_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_hessians | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the Hessians of the function at the quadrature points, and return a vector with the correct type deduced by the Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEValues, FEFaceValues, or FESubfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >:: template solution_laplacian_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_laplacians | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the Laplacians of the function at the quadrature points, and return a vector with the correct type deduced by the Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEValues, FEFaceValues, or FESubfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEValuesViews::View< dim, spacedim, Extractor >:: template solution_third_derivative_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_third_derivatives | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the third derivatives of the function at the quadrature points, and return a vector with the correct type deduced by the Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEValues, FEFaceValues, or FESubfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues for more information.
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >:: template solution_value_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_jumps_in_values | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the jumps in the values of the function at the quadrature points, and return a vector with the correct type deduced by the interface Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEInterfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >:: template solution_gradient_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_jumps_in_gradients | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the jumps in the gradients of the function at the quadrature points, and return a vector with the correct type deduced by the interface Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEInterfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >:: template solution_hessian_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_jumps_in_hessians | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the jumps in the Hessians of the function at the quadrature points, and return a vector with the correct type deduced by the interface Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEInterfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >:: template solution_third_derivative_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_jumps_in_third_derivatives | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the jumps in the third derivatives of the function at the quadrature points, and return a vector with the correct type deduced by the interface Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEInterfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_3rd_derivatives flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues for more information.
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >:: template solution_value_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_averages_of_values | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the averages of the values of the function at the quadrature points, and return a vector with the correct type deduced by the interface Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEInterfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_values flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >:: template solution_gradient_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_averages_of_gradients | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the averages of the gradients of the function at the quadrature points, and return a vector with the correct type deduced by the interface Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEInterfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_gradients flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
const std::vector< typename FEInterfaceViews::View< dim, spacedim, Extractor >:: template solution_hessian_type< Number > > & MeshWorker::ScratchData< dim, spacedim >::get_averages_of_hessians | ( | const std::string & | global_vector_name, |
const Extractor & | variable, | ||
const Number | dummy = Number(0) |
||
) |
For the solution vector identified by global_vector_name
, compute the averages of the Hessians of the function at the quadrature points, and return a vector with the correct type deduced by the interface Extractor you passed as the variable
argument.
Before you can call this method, you need to call the extract_local_dof_values() method at least once, passing the same global_vector_name
string, and the same type for the variable dummy
.
If you have not previously called the extract_local_dof_values() method, this function will throw an exception.
For this function to work properly, the underlying FEInterfaceValues object for which you called one of the reinit() functions, must have computed the information you are requesting. To do so, the update_hessians flag must be an element of the list of UpdateFlags that you passed to the constructor of this object. See "The interplay of UpdateFlags, Mapping, and FiniteElement" in the documentation of the FEValues class for more information.
|
private |
Construct a unique name to store vectors of values, gradients, divergences, etc., in the internal GeneralDataStorage object.
|
private |
Construct a unique name to store local dof values.
|
private |
The mapping used by the internal FEValues. Make sure it lives longer than this class.
Definition at line 1363 of file scratch_data.h.
|
private |
The finite element used by the internal FEValues. Make sure it lives longer than this class.
Definition at line 1369 of file scratch_data.h.
|
private |
Quadrature formula used to integrate on the current cell, and on its neighbor.
Definition at line 1375 of file scratch_data.h.
|
private |
Quadrature formula used to integrate on faces, subfaces, and neighbor faces and subfaces.
Definition at line 1381 of file scratch_data.h.
|
private |
Finite element values on the current cell.
Definition at line 1386 of file scratch_data.h.
|
private |
Finite element values on the current face.
Definition at line 1391 of file scratch_data.h.
|
private |
Finite element values on the current subface.
Definition at line 1396 of file scratch_data.h.
|
private |
Finite element values on the neighbor cell.
Definition at line 1401 of file scratch_data.h.
|
private |
Finite element values on the neighbor face.
Definition at line 1406 of file scratch_data.h.
|
private |
Finite element values on the neighbor subface.
Definition at line 1411 of file scratch_data.h.
|
private |
Interface values on facets.
Definition at line 1418 of file scratch_data.h.
|
private |
The mapping collection used by the internal hp::FEValues. Make sure it lives longer than this class.
Definition at line 1432 of file scratch_data.h.
|
private |
The finite element used by the internal FEValues. Make sure it lives longer than this class.
Definition at line 1438 of file scratch_data.h.
|
private |
Quadrature formula used to integrate on the current cell, and on its neighbor.
Definition at line 1444 of file scratch_data.h.
|
private |
Quadrature formula used to integrate on faces, subfaces, and neighbor faces and subfaces.
Definition at line 1450 of file scratch_data.h.
|
private |
Boolean indicating whether or not the current ScratchData has hp-capabilities.
Definition at line 1456 of file scratch_data.h.
|
private |
Finite element values on the current cell.
Definition at line 1461 of file scratch_data.h.
|
private |
Finite element values on the current face.
Definition at line 1466 of file scratch_data.h.
|
private |
Finite element values on the current subface.
Definition at line 1471 of file scratch_data.h.
|
private |
Finite element values on the neighbor cell.
Definition at line 1476 of file scratch_data.h.
|
private |
Finite element values on the neighbor face.
Definition at line 1481 of file scratch_data.h.
|
private |
Finite element values on the neighbor subface.
Definition at line 1487 of file scratch_data.h.
|
private |
UpdateFlags to use when initializing the cell FEValues object.
Definition at line 1514 of file scratch_data.h.
|
private |
UpdateFlags to use when initializing the neighbor cell FEValues objects.
Definition at line 1519 of file scratch_data.h.
|
private |
UpdateFlags to use when initializing FEFaceValues and FESubfaceValues objects.
Definition at line 1525 of file scratch_data.h.
|
private |
UpdateFlags to use when initializing neighbor FEFaceValues and FESubfaceValues objects.
Definition at line 1531 of file scratch_data.h.
|
private |
Dof indices on the current cell.
Definition at line 1536 of file scratch_data.h.
|
private |
Dof indices on the neighbor cell.
Definition at line 1541 of file scratch_data.h.
|
private |
User data storage.
Definition at line 1546 of file scratch_data.h.
|
private |
Internal data storage.
Definition at line 1551 of file scratch_data.h.
|
private |
A pointer to the last used FEValues/FEFaceValues, or FESubfaceValues object on this cell.
Definition at line 1557 of file scratch_data.h.
|
private |
A pointer to the last used FEValues/FEFaceValues, or FESubfaceValues object on the neighbor cell.
Definition at line 1564 of file scratch_data.h.