deal.II version GIT relicensing-6834-g5b78e6bcdf 2026-10-01 11:20:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
derivative_approximation.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception OR LGPL-2.1-or-later
4// Copyright (C) 2000 - 2023 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Detailed license information governing the source code and contributions
9// can be found in LICENSE.md and CONTRIBUTING.md at the top level directory.
10//
11// -----------------------------------------------------------------------------
12
13#ifndef dealii_derivative_approximation_h
14#define dealii_derivative_approximation_h
15
16#include <deal.II/base/config.h>
17
20
22
24#include <deal.II/fe/mapping.h>
25
27
28#include <deal.II/lac/vector.h>
29#ifdef _MSC_VER
31#endif
32#include <utility>
33
35
159{
175 template <int dim, class InputVector, int spacedim>
176 void
178 const DoFHandler<dim, spacedim> &dof,
179 const InputVector &solution,
181 const unsigned int component = 0);
182
186 template <int dim, class InputVector, int spacedim>
187 void
189 const InputVector &solution,
191 const unsigned int component = 0);
192
210 template <int dim, class InputVector, int spacedim>
211 void
213 const DoFHandler<dim, spacedim> &dof,
214 const InputVector &solution,
216 const unsigned int component = 0);
217
221 template <int dim, class InputVector, int spacedim>
222 void
224 const InputVector &solution,
226 const unsigned int component = 0);
227
241 template <int dim, int spacedim, class InputVector, int order>
242 void
244 const Mapping<dim, spacedim> &mapping,
245 const DoFHandler<dim, spacedim> &dof,
246 const InputVector &solution,
247#ifndef _MSC_VER
249#else
251 &cell,
252#endif
253 Tensor<order, dim> &derivative,
254 const unsigned int component = 0);
255
259 template <int dim, int spacedim, class InputVector, int order>
260 void
262 const DoFHandler<dim, spacedim> &dof,
263 const InputVector &solution,
264#ifndef _MSC_VER
266#else
268 &cell,
269#endif
270 Tensor<order, dim> &derivative,
271 const unsigned int component = 0);
272
276 template <int dim, int order>
277 double
278 derivative_norm(const Tensor<order, dim> &derivative);
279
284 int,
285 int,
286 << "The output vector needs to have a size equal "
287 "to the number of active cells of your triangulation "
288 "but has length "
289 << arg1 << "There are " << arg2
290 << " active cells in your triangulation.");
295 "While computing a finite difference approximation to "
296 "derivatives, the algorithm encountered a cell on which "
297 "the number of linearly "
298 "independent directions that span the matrix Y (discussed "
299 "in the documentation of the DerivativeApproximation "
300 "class) is not equal to dim. The matrix Y then is "
301 "rank deficient and can not be inverted. A common reason "
302 "why this might be happening is if a cell has neither "
303 "left/right (or up/down, or front/back) neighbors, for "
304 "example because the mesh is too coarse.");
305} // namespace DerivativeApproximation
306
307
308
310
311#endif
Abstract base class for mapping classes.
Definition mapping.h:318
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39
static ::ExceptionBase & ExcInsufficientDirections()
static ::ExceptionBase & ExcVectorLengthVsNActiveCells(int arg1, int arg2)
#define DeclException2(Exception2, type1, type2, outsequence)
#define DeclExceptionMsg(Exception, defaulttext)
typename ActiveSelector::active_cell_iterator active_cell_iterator
void approximate_gradient(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const InputVector &solution, Vector< float > &derivative_norm, const unsigned int component=0)
double derivative_norm(const Tensor< order, dim > &derivative)
void approximate_derivative_tensor(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const InputVector &solution, const typename DoFHandler< dim, spacedim >::active_cell_iterator &cell, Tensor< order, dim > &derivative, const unsigned int component=0)
void approximate_second_derivative(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const InputVector &solution, Vector< float > &derivative_norm, const unsigned int component=0)