16 #ifndef dealii__derivative_approximation_h 17 #define dealii__derivative_approximation_h 19 #include <deal.II/base/config.h> 20 #include <deal.II/base/exceptions.h> 21 #include <deal.II/base/std_cxx11/tuple.h> 22 #include <deal.II/base/synchronous_iterator.h> 23 #include <deal.II/fe/fe_update_flags.h> 24 #include <deal.II/fe/mapping.h> 25 #include <deal.II/lac/vector.h> 26 #include <deal.II/grid/filtered_iterator.h> 28 # include <deal.II/dofs/dof_accessor.h> 32 DEAL_II_NAMESPACE_OPEN
34 template <
int dim,
int spacedim>
class DoFHandler;
37 template <
int dim,
int spacedim>
class DoFHandler;
181 template <
int dim,
template <
int,
int>
class DoFHandlerType,
class InputVector,
int spacedim>
184 const DoFHandlerType<dim,spacedim> &dof,
185 const InputVector &solution,
187 const unsigned int component = 0);
193 template <
int dim,
template <
int,
int>
class DoFHandlerType,
class InputVector,
int spacedim>
195 approximate_gradient (
const DoFHandlerType<dim,spacedim> &dof,
196 const InputVector &solution,
198 const unsigned int component = 0);
217 template <
int dim,
template <
int,
int>
class DoFHandlerType,
class InputVector,
int spacedim>
220 const DoFHandlerType<dim,spacedim> &dof,
221 const InputVector &solution,
223 const unsigned int component = 0);
229 template <
int dim,
template <
int,
int>
class DoFHandlerType,
class InputVector,
int spacedim>
231 approximate_second_derivative (
const DoFHandlerType<dim,spacedim> &dof,
232 const InputVector &solution,
234 const unsigned int component = 0);
249 template <
typename DoFHandlerType,
int dim,
int spacedim,
class InputVector,
int order>
253 const DoFHandlerType &dof,
254 const InputVector &solution,
256 const typename DoFHandlerType::active_cell_iterator &cell,
261 const unsigned int component = 0);
266 template <
typename DoFHandlerType,
int dim,
int spacedim,
class InputVector,
int order>
268 approximate_derivative_tensor
269 (
const DoFHandlerType &dof,
270 const InputVector &solution,
272 const typename DoFHandlerType::active_cell_iterator &cell,
277 const unsigned int component = 0);
282 template <
int dim,
int order>
291 <<
"The output vector needs to have a size equal " 292 "to the number of active cells of your triangulation " 293 "but has length " << arg1 <<
"There are " 294 << arg2 <<
" active cells in your triangulation.");
299 "We have encountered a cell on which the number of linearly " 300 "independent directions that span the matrix Y (discussed " 301 "in the documentation of the DerivativeApproximation " 302 "class) is not equal to dim. The matrix Y then is " 303 "rank deficient and can not be inverted.");
308 DEAL_II_NAMESPACE_CLOSE
void approximate_derivative_tensor(const Mapping< dim, spacedim > &mapping, const DoFHandlerType &dof, const InputVector &solution, const typename DoFHandlerType::active_cell_iterator &cell, Tensor< order, dim > &derivative, const unsigned int component=0)
#define DeclException2(Exception2, type1, type2, outsequence)
Abstract base class for mapping classes.
#define DeclExceptionMsg(Exception, defaulttext)
double derivative_norm(const Tensor< order, dim > &derivative)
void approximate_second_derivative(const Mapping< dim, spacedim > &mapping, const DoFHandlerType< dim, spacedim > &dof, const InputVector &solution, Vector< float > &derivative_norm, const unsigned int component=0)
void approximate_gradient(const Mapping< dim, spacedim > &mapping, const DoFHandlerType< dim, spacedim > &dof, const InputVector &solution, Vector< float > &derivative_norm, const unsigned int component=0)