Specifically, instead of using a nested class, just use a template type alias.
While there, also fix a few places where we should have used the existing type
alias but instead had repeated the same type computation used in the definition
of the type alias.
using third_derivative_type = dealii::Tensor<3, spacedim>;
/**
- * A struct that provides the output type for the product of the value
- * and derivatives of basis functions of the Scalar view and any @p Number type.
+ * An alias for the data type of the product of a @p Number and the
+ * values of the view this class provides. This is the data type of
+ * scalar components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
*/
template <typename Number>
- struct OutputType
- {
- /**
- * An alias for the data type of the product of a @p Number and the
- * values of the view the Scalar class.
- */
- using value_type =
- typename ProductType<Number,
- typename Scalar<dim, spacedim>::value_type>::type;
+ using solution_value_type = typename ProductType<Number, value_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * gradients of the view the Scalar class.
- */
- using gradient_type = typename ProductType<
- Number,
- typename Scalar<dim, spacedim>::gradient_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * gradients of the view this class provides. This is the data type of
+ * scalar components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_gradient_type =
+ typename ProductType<Number, gradient_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * laplacians of the view the Scalar class.
- */
- using laplacian_type =
- typename ProductType<Number,
- typename Scalar<dim, spacedim>::value_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * laplacians of the view this class provides. This is the data type of
+ * scalar components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_laplacian_type =
+ typename ProductType<Number, value_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * hessians of the view the Scalar class.
- */
- using hessian_type = typename ProductType<
- Number,
- typename Scalar<dim, spacedim>::hessian_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * hessians of the view this class provides. This is the data type of
+ * scalar components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_hessian_type =
+ typename ProductType<Number, hessian_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * third derivatives of the view the Scalar class.
- */
- using third_derivative_type = typename ProductType<
- Number,
- typename Scalar<dim, spacedim>::third_derivative_type>::type;
- };
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * third derivatives of the view this class provides. This is the data type
+ * of scalar components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_third_derivative_type =
+ typename ProductType<Number, third_derivative_type>::type;
/**
* A structure where for each shape function we pre-compute a bunch of
void
get_function_values(
const InputVector &fe_function,
- std::vector<typename ProductType<value_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_value_type<typename InputVector::value_type>>
&values) const;
/**
void
get_function_values_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::value_type>
+ std::vector<solution_value_type<typename InputVector::value_type>>
&values) const;
/**
void
get_function_gradients(
const InputVector &fe_function,
- std::vector<typename ProductType<gradient_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const;
/**
void
get_function_gradients_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::gradient_type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const;
/**
void
get_function_hessians(
const InputVector &fe_function,
- std::vector<typename ProductType<hessian_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_hessian_type<typename InputVector::value_type>>
&hessians) const;
/**
void
get_function_hessians_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::hessian_type>
+ std::vector<solution_hessian_type<typename InputVector::value_type>>
&hessians) const;
void
get_function_laplacians(
const InputVector &fe_function,
- std::vector<typename ProductType<value_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_laplacian_type<typename InputVector::value_type>>
&laplacians) const;
/**
void
get_function_laplacians_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::laplacian_type>
+ std::vector<solution_laplacian_type<typename InputVector::value_type>>
&laplacians) const;
void
get_function_third_derivatives(
const InputVector &fe_function,
- std::vector<typename ProductType<third_derivative_type,
- typename InputVector::value_type>::type>
+ std::vector<
+ solution_third_derivative_type<typename InputVector::value_type>>
&third_derivatives) const;
/**
template <class InputVector>
void
get_function_third_derivatives_from_local_dof_values(
- const InputVector & dof_values,
- std::vector<typename OutputType<typename InputVector::value_type>::
- third_derivative_type> &third_derivatives) const;
+ const InputVector &dof_values,
+ std::vector<
+ solution_third_derivative_type<typename InputVector::value_type>>
+ &third_derivatives) const;
private:
using third_derivative_type = dealii::Tensor<4, spacedim>;
/**
- * A struct that provides the output type for the product of the value
- * and derivatives of basis functions of the Vector view and any @p Number type.
+ * An alias for the data type of the product of a @p Number and the
+ * values of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
*/
template <typename Number>
- struct OutputType
- {
- /**
- * An alias for the data type of the product of a @p Number and the
- * values of the view the Vector class.
- */
- using value_type =
- typename ProductType<Number,
- typename Vector<dim, spacedim>::value_type>::type;
+ using solution_value_type = typename ProductType<Number, value_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * gradients of the view the Vector class.
- */
- using gradient_type = typename ProductType<
- Number,
- typename Vector<dim, spacedim>::gradient_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * gradients of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_gradient_type =
+ typename ProductType<Number, gradient_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * symmetric gradients of the view the Vector class.
- */
- using symmetric_gradient_type = typename ProductType<
- Number,
- typename Vector<dim, spacedim>::symmetric_gradient_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * symmetric gradients of the view this class provides. This is the data
+ * type of vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_symmetric_gradient_type =
+ typename ProductType<Number, symmetric_gradient_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * divergences of the view the Vector class.
- */
- using divergence_type = typename ProductType<
- Number,
- typename Vector<dim, spacedim>::divergence_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * divergences of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_divergence_type =
+ typename ProductType<Number, divergence_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * laplacians of the view the Vector class.
- */
- using laplacian_type =
- typename ProductType<Number,
- typename Vector<dim, spacedim>::value_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * laplacians of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_laplacian_type =
+ typename ProductType<Number, value_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * curls of the view the Vector class.
- */
- using curl_type =
- typename ProductType<Number,
- typename Vector<dim, spacedim>::curl_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * curls of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_curl_type = typename ProductType<Number, curl_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * hessians of the view the Vector class.
- */
- using hessian_type = typename ProductType<
- Number,
- typename Vector<dim, spacedim>::hessian_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * hessians of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_hessian_type =
+ typename ProductType<Number, hessian_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * third derivatives of the view the Vector class.
- */
- using third_derivative_type = typename ProductType<
- Number,
- typename Vector<dim, spacedim>::third_derivative_type>::type;
- };
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * third derivatives of the view this class provides. This is the data type
+ * of vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_third_derivative_type =
+ typename ProductType<Number, third_derivative_type>::type;
/**
* A structure where for each shape function we pre-compute a bunch of
void
get_function_values(
const InputVector &fe_function,
- std::vector<typename ProductType<value_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_value_type<typename InputVector::value_type>>
&values) const;
/**
void
get_function_values_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::value_type>
+ std::vector<solution_value_type<typename InputVector::value_type>>
&values) const;
/**
void
get_function_gradients(
const InputVector &fe_function,
- std::vector<typename ProductType<gradient_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const;
/**
void
get_function_gradients_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::gradient_type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const;
/**
void
get_function_symmetric_gradients(
const InputVector &fe_function,
- std::vector<typename ProductType<symmetric_gradient_type,
- typename InputVector::value_type>::type>
+ std::vector<
+ solution_symmetric_gradient_type<typename InputVector::value_type>>
&symmetric_gradients) const;
/**
template <class InputVector>
void
get_function_symmetric_gradients_from_local_dof_values(
- const InputVector & dof_values,
- std::vector<typename OutputType<typename InputVector::value_type>::
- symmetric_gradient_type> &symmetric_gradients) const;
+ const InputVector &dof_values,
+ std::vector<
+ solution_symmetric_gradient_type<typename InputVector::value_type>>
+ &symmetric_gradients) const;
/**
* Return the divergence of the selected vector components of the finite
void
get_function_divergences(
const InputVector &fe_function,
- std::vector<typename ProductType<divergence_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const;
/**
void
get_function_divergences_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::divergence_type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const;
/**
void
get_function_curls(
const InputVector &fe_function,
- std::vector<
- typename ProductType<curl_type, typename InputVector::value_type>::type>
- &curls) const;
+ std::vector<solution_curl_type<typename InputVector::value_type>> &curls)
+ const;
/**
* This function relates to get_function_curls() in the same way
void
get_function_curls_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::curl_type>
- &curls) const;
+ std::vector<solution_curl_type<typename InputVector::value_type>> &curls)
+ const;
/**
* Return the Hessians of the selected vector components of the finite
void
get_function_hessians(
const InputVector &fe_function,
- std::vector<typename ProductType<hessian_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_hessian_type<typename InputVector::value_type>>
&hessians) const;
/**
void
get_function_hessians_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::hessian_type>
+ std::vector<solution_hessian_type<typename InputVector::value_type>>
&hessians) const;
/**
void
get_function_laplacians(
const InputVector &fe_function,
- std::vector<typename ProductType<value_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_laplacian_type<typename InputVector::value_type>>
&laplacians) const;
/**
void
get_function_laplacians_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::laplacian_type>
+ std::vector<solution_laplacian_type<typename InputVector::value_type>>
&laplacians) const;
/**
void
get_function_third_derivatives(
const InputVector &fe_function,
- std::vector<typename ProductType<third_derivative_type,
- typename InputVector::value_type>::type>
+ std::vector<
+ solution_third_derivative_type<typename InputVector::value_type>>
&third_derivatives) const;
/**
template <class InputVector>
void
get_function_third_derivatives_from_local_dof_values(
- const InputVector & dof_values,
- std::vector<typename OutputType<typename InputVector::value_type>::
- third_derivative_type> &third_derivatives) const;
+ const InputVector &dof_values,
+ std::vector<
+ solution_third_derivative_type<typename InputVector::value_type>>
+ &third_derivatives) const;
private:
/**
using divergence_type = dealii::Tensor<1, spacedim>;
/**
- * A struct that provides the output type for the product of the value
- * and derivatives of basis functions of the SymmetricTensor view and any @p Number type.
+ * An alias for the data type of the product of a @p Number and the
+ * values of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
*/
template <typename Number>
- struct OutputType
- {
- /**
- * An alias for the data type of the product of a @p Number and the
- * values of the view the SymmetricTensor class.
- */
- using value_type = typename ProductType<
- Number,
- typename SymmetricTensor<2, dim, spacedim>::value_type>::type;
+ using solution_value_type = typename ProductType<Number, value_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * divergences of the view the SymmetricTensor class.
- */
- using divergence_type = typename ProductType<
- Number,
- typename SymmetricTensor<2, dim, spacedim>::divergence_type>::type;
- };
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * divergences of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_divergence_type =
+ typename ProductType<Number, divergence_type>::type;
/**
* A structure where for each shape function we pre-compute a bunch of
void
get_function_values(
const InputVector &fe_function,
- std::vector<typename ProductType<value_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_value_type<typename InputVector::value_type>>
&values) const;
/**
void
get_function_values_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::value_type>
+ std::vector<solution_value_type<typename InputVector::value_type>>
&values) const;
/**
void
get_function_divergences(
const InputVector &fe_function,
- std::vector<typename ProductType<divergence_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const;
/**
void
get_function_divergences_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::divergence_type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const;
private:
using gradient_type = dealii::Tensor<3, spacedim>;
/**
- * A struct that provides the output type for the product of the value
- * and derivatives of basis functions of the Tensor view and any @p Number type.
+ * An alias for the data type of the product of a @p Number and the
+ * values of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
*/
template <typename Number>
- struct OutputType
- {
- /**
- * An alias for the data type of the product of a @p Number and the
- * values of the view the Tensor class.
- */
- using value_type = typename ProductType<
- Number,
- typename Tensor<2, dim, spacedim>::value_type>::type;
+ using solution_value_type = typename ProductType<Number, value_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * divergences of the view the Tensor class.
- */
- using divergence_type = typename ProductType<
- Number,
- typename Tensor<2, dim, spacedim>::divergence_type>::type;
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * divergences of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_divergence_type =
+ typename ProductType<Number, divergence_type>::type;
- /**
- * An alias for the data type of the product of a @p Number and the
- * gradient of the view the Tensor class.
- */
- using gradient_type = typename ProductType<
- Number,
- typename Tensor<2, dim, spacedim>::gradient_type>::type;
- };
+ /**
+ * An alias for the data type of the product of a @p Number and the
+ * gradient of the view this class provides. This is the data type of
+ * vector components of a finite element field whose degrees of
+ * freedom are described by a vector with elements of type @p Number.
+ */
+ template <typename Number>
+ using solution_gradient_type =
+ typename ProductType<Number, gradient_type>::type;
/**
* A structure where for each shape function we pre-compute a bunch of
void
get_function_values(
const InputVector &fe_function,
- std::vector<typename ProductType<value_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_value_type<typename InputVector::value_type>>
&values) const;
/**
void
get_function_values_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::value_type>
+ std::vector<solution_value_type<typename InputVector::value_type>>
&values) const;
/**
void
get_function_divergences(
const InputVector &fe_function,
- std::vector<typename ProductType<divergence_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const;
/**
void
get_function_divergences_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::divergence_type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const;
/**
void
get_function_gradients(
const InputVector &fe_function,
- std::vector<typename ProductType<gradient_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const;
/**
void
get_function_gradients_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::gradient_type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const;
private:
namespace MeshWorker
{
- namespace internal
- {
- /**
- * Alias used to deduce the OutputType when asking for values or gradients
- * of shape functions multiplied with the given @p NumberType.
- */
- template <int dim, int spacedim, typename NumberType, typename Extractor>
- using OutputType = typename FEValuesViews::View<dim, spacedim, Extractor>::
- template OutputType<NumberType>;
- } // namespace internal
-
/**
* A helper class to simplify the parallel assembly of linear and non-linear
* problems, and the evaluation of finite element fields.
* the documentation of the FEValues class for more information.
*/
template <typename Extractor, typename Number = double>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- value_type> &
+ 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));
* the documentation of the FEValues class for more information.
*/
template <typename Extractor, typename Number = double>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- gradient_type> &
+ 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));
* the documentation of the FEValues class for more information.
*/
template <typename Extractor, typename Number = double>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- symmetric_gradient_type> &
+ 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));
* the documentation of the FEValues class for more information.
*/
template <typename Extractor, typename Number = double>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- divergence_type> &
+ 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));
* the documentation of the FEValues class for more information.
*/
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));
+ 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));
/**
* For the solution vector identified by @p global_vector_name, compute
* the documentation of the FEValues class for more information.
*/
template <typename Extractor, typename Number = double>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- hessian_type> &
+ 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));
* the documentation of the FEValues class for more information.
*/
template <typename Extractor, typename Number = double>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- laplacian_type> &
+ 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));
* FiniteElement" in the documentation of the FEValues for more information.
*/
template <typename Extractor, typename Number = double>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- third_derivative_type> &
+ 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));
template <int dim, int spacedim>
template <typename Extractor, typename Number>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::value_type>
- &
- ScratchData<dim, spacedim>::get_values(
- const std::string &global_vector_name,
- const Extractor & variable,
- const Number dummy)
+ const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_value_type<Number>> &
+ ScratchData<dim, spacedim>::get_values(const std::string &global_vector_name,
+ const Extractor & variable,
+ const Number dummy)
{
const std::vector<Number> &independent_local_dofs =
get_local_dof_values(global_vector_name, dummy);
// Now build the return type
using RetType =
- std::vector<typename internal::
- OutputType<dim, spacedim, Number, Extractor>::value_type>;
+ std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_value_type<Number>>;
RetType &ret =
internal_data_storage.template get_or_add_object_with_name<RetType>(
template <int dim, int spacedim>
template <typename Extractor, typename Number>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- gradient_type> &
+ const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_gradient_type<Number>> &
ScratchData<dim, spacedim>::get_gradients(
const std::string &global_vector_name,
const Extractor & variable,
global_vector_name, variable, "_gradients_q", n_q_points, dummy);
// Now build the return type
- using RetType = std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- gradient_type>;
+ using RetType =
+ std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_gradient_type<Number>>;
RetType &ret =
internal_data_storage.template get_or_add_object_with_name<RetType>(
template <int dim, int spacedim>
template <typename Extractor, typename Number>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- hessian_type> &
+ const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_hessian_type<Number>> &
ScratchData<dim, spacedim>::get_hessians(
const std::string &global_vector_name,
const Extractor & variable,
// Now build the return type
using RetType =
- std::vector<typename internal::
- OutputType<dim, spacedim, Number, Extractor>::hessian_type>;
+ std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_hessian_type<Number>>;
RetType &ret =
internal_data_storage.template get_or_add_object_with_name<RetType>(
template <int dim, int spacedim>
template <typename Extractor, typename Number>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- laplacian_type> &
+ const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_laplacian_type<Number>> &
ScratchData<dim, spacedim>::get_laplacians(
const std::string &global_vector_name,
const Extractor & variable,
global_vector_name, variable, "_laplacians_q", n_q_points, dummy);
// Now build the return type
- using RetType = std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- laplacian_type>;
+ using RetType =
+ std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_laplacian_type<Number>>;
RetType &ret =
internal_data_storage.template get_or_add_object_with_name<RetType>(
template <int dim, int spacedim>
template <typename Extractor, typename Number>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- third_derivative_type> &
+ const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_third_derivative_type<Number>> &
ScratchData<dim, spacedim>::get_third_derivatives(
const std::string &global_vector_name,
const Extractor & variable,
global_vector_name, variable, "_third_derivatives_q", n_q_points, dummy);
// Now build the return type
- using RetType = std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- third_derivative_type>;
+ using RetType =
+ std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_third_derivative_type<Number>>;
RetType &ret =
internal_data_storage.template get_or_add_object_with_name<RetType>(
template <int dim, int spacedim>
template <typename Extractor, typename Number>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- symmetric_gradient_type> &
+ const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_symmetric_gradient_type<Number>> &
ScratchData<dim, spacedim>::get_symmetric_gradients(
const std::string &global_vector_name,
const Extractor & variable,
// Now build the return type
- using RetType = std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- symmetric_gradient_type>;
+ using RetType =
+ std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_symmetric_gradient_type<Number>>;
RetType &ret =
internal_data_storage.template get_or_add_object_with_name<RetType>(
template <int dim, int spacedim>
template <typename Extractor, typename Number>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- divergence_type> &
+ const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_divergence_type<Number>> &
ScratchData<dim, spacedim>::get_divergences(
const std::string &global_vector_name,
const Extractor & variable,
global_vector_name, variable, "_divergence_q", n_q_points, dummy);
// Now build the return type
- using RetType = std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::
- divergence_type>;
+ using RetType =
+ std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_divergence_type<Number>>;
RetType &ret =
internal_data_storage.template get_or_add_object_with_name<RetType>(
template <int dim, int spacedim>
template <typename Extractor, typename Number>
- const std::vector<
- typename internal::OutputType<dim, spacedim, Number, Extractor>::curl_type>
- &
- ScratchData<dim, spacedim>::get_curls(const std::string &global_vector_name,
- const Extractor & variable,
- const Number dummy)
+ const std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_curl_type<Number>> &
+ ScratchData<dim, spacedim>::get_curls(const std::string &global_vector_name,
+ const Extractor & variable,
+ const Number dummy)
{
const std::vector<Number> &independent_local_dofs =
get_local_dof_values(global_vector_name, dummy);
// Now build the return type
using RetType =
- std::vector<typename internal::
- OutputType<dim, spacedim, Number, Extractor>::curl_type>;
+ std::vector<typename FEValuesViews::View<dim, spacedim, Extractor>::
+ template solution_curl_type<Number>>;
RetType &ret =
internal_data_storage.template get_or_add_object_with_name<RetType>(
const ArrayView<Number> & dof_values,
const Table<2, dealii::Tensor<2, spacedim>> &shape_hessians,
const std::vector<typename Scalar<dim, spacedim>::ShapeFunctionData>
- & shape_function_data,
- std::vector<typename Scalar<dim, spacedim>::template OutputType<
- Number>::laplacian_type> &laplacians)
+ &shape_function_data,
+ std::vector<typename Scalar<dim, spacedim>::
+ template solution_laplacian_type<Number>> &laplacians)
{
const unsigned int dofs_per_cell = dof_values.size();
const unsigned int n_quadrature_points = laplacians.size();
- std::fill(laplacians.begin(),
- laplacians.end(),
- typename Scalar<dim, spacedim>::template OutputType<
- Number>::laplacian_type());
+ std::fill(
+ laplacians.begin(),
+ laplacians.end(),
+ typename Scalar<dim,
+ spacedim>::template solution_laplacian_type<Number>());
for (unsigned int shape_function = 0; shape_function < dofs_per_cell;
++shape_function)
const ArrayView<Number> & dof_values,
const Table<2, dealii::Tensor<1, spacedim>> &shape_gradients,
const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
- & shape_function_data,
- std::vector<typename Vector<dim, spacedim>::template OutputType<
- Number>::divergence_type> &divergences)
+ &shape_function_data,
+ std::vector<typename Vector<dim, spacedim>::
+ template solution_divergence_type<Number>> &divergences)
{
const unsigned int dofs_per_cell = dof_values.size();
const unsigned int n_quadrature_points = divergences.size();
- std::fill(divergences.begin(),
- divergences.end(),
- typename Vector<dim, spacedim>::template OutputType<
- Number>::divergence_type());
+ std::fill(
+ divergences.begin(),
+ divergences.end(),
+ typename Vector<dim,
+ spacedim>::template solution_divergence_type<Number>());
for (unsigned int shape_function = 0; shape_function < dofs_per_cell;
++shape_function)
const ArrayView<Number> & dof_values,
const Table<2, dealii::Tensor<2, spacedim>> &shape_hessians,
const std::vector<typename Vector<dim, spacedim>::ShapeFunctionData>
- & shape_function_data,
- std::vector<typename Vector<dim, spacedim>::template OutputType<
- Number>::laplacian_type> &laplacians)
+ &shape_function_data,
+ std::vector<typename Vector<dim, spacedim>::
+ template solution_laplacian_type<Number>> &laplacians)
{
const unsigned int dofs_per_cell = dof_values.size();
const unsigned int n_quadrature_points = laplacians.size();
- std::fill(laplacians.begin(),
- laplacians.end(),
- typename Vector<dim, spacedim>::template OutputType<
- Number>::laplacian_type());
+ std::fill(
+ laplacians.begin(),
+ laplacians.end(),
+ typename Vector<dim,
+ spacedim>::template solution_laplacian_type<Number>());
for (unsigned int shape_function = 0; shape_function < dofs_per_cell;
++shape_function)
typename SymmetricTensor<2, dim, spacedim>::ShapeFunctionData>
&shape_function_data,
std::vector<typename SymmetricTensor<2, dim, spacedim>::
- template OutputType<Number>::divergence_type> &divergences)
+ template solution_divergence_type<Number>> &divergences)
{
const unsigned int dofs_per_cell = dof_values.size();
const unsigned int n_quadrature_points = divergences.size();
std::fill(divergences.begin(),
divergences.end(),
- typename SymmetricTensor<2, dim, spacedim>::template OutputType<
- Number>::divergence_type());
+ typename SymmetricTensor<2, dim, spacedim>::
+ template solution_divergence_type<Number>());
for (unsigned int shape_function = 0; shape_function < dofs_per_cell;
++shape_function)
const ArrayView<Number> & dof_values,
const Table<2, dealii::Tensor<1, spacedim>> &shape_gradients,
const std::vector<typename Tensor<2, dim, spacedim>::ShapeFunctionData>
- & shape_function_data,
- std::vector<typename Tensor<2, dim, spacedim>::template OutputType<
- Number>::divergence_type> &divergences)
+ &shape_function_data,
+ std::vector<typename Tensor<2, dim, spacedim>::
+ template solution_divergence_type<Number>> &divergences)
{
const unsigned int dofs_per_cell = dof_values.size();
const unsigned int n_quadrature_points = divergences.size();
- std::fill(divergences.begin(),
- divergences.end(),
- typename Tensor<2, dim, spacedim>::template OutputType<
- Number>::divergence_type());
+ std::fill(
+ divergences.begin(),
+ divergences.end(),
+ typename Tensor<2, dim, spacedim>::template solution_divergence_type<
+ Number>());
for (unsigned int shape_function = 0; shape_function < dofs_per_cell;
++shape_function)
const ArrayView<Number> & dof_values,
const Table<2, dealii::Tensor<1, spacedim>> &shape_gradients,
const std::vector<typename Tensor<2, dim, spacedim>::ShapeFunctionData>
- & shape_function_data,
- std::vector<typename Tensor<2, dim, spacedim>::template OutputType<
- Number>::gradient_type> &gradients)
+ &shape_function_data,
+ std::vector<typename Tensor<2, dim, spacedim>::
+ template solution_gradient_type<Number>> &gradients)
{
const unsigned int dofs_per_cell = dof_values.size();
const unsigned int n_quadrature_points = gradients.size();
- std::fill(gradients.begin(),
- gradients.end(),
- typename Tensor<2, dim, spacedim>::template OutputType<
- Number>::gradient_type());
+ std::fill(
+ gradients.begin(),
+ gradients.end(),
+ typename Tensor<2, dim, spacedim>::template solution_gradient_type<
+ Number>());
for (unsigned int shape_function = 0; shape_function < dofs_per_cell;
++shape_function)
void
Scalar<dim, spacedim>::get_function_values(
const InputVector &fe_function,
- std::vector<
- typename ProductType<value_type, typename InputVector::value_type>::type>
- &values) const
+ std::vector<solution_value_type<typename InputVector::value_type>> &values)
+ const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
Scalar<dim, spacedim>::get_function_values_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::value_type>
- &values) const
+ std::vector<solution_value_type<typename InputVector::value_type>> &values)
+ const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
Scalar<dim, spacedim>::get_function_gradients(
const InputVector &fe_function,
- std::vector<typename ProductType<gradient_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const
{
Assert(fe_values->update_flags & update_gradients,
void
Scalar<dim, spacedim>::get_function_gradients_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::gradient_type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const
{
Assert(fe_values->update_flags & update_gradients,
void
Scalar<dim, spacedim>::get_function_hessians(
const InputVector &fe_function,
- std::vector<typename ProductType<hessian_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_hessian_type<typename InputVector::value_type>>
&hessians) const
{
Assert(fe_values->update_flags & update_hessians,
void
Scalar<dim, spacedim>::get_function_hessians_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::hessian_type>
+ std::vector<solution_hessian_type<typename InputVector::value_type>>
&hessians) const
{
Assert(fe_values->update_flags & update_hessians,
void
Scalar<dim, spacedim>::get_function_laplacians(
const InputVector &fe_function,
- std::vector<
- typename ProductType<value_type, typename InputVector::value_type>::type>
+ std::vector<solution_laplacian_type<typename InputVector::value_type>>
&laplacians) const
{
Assert(fe_values->update_flags & update_hessians,
void
Scalar<dim, spacedim>::get_function_laplacians_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::laplacian_type>
+ std::vector<solution_laplacian_type<typename InputVector::value_type>>
&laplacians) const
{
Assert(fe_values->update_flags & update_hessians,
void
Scalar<dim, spacedim>::get_function_third_derivatives(
const InputVector &fe_function,
- std::vector<typename ProductType<third_derivative_type,
- typename InputVector::value_type>::type>
+ std::vector<
+ solution_third_derivative_type<typename InputVector::value_type>>
&third_derivatives) const
{
Assert(fe_values->update_flags & update_3rd_derivatives,
template <class InputVector>
void
Scalar<dim, spacedim>::get_function_third_derivatives_from_local_dof_values(
- const InputVector & dof_values,
- std::vector<typename OutputType<typename InputVector::value_type>::
- third_derivative_type> &third_derivatives) const
+ const InputVector &dof_values,
+ std::vector<
+ solution_third_derivative_type<typename InputVector::value_type>>
+ &third_derivatives) const
{
Assert(fe_values->update_flags & update_3rd_derivatives,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
Vector<dim, spacedim>::get_function_values(
const InputVector &fe_function,
- std::vector<
- typename ProductType<value_type, typename InputVector::value_type>::type>
- &values) const
+ std::vector<solution_value_type<typename InputVector::value_type>> &values)
+ const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
Vector<dim, spacedim>::get_function_values_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::value_type>
- &values) const
+ std::vector<solution_value_type<typename InputVector::value_type>> &values)
+ const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
Vector<dim, spacedim>::get_function_gradients(
const InputVector &fe_function,
- std::vector<typename ProductType<gradient_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const
{
Assert(fe_values->update_flags & update_gradients,
void
Vector<dim, spacedim>::get_function_gradients_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::gradient_type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const
{
Assert(fe_values->update_flags & update_gradients,
void
Vector<dim, spacedim>::get_function_symmetric_gradients(
const InputVector &fe_function,
- std::vector<typename ProductType<symmetric_gradient_type,
- typename InputVector::value_type>::type>
+ std::vector<
+ solution_symmetric_gradient_type<typename InputVector::value_type>>
&symmetric_gradients) const
{
Assert(fe_values->update_flags & update_gradients,
template <class InputVector>
void
Vector<dim, spacedim>::get_function_symmetric_gradients_from_local_dof_values(
- const InputVector & dof_values,
- std::vector<typename OutputType<typename InputVector::value_type>::
- symmetric_gradient_type> &symmetric_gradients) const
+ const InputVector &dof_values,
+ std::vector<
+ solution_symmetric_gradient_type<typename InputVector::value_type>>
+ &symmetric_gradients) const
{
Assert(fe_values->update_flags & update_gradients,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
Vector<dim, spacedim>::get_function_divergences(
const InputVector &fe_function,
- std::vector<typename ProductType<divergence_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const
{
Assert(fe_values->update_flags & update_gradients,
void
Vector<dim, spacedim>::get_function_divergences_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::divergence_type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const
{
Assert(fe_values->update_flags & update_gradients,
void
Vector<dim, spacedim>::get_function_curls(
const InputVector &fe_function,
- std::vector<
- typename ProductType<curl_type, typename InputVector::value_type>::type>
- &curls) const
+ std::vector<solution_curl_type<typename InputVector::value_type>> &curls)
+ const
{
Assert(fe_values->update_flags & update_gradients,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
Vector<dim, spacedim>::get_function_curls_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::curl_type> &curls)
+ std::vector<solution_curl_type<typename InputVector::value_type>> &curls)
const
{
Assert(fe_values->update_flags & update_gradients,
void
Vector<dim, spacedim>::get_function_hessians(
const InputVector &fe_function,
- std::vector<typename ProductType<hessian_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_hessian_type<typename InputVector::value_type>>
&hessians) const
{
Assert(fe_values->update_flags & update_hessians,
void
Vector<dim, spacedim>::get_function_hessians_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::hessian_type>
+ std::vector<solution_hessian_type<typename InputVector::value_type>>
&hessians) const
{
Assert(fe_values->update_flags & update_hessians,
void
Vector<dim, spacedim>::get_function_laplacians(
const InputVector &fe_function,
- std::vector<
- typename ProductType<value_type, typename InputVector::value_type>::type>
+ std::vector<solution_value_type<typename InputVector::value_type>>
&laplacians) const
{
Assert(fe_values->update_flags & update_hessians,
void
Vector<dim, spacedim>::get_function_laplacians_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::laplacian_type>
+ std::vector<solution_laplacian_type<typename InputVector::value_type>>
&laplacians) const
{
Assert(fe_values->update_flags & update_hessians,
void
Vector<dim, spacedim>::get_function_third_derivatives(
const InputVector &fe_function,
- std::vector<typename ProductType<third_derivative_type,
- typename InputVector::value_type>::type>
+ std::vector<
+ solution_third_derivative_type<typename InputVector::value_type>>
&third_derivatives) const
{
Assert(fe_values->update_flags & update_3rd_derivatives,
template <class InputVector>
void
Vector<dim, spacedim>::get_function_third_derivatives_from_local_dof_values(
- const InputVector & dof_values,
- std::vector<typename OutputType<typename InputVector::value_type>::
- third_derivative_type> &third_derivatives) const
+ const InputVector &dof_values,
+ std::vector<
+ solution_third_derivative_type<typename InputVector::value_type>>
+ &third_derivatives) const
{
Assert(fe_values->update_flags & update_3rd_derivatives,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
SymmetricTensor<2, dim, spacedim>::get_function_values(
const InputVector &fe_function,
- std::vector<
- typename ProductType<value_type, typename InputVector::value_type>::type>
- &values) const
+ std::vector<solution_value_type<typename InputVector::value_type>> &values)
+ const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
SymmetricTensor<2, dim, spacedim>::get_function_values_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::value_type>
- &values) const
+ std::vector<solution_value_type<typename InputVector::value_type>> &values)
+ const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
SymmetricTensor<2, dim, spacedim>::get_function_divergences(
const InputVector &fe_function,
- std::vector<typename ProductType<divergence_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const
{
Assert(fe_values->update_flags & update_gradients,
SymmetricTensor<2, dim, spacedim>::
get_function_divergences_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::divergence_type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const
{
Assert(fe_values->update_flags & update_gradients,
void
Tensor<2, dim, spacedim>::get_function_values(
const InputVector &fe_function,
- std::vector<
- typename ProductType<value_type, typename InputVector::value_type>::type>
- &values) const
+ std::vector<solution_value_type<typename InputVector::value_type>> &values)
+ const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
Tensor<2, dim, spacedim>::get_function_values_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::value_type>
- &values) const
+ std::vector<solution_value_type<typename InputVector::value_type>> &values)
+ const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
void
Tensor<2, dim, spacedim>::get_function_divergences(
const InputVector &fe_function,
- std::vector<typename ProductType<divergence_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const
{
Assert(fe_values->update_flags & update_gradients,
void
Tensor<2, dim, spacedim>::get_function_divergences_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::divergence_type>
+ std::vector<solution_divergence_type<typename InputVector::value_type>>
&divergences) const
{
Assert(fe_values->update_flags & update_gradients,
void
Tensor<2, dim, spacedim>::get_function_gradients(
const InputVector &fe_function,
- std::vector<typename ProductType<gradient_type,
- typename InputVector::value_type>::type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const
{
Assert(fe_values->update_flags & update_gradients,
void
Tensor<2, dim, spacedim>::get_function_gradients_from_local_dof_values(
const InputVector &dof_values,
- std::vector<
- typename OutputType<typename InputVector::value_type>::gradient_type>
+ std::vector<solution_gradient_type<typename InputVector::value_type>>
&gradients) const
{
Assert(fe_values->update_flags & update_gradients,
template void
FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>::
get_function_values_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::value_type> &) const;
+ const VEC<Number> &, std::vector<solution_value_type<Number>> &) const;
template void
FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>::
get_function_gradients_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::gradient_type> &) const;
+ const VEC<Number> &, std::vector<solution_gradient_type<Number>> &)
+ const;
template void
FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>::
get_function_hessians_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::hessian_type> &) const;
+ const VEC<Number> &, std::vector<solution_hessian_type<Number>> &)
+ const;
template void
FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>::
get_function_laplacians_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::value_type> &) const;
+ const VEC<Number> &, std::vector<solution_value_type<Number>> &) const;
template void
FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>::
get_function_third_derivatives_from_local_dof_values<VEC<Number>>(
const VEC<Number> &,
- std::vector<typename OutputType<Number>::third_derivative_type> &)
- const;
+ std::vector<solution_third_derivative_type<Number>> &) const;
template void
FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
get_function_values_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::value_type> &) const;
+ const VEC<Number> &, std::vector<solution_value_type<Number>> &) const;
template void
FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
get_function_gradients_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::gradient_type> &) const;
+ const VEC<Number> &, std::vector<solution_gradient_type<Number>> &)
+ const;
template void
FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
get_function_symmetric_gradients_from_local_dof_values<VEC<Number>>(
const VEC<Number> &,
- std::vector<typename OutputType<Number>::symmetric_gradient_type> &)
- const;
+ std::vector<solution_symmetric_gradient_type<Number>> &) const;
template void
FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
get_function_divergences_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::divergence_type> &) const;
+ const VEC<Number> &, std::vector<solution_divergence_type<Number>> &)
+ const;
template void
FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
get_function_curls_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::curl_type> &) const;
+ const VEC<Number> &, std::vector<solution_curl_type<Number>> &) const;
template void
FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
get_function_hessians_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::hessian_type> &) const;
+ const VEC<Number> &, std::vector<solution_hessian_type<Number>> &)
+ const;
template void
FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
get_function_laplacians_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::value_type> &) const;
+ const VEC<Number> &, std::vector<solution_value_type<Number>> &) const;
template void
FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
get_function_third_derivatives_from_local_dof_values<VEC<Number>>(
const VEC<Number> &,
- std::vector<typename OutputType<Number>::third_derivative_type> &)
- const;
+ std::vector<solution_third_derivative_type<Number>> &) const;
- template void FEValuesViews::
- SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension>::
- get_function_values_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::value_type> &) const;
+ template void FEValuesViews::SymmetricTensor<2,
+ deal_II_dimension,
+ deal_II_space_dimension>::
+ get_function_values_from_local_dof_values<VEC<Number>>(
+ const VEC<Number> &, std::vector<solution_value_type<Number>> &) const;
template void FEValuesViews::
SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension>::
get_function_divergences_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::divergence_type> &) const;
+ const VEC<Number> &, std::vector<solution_divergence_type<Number>> &)
+ const;
template void
FEValuesViews::Tensor<2, deal_II_dimension, deal_II_space_dimension>::
get_function_values_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::value_type> &) const;
+ const VEC<Number> &, std::vector<solution_value_type<Number>> &) const;
template void
FEValuesViews::Tensor<2, deal_II_dimension, deal_II_space_dimension>::
get_function_divergences_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::divergence_type> &) const;
+ const VEC<Number> &, std::vector<solution_divergence_type<Number>> &)
+ const;
template void
FEValuesViews::Tensor<2, deal_II_dimension, deal_II_space_dimension>::
get_function_gradients_from_local_dof_values<VEC<Number>>(
- const VEC<Number> &,
- std::vector<typename OutputType<Number>::gradient_type> &) const;
+ const VEC<Number> &, std::vector<solution_gradient_type<Number>> &)
+ const;
#endif
}