Reference documentation for deal.II version 9.2.0
|
#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 ScratchData< dim, spacedim > &scratch) | |
GeneralDataStorage & | get_general_data_storage () |
const Mapping< dim, spacedim > & | get_mapping () 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 FEValuesBase< dim, spacedim > & | get_current_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 |
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 |
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 internal::OutputType< dim, spacedim, Number, Extractor >::value_type > & | 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 internal::OutputType< dim, spacedim, Number, Extractor >::gradient_type > & | 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 internal::OutputType< dim, spacedim, Number, Extractor >::symmetric_gradient_type > & | 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 internal::OutputType< dim, spacedim, Number, Extractor >::divergence_type > & | 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 internal::OutputType< dim, spacedim, Number, Extractor >::curl_type > & | 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 internal::OutputType< dim, spacedim, Number, Extractor >::hessian_type > & | 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 internal::OutputType< dim, spacedim, Number, Extractor >::third_derivative_type > & | get_third_derivatives (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 |
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, and FESubfaceValues objects on the current cell, allowing the use of this class as a single substitute for three 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
Definition at line 232 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 SmartPointer 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 25 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 MappingQ1.
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 71 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 MappingQ1.
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 88 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 109 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 129 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 146 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 164 of file scratch_data.cc.
const FEValuesBase< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_current_fe_values |
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 248 of file scratch_data.cc.
const std::vector< Point< spacedim > > & MeshWorker::ScratchData< dim, spacedim >::get_quadrature_points |
Return the quadrature points of the internal FEValues object.
Definition at line 272 of file scratch_data.cc.
const std::vector< double > & MeshWorker::ScratchData< dim, spacedim >::get_JxW_values |
Return the JxW values of the internal FEValues object.
Definition at line 281 of file scratch_data.cc.
const std::vector< Tensor< 1, spacedim > > & MeshWorker::ScratchData< dim, spacedim >::get_normal_vectors |
Return the last computed normal vectors.
Definition at line 299 of file scratch_data.cc.
const std::vector< types::global_dof_index > & MeshWorker::ScratchData< dim, spacedim >::get_local_dof_indices |
Return the local dof indices for the cell passed the last time the reinit() function was called.
Definition at line 317 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_fe_values() will return the same object of this method, as an FEValuesBase reference.
Definition at line 189 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_fe_values() will return the same object of this method, as an FEValuesBase reference.
Definition at line 206 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_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 224 of file scratch_data.cc.
const FEValuesBase< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_current_neighbor_fe_values |
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 260 of file scratch_data.cc.
const std::vector< double > & MeshWorker::ScratchData< dim, spacedim >::get_neighbor_JxW_values |
Return the JxW values of the neighbor FEValues object.
Definition at line 290 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 308 of file scratch_data.cc.
const std::vector< types::global_dof_index > & MeshWorker::ScratchData< dim, spacedim >::get_neighbor_dof_indices |
Return the local dof indices of the neighbor passed the last time the reinit_neighbor() function was called.
Definition at line 326 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 335 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 internal::OutputType<dim, spacedim, Number, Extractor>:: value_type>& 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 internal::OutputType<dim, spacedim, Number, Extractor>:: gradient_type>& 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 internal::OutputType<dim, spacedim, Number, Extractor>:: symmetric_gradient_type>& 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 internal::OutputType<dim, spacedim, Number, Extractor>:: divergence_type>& 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 internal:: OutputType<dim, spacedim, Number, Extractor>::curl_type>& 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 internal::OutputType<dim, spacedim, Number, Extractor>:: hessian_type>& 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 internal::OutputType<dim, spacedim, Number, Extractor>:: third_derivative_type>& 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 Mapping< dim, spacedim > & MeshWorker::ScratchData< dim, spacedim >::get_mapping |
Return a reference to the used mapping.
Definition at line 344 of file scratch_data.cc.
|
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 795 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 801 of file scratch_data.h.
|
private |
Quadrature formula used to integrate on the current cell, and on its neighbor.
Definition at line 807 of file scratch_data.h.
|
private |
Quadrature formula used to integrate on faces, subfaces, and neighbor faces and subfaces.
Definition at line 813 of file scratch_data.h.
|
private |
UpdateFlags to use when initializing the cell FEValues object.
Definition at line 818 of file scratch_data.h.
|
private |
UpdateFlags to use when initializing the neighbor cell FEValues objects.
Definition at line 823 of file scratch_data.h.
|
private |
UpdateFlags to use when initializing FEFaceValues and FESubfaceValues objects.
Definition at line 829 of file scratch_data.h.
|
private |
UpdateFlags to use when initializing neighbor FEFaceValues and FESubfaceValues objects.
Definition at line 835 of file scratch_data.h.
|
private |
Finite element values on the current cell.
Definition at line 840 of file scratch_data.h.
|
private |
Finite element values on the current face.
Definition at line 845 of file scratch_data.h.
|
private |
Finite element values on the current subface.
Definition at line 850 of file scratch_data.h.
|
private |
Finite element values on the neighbor cell.
Definition at line 855 of file scratch_data.h.
|
private |
Finite element values on the neighbor face.
Definition at line 860 of file scratch_data.h.
|
private |
Finite element values on the neighbor subface.
Definition at line 865 of file scratch_data.h.
|
private |
Dof indices on the current cell.
Definition at line 870 of file scratch_data.h.
|
private |
Dof indices on the neighbor cell.
Definition at line 875 of file scratch_data.h.
|
private |
User data storage.
Definition at line 880 of file scratch_data.h.
|
private |
Internal data storage.
Definition at line 885 of file scratch_data.h.
|
private |
A pointer to the last used FEValues/FEFaceValues, or FESubfaceValues object on this cell.
Definition at line 891 of file scratch_data.h.
|
private |
A pointer to the last used FEValues/FEFaceValues, or FESubfaceValues object on the neighbor cell.
Definition at line 897 of file scratch_data.h.