16#ifndef dealii_meshworker_scratch_data_h
17#define dealii_meshworker_scratch_data_h
32#include <boost/any.hpp>
221 template <
int dim,
int spacedim = dim>
528 const std::vector<Point<spacedim>> &
534 const std::vector<double> &
540 const std::vector<Tensor<1, spacedim>> &
547 const std::vector<types::global_dof_index> &
620 const std::vector<double> &
626 const std::vector<Tensor<1, spacedim>> &
633 const std::vector<types::global_dof_index> &
875 template <
typename VectorType,
typename Number =
double>
879 const Number
dummy = Number(0));
889 template <
typename Number =
double>
890 const std::vector<Number> &
892 Number
dummy = Number(0))
const;
915 template <
typename Extractor,
typename Number =
double>
916 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
919 const Extractor & variable,
920 const Number
dummy = Number(0));
943 template <
typename Extractor,
typename Number =
double>
944 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
947 const Extractor & variable,
948 const Number
dummy = Number(0));
972 template <
typename Extractor,
typename Number =
double>
973 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
976 const Extractor & variable,
977 const Number
dummy = Number(0));
1000 template <
typename Extractor,
typename Number =
double>
1001 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1004 const Extractor & variable,
1005 const Number
dummy = Number(0));
1028 template <
typename Extractor,
typename Number =
double>
1029 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1032 const Extractor & variable,
1033 const Number
dummy = Number(0));
1056 template <
typename Extractor,
typename Number =
double>
1057 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1060 const Extractor & variable,
1061 const Number
dummy = Number(0));
1084 template <
typename Extractor,
typename Number =
double>
1085 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1088 const Extractor & variable,
1089 const Number
dummy = Number(0));
1112 template <
typename Extractor,
typename Number =
double>
1113 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1116 const Extractor & variable,
1117 const Number
dummy = Number(0));
1148 template <
typename Extractor,
typename Number =
double>
1153 const Extractor & variable,
1154 const Number
dummy = Number(0));
1178 template <
typename Extractor,
typename Number =
double>
1183 const Extractor & variable,
1184 const Number
dummy = Number(0));
1208 template <
typename Extractor,
typename Number =
double>
1213 const Extractor & variable,
1214 const Number
dummy = Number(0));
1238 template <
typename Extractor,
typename Number =
double>
1243 const Extractor & variable,
1244 const Number
dummy = Number(0));
1275 template <
typename Extractor,
typename Number =
double>
1280 const Extractor & variable,
1281 const Number
dummy = Number(0));
1305 template <
typename Extractor,
typename Number =
double>
1310 const Extractor & variable,
1311 const Number
dummy = Number(0));
1335 template <
typename Extractor,
typename Number =
double>
1340 const Extractor & variable,
1341 const Number
dummy = Number(0));
1350 template <
typename Extractor,
typename Number =
double>
1353 const Extractor & variable,
1355 const unsigned int size,
1361 template <
typename Number =
double>
1364 const unsigned int size,
1498 std::unique_ptr<hp::FESubfaceValues<dim, spacedim>>
1508 "The current function doesn't make sense when used with a "
1509 "ScratchData object with hp-capabilities.");
1518 "The current function doesn't make sense when used with a "
1519 "ScratchData object without hp-capabilities.");
1579 template <
int dim,
int spacedim>
1580 template <
typename Extractor,
typename Number>
1584 const Extractor & variable,
1586 const unsigned int size,
1596 template <
int dim,
int spacedim>
1597 template <
typename Number>
1601 const unsigned int size,
1611 template <
int dim,
int spacedim>
1612 template <
typename VectorType,
typename Number>
1619 const unsigned int n_dofs = local_dof_indices.size();
1621 const std::string name =
1625 internal_data_storage
1632 for (
unsigned int i = 0; i < n_dofs; ++i)
1639 for (
unsigned int i = 0; i < n_dofs; ++i)
1645 template <
int dim,
int spacedim>
1646 template <
typename Number>
1647 const std::vector<Number> &
1652 const unsigned int n_dofs = local_dof_indices.
size();
1658 internal_data_storage.stores_object_with_name(
dofs_name),
1660 "You did not call yet extract_local_dof_values with the right types!"));
1662 return internal_data_storage
1668 template <
int dim,
int spacedim>
1669 template <
typename Extractor,
typename Number>
1670 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1673 const Extractor & variable,
1681 const unsigned int n_q_points =
fev.n_quadrature_points;
1683 const std::string name = get_unique_name(
1688 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1697 fev[variable].get_function_values_from_local_dof_values(
1704 template <
int dim,
int spacedim>
1705 template <
typename Extractor,
typename Number>
1706 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1710 const Extractor & variable,
1718 const unsigned int n_q_points =
fev.n_quadrature_points;
1720 const std::string name = get_unique_name(
1725 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1734 fev[variable].get_function_gradients_from_local_dof_values(
1741 template <
int dim,
int spacedim>
1742 template <
typename Extractor,
typename Number>
1743 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1747 const Extractor & variable,
1755 const unsigned int n_q_points =
fev.n_quadrature_points;
1757 const std::string name = get_unique_name(
1762 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1772 fev[variable].get_function_hessians_from_local_dof_values(
1779 template <
int dim,
int spacedim>
1780 template <
typename Extractor,
typename Number>
1781 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1785 const Extractor & variable,
1793 const unsigned int n_q_points =
fev.n_quadrature_points;
1795 const std::string name = get_unique_name(
1800 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1810 fev[variable].get_function_laplacians_from_local_dof_values(
1817 template <
int dim,
int spacedim>
1818 template <
typename Extractor,
typename Number>
1819 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1823 const Extractor & variable,
1831 const unsigned int n_q_points =
fev.n_quadrature_points;
1833 const std::string name = get_unique_name(
1838 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1848 fev[variable].get_function_third_derivatives_from_local_dof_values(
1855 template <
int dim,
int spacedim>
1856 template <
typename Extractor,
typename Number>
1857 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1861 const Extractor & variable,
1869 const unsigned int n_q_points =
fev.n_quadrature_points;
1871 const std::string name = get_unique_name(
1877 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1887 fev[variable].get_function_symmetric_gradients_from_local_dof_values(
1893 template <
int dim,
int spacedim>
1894 template <
typename Extractor,
typename Number>
1895 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1899 const Extractor & variable,
1907 const unsigned int n_q_points =
fev.n_quadrature_points;
1909 const std::string name = get_unique_name(
1914 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1924 fev[variable].get_function_divergences_from_local_dof_values(
1931 template <
int dim,
int spacedim>
1932 template <
typename Extractor,
typename Number>
1933 const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1936 const Extractor & variable,
1944 const unsigned int n_q_points =
fev.n_quadrature_points;
1946 const std::string name = get_unique_name(
1951 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
1960 fev[variable].get_function_curls_from_local_dof_values(
1967 template <
int dim,
int spacedim>
1968 template <
typename Extractor,
typename Number>
1969 const std::vector<typename FEInterfaceViews::View<dim, spacedim, Extractor>
::
1973 const Extractor & variable,
1980 get_current_interface_fe_values();
1983 feiv.n_current_interface_dofs());
1985 const unsigned int n_q_points =
feiv.n_quadrature_points;
1987 const std::string name = get_unique_name(
1992 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
2001 feiv[variable].get_jump_in_function_values_from_local_dof_values(
2008 template <
int dim,
int spacedim>
2009 template <
typename Extractor,
typename Number>
2010 const std::vector<typename FEInterfaceViews::View<dim, spacedim, Extractor>
::
2014 const Extractor & variable,
2021 get_current_interface_fe_values();
2024 feiv.n_current_interface_dofs());
2026 const unsigned int n_q_points =
feiv.n_quadrature_points;
2028 const std::string name = get_unique_name(
2033 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
2042 feiv[variable].get_jump_in_function_gradients_from_local_dof_values(
2049 template <
int dim,
int spacedim>
2050 template <
typename Extractor,
typename Number>
2051 const std::vector<typename FEInterfaceViews::View<dim, spacedim, Extractor>
::
2055 const Extractor & variable,
2062 get_current_interface_fe_values();
2065 feiv.n_current_interface_dofs());
2067 const unsigned int n_q_points =
feiv.n_quadrature_points;
2069 const std::string name = get_unique_name(
2074 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
2083 feiv[variable].get_jump_in_function_hessians_from_local_dof_values(
2090 template <
int dim,
int spacedim>
2091 template <
typename Extractor,
typename Number>
2092 const std::vector<typename FEInterfaceViews::View<dim, spacedim, Extractor>
::
2096 const Extractor & variable,
2103 get_current_interface_fe_values();
2106 feiv.n_current_interface_dofs());
2108 const unsigned int n_q_points =
feiv.n_quadrature_points;
2112 "_jump_third_derivatives_q",
2118 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
2127 feiv[variable].get_jump_in_function_third_derivatives_from_local_dof_values(
2134 template <
int dim,
int spacedim>
2135 template <
typename Extractor,
typename Number>
2136 const std::vector<typename FEInterfaceViews::View<dim, spacedim, Extractor>
::
2140 const Extractor & variable,
2147 get_current_interface_fe_values();
2150 feiv.n_current_interface_dofs());
2152 const unsigned int n_q_points =
feiv.n_quadrature_points;
2154 const std::string name = get_unique_name(
2159 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
2168 feiv[variable].get_average_of_function_values_from_local_dof_values(
2175 template <
int dim,
int spacedim>
2176 template <
typename Extractor,
typename Number>
2177 const std::vector<typename FEInterfaceViews::View<dim, spacedim, Extractor>
::
2181 const Extractor & variable,
2188 get_current_interface_fe_values();
2191 feiv.n_current_interface_dofs());
2193 const unsigned int n_q_points =
feiv.n_quadrature_points;
2195 const std::string name = get_unique_name(
2200 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
2209 feiv[variable].get_average_of_function_gradients_from_local_dof_values(
2216 template <
int dim,
int spacedim>
2217 template <
typename Extractor,
typename Number>
2218 const std::vector<typename FEInterfaceViews::View<dim, spacedim, Extractor>
::
2222 const Extractor & variable,
2229 get_current_interface_fe_values();
2232 feiv.n_current_interface_dofs());
2234 const unsigned int n_q_points =
feiv.n_quadrature_points;
2236 const std::string name = get_unique_name(
2241 std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>
::
2250 feiv[variable].get_average_of_function_hessians_from_local_dof_values(
GeneralDataStorage user_data_storage
hp::QCollection< dim - 1 > face_quadrature_collection
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))
bool has_hp_capabilities() const
const hp::MappingCollection< dim, spacedim > & get_mapping_collection() const
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))
const FEValuesBase< dim, spacedim > & get_current_fe_values() const
GeneralDataStorage & get_general_data_storage()
const Quadrature< dim - 1 > & get_face_quadrature() const
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
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))
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))
const std::vector< Tensor< 1, spacedim > > & get_neighbor_normal_vectors()
unsigned int n_dofs_per_cell() const
std::unique_ptr< hp::FESubfaceValues< dim, spacedim > > hp_fe_subface_values
unsigned int n_neighbor_dofs_per_cell() const
std::unique_ptr< FEValues< dim, spacedim > > neighbor_fe_values
std::unique_ptr< FEFaceValues< dim, spacedim > > fe_face_values
std::string get_unique_dofs_name(const std::string &global_vector_name, const unsigned int size, const Number &exemplar_number) const
void extract_local_dof_values(const std::string &global_vector_name, const VectorType &input_vector, const Number dummy=Number(0))
std::unique_ptr< FEValues< dim, spacedim > > fe_values
UpdateFlags cell_update_flags
const std::vector< double > & get_JxW_values() const
const Mapping< dim, spacedim > & get_mapping() const
std::unique_ptr< FEInterfaceValues< dim, spacedim > > interface_fe_values
const std::vector< double > & get_neighbor_JxW_values() const
Quadrature< dim > cell_quadrature
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))
const FiniteElement< dim, spacedim > & get_fe() const
SmartPointer< const hp::FECollection< dim, spacedim > > fe_collection
std::unique_ptr< FEFaceValues< dim, spacedim > > neighbor_fe_face_values
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))
const hp::QCollection< dim > & get_cell_quadrature_collection() const
std::vector< types::global_dof_index > neighbor_dof_indices
SmartPointer< const FiniteElement< dim, spacedim > > fe
UpdateFlags face_update_flags
const std::vector< types::global_dof_index > & get_neighbor_dof_indices() const
UpdateFlags get_face_update_flags() const
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))
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))
std::unique_ptr< hp::FEValues< dim, spacedim > > hp_fe_values
SmartPointer< const hp::MappingCollection< dim, spacedim > > mapping_collection
UpdateFlags neighbor_cell_update_flags
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))
bool hp_capability_enabled
UpdateFlags get_neighbor_cell_update_flags() const
const hp::FECollection< dim, spacedim > & get_fe_collection() const
const std::vector< Tensor< 1, spacedim > > & get_normal_vectors() const
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))
const FEValues< dim, spacedim > & reinit_neighbor(const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell)
std::unique_ptr< hp::FEFaceValues< dim, spacedim > > neighbor_hp_fe_face_values
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))
std::vector< types::global_dof_index > local_dof_indices
SmartPointer< const Mapping< dim, spacedim > > mapping
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))
SmartPointer< const FEValuesBase< dim, spacedim > > current_fe_values
const std::vector< Number > & get_local_dof_values(const std::string &global_vector_name, Number dummy=Number(0)) const
const std::vector< Point< spacedim > > & get_quadrature_points() const
std::unique_ptr< hp::FEValues< dim, spacedim > > neighbor_hp_fe_values
const FEValuesBase< dim, spacedim > & get_current_neighbor_fe_values() const
const std::vector< types::global_dof_index > & get_local_dof_indices() const
SmartPointer< const FEValuesBase< dim, spacedim > > current_neighbor_fe_values
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))
Quadrature< dim - 1 > face_quadrature
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))
const FEInterfaceValues< dim, spacedim > & get_current_interface_fe_values() const
hp::QCollection< dim > cell_quadrature_collection
UpdateFlags get_cell_update_flags() const
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))
UpdateFlags neighbor_face_update_flags
const Quadrature< dim > & get_cell_quadrature() const
const hp::QCollection< dim - 1 > & get_face_quadrature_collection() const
std::unique_ptr< FESubfaceValues< dim, spacedim > > neighbor_fe_subface_values
const FEValues< dim, spacedim > & reinit(const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell)
std::unique_ptr< hp::FESubfaceValues< dim, spacedim > > neighbor_hp_fe_subface_values
std::unique_ptr< FESubfaceValues< dim, spacedim > > fe_subface_values
GeneralDataStorage internal_data_storage
UpdateFlags get_neighbor_face_update_flags() const
std::unique_ptr< hp::FEFaceValues< dim, spacedim > > hp_fe_face_values
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
#define AssertDimension(dim1, dim2)
static ::ExceptionBase & ExcOnlyAvailableWithoutHP()
#define DeclExceptionMsg(Exception, defaulttext)
static ::ExceptionBase & ExcMessage(std::string arg1)
static ::ExceptionBase & ExcOnlyAvailableWithHP()
typename ActiveSelector::active_cell_iterator active_cell_iterator
@ update_default
No update.
typename ::internal::FEInterfaceViews::ViewType< dim, spacedim, Extractor >::type View
std::string type_to_string(const T &t)
std::string int_to_string(const unsigned int value, const unsigned int digits=numbers::invalid_unsigned_int)