13#ifndef dealii_error_estimator_h
14#define dealii_error_estimator_h
32template <
int dim,
int spacedim>
262template <
int dim,
int spacedim = dim>
341 template <
typename Number>
362 template <
typename Number>
391 template <
typename Number>
412 template <
typename Number>
433 template <
typename Number>
458 template <
typename Number>
460 "Use the version of this function which takes a hp::MappingCollection instead.")
464 const
hp::QCollection<dim - 1> &quadrature,
481 template <
typename Number>
502 template <
typename Number>
527 template <
typename Number>
529 "Use the version of this function which takes a hp::MappingCollection instead.")
533 const
hp::QCollection<dim - 1> &quadrature,
550 template <
typename Number>
570 "You provided a ComponentMask argument that is invalid. "
571 "Component masks need to be either default constructed "
572 "(in which case they indicate that every component is "
573 "selected) or need to have a length equal to the number "
574 "of vector components of the finite element in use "
575 "by the DoFHandler object. In the latter case, at "
576 "least one component needs to be selected.");
582 "If you do specify the argument for a (possibly "
583 "spatially variable) coefficient function for this function, "
584 "then it needs to refer to a coefficient that is either "
585 "scalar (has one vector component) or has as many vector "
586 "components as there are in the finite element used by "
587 "the DoFHandler argument.");
595 <<
"You provided a function map that for boundary indicator "
596 << arg1 <<
" specifies a function with " << arg2
597 <<
" vector components. However, the finite "
598 "element in use has "
600 <<
" components, and these two numbers need to match.");
607 <<
"The number of input vectors, " << arg1
608 <<
" needs to be equal to the number of output vectors, "
610 <<
". This is not the case in your call of this function.");
615 "You need to specify at least one solution vector as "
630template <
int spacedim>
673 template <
typename Number>
684 const Function<spacedim> *coefficient =
nullptr,
696 template <
typename Number>
699 const DoFHandler<1, spacedim> &dof,
700 const Quadrature<0> &quadrature,
703 const ReadVector<Number> &solution,
704 Vector<float> &error,
705 const ComponentMask &component_mask = {},
706 const Function<spacedim> *coefficients =
nullptr,
727 template <
typename Number>
730 const Mapping<1, spacedim> &
mapping,
731 const DoFHandler<1, spacedim> &dof,
732 const Quadrature<0> &quadrature,
735 const ArrayView<
const ReadVector<Number> *> &solutions,
736 ArrayView<Vector<float> *> &errors,
737 const ComponentMask &component_mask = {},
738 const Function<spacedim> *coefficients =
nullptr,
750 template <
typename Number>
753 const DoFHandler<1, spacedim> &dof,
754 const Quadrature<0> &quadrature,
757 const ArrayView<
const ReadVector<Number> *> &solutions,
758 ArrayView<Vector<float> *> &errors,
759 const ComponentMask &component_mask = {},
760 const Function<spacedim> *coefficients =
nullptr,
772 template <
typename Number>
775 const hp::MappingCollection<1, spacedim> &
mapping,
776 const DoFHandler<1, spacedim> &dof,
777 const hp::QCollection<0> &quadrature,
780 const ReadVector<Number> &solution,
781 Vector<float> &error,
782 const ComponentMask &component_mask = {},
783 const Function<spacedim> *coefficients =
nullptr,
798 template <
typename Number>
800 "Use the version of this function which takes a hp::MappingCollection instead.")
802 const Mapping<1, spacedim> &
mapping,
803 const DoFHandler<1, spacedim> &dof,
804 const hp::QCollection<0> &quadrature,
805 const std::map<types::boundary_id, const Function<spacedim, Number> *>
807 const ReadVector<Number> &solution,
808 Vector<
float> &error,
809 const ComponentMask &component_mask = {},
810 const Function<spacedim> *coefficients =
nullptr,
822 template <
typename Number>
825 const DoFHandler<1, spacedim> &dof,
826 const hp::QCollection<0> &quadrature,
829 const ReadVector<Number> &solution,
830 Vector<float> &error,
831 const ComponentMask &component_mask = {},
832 const Function<spacedim> *coefficients =
nullptr,
844 template <
typename Number>
847 const hp::MappingCollection<1, spacedim> &
mapping,
848 const DoFHandler<1, spacedim> &dof,
849 const hp::QCollection<0> &quadrature,
852 const ArrayView<
const ReadVector<Number> *> &solutions,
853 ArrayView<Vector<float> *> &errors,
854 const ComponentMask &component_mask = {},
855 const Function<spacedim> *coefficients =
nullptr,
870 template <
typename Number>
872 "Use the version of this function which takes a hp::MappingCollection instead.")
874 const Mapping<1, spacedim> &
mapping,
875 const DoFHandler<1, spacedim> &dof,
876 const hp::QCollection<0> &quadrature,
877 const std::map<types::boundary_id, const Function<spacedim, Number> *>
879 const ArrayView<const ReadVector<Number> *> &solutions,
880 ArrayView<Vector<
float> *> &errors,
881 const ComponentMask &component_mask = {},
882 const Function<spacedim> *coefficients =
nullptr,
894 template <
typename Number>
897 const DoFHandler<1, spacedim> &dof,
898 const hp::QCollection<0> &quadrature,
901 const ArrayView<
const ReadVector<Number> *> &solutions,
902 ArrayView<Vector<float> *> &errors,
903 const ComponentMask &component_mask = {},
904 const Function<spacedim> *coefficients =
nullptr,
916 "You provided a ComponentMask argument that is invalid. "
917 "Component masks need to be either default constructed "
918 "(in which case they indicate that every component is "
919 "selected) or need to have a length equal to the number "
920 "of vector components of the finite element in use "
921 "by the DoFHandler object. In the latter case, at "
922 "least one component needs to be selected.");
929 "If you do specify the argument for a (possibly "
930 "spatially variable) coefficient function for this function, "
931 "then it needs to refer to a coefficient that is either "
932 "scalar (has one vector component) or has as many vector "
933 "components as there are in the finite element used by "
934 "the DoFHandler argument.");
943 <<
"You provided a function map that for boundary indicator "
944 << arg1 <<
" specifies a function with " << arg2
945 <<
" vector components. However, the finite "
946 "element in use has "
948 <<
" components, and these two numbers need to match.");
956 <<
"The number of input vectors, " << arg1
957 <<
" needs to be equal to the number of output vectors, "
959 <<
". This is not the case in your call of this function.");
965 "You need to specify at least one solution vector as "
@ cell_diameter
Kelly error estimator with the factor .
@ face_diameter_over_twice_max_degree
@ cell_diameter_over_24
Kelly error estimator with the factor .
static void estimate(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const Quadrature< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, Number > * > &neumann_bc, const ReadVector< Number > &solution, Vector< float > &error, const ComponentMask &component_mask={}, const Function< spacedim > *coefficients=nullptr, const unsigned int n_threads=numbers::invalid_unsigned_int, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id, const types::material_id material_id=numbers::invalid_material_id, const Strategy strategy=cell_diameter_over_24)
static void estimate(const DoFHandler< dim, spacedim > &dof, const Quadrature< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, Number > * > &neumann_bc, const ArrayView< const ReadVector< Number > * > &solutions, ArrayView< Vector< float > * > &errors, const ComponentMask &component_mask={}, const Function< spacedim > *coefficients=nullptr, const unsigned int n_threads=numbers::invalid_unsigned_int, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id, const types::material_id material_id=numbers::invalid_material_id, const Strategy strategy=cell_diameter_over_24)
static void estimate(const Mapping< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const Quadrature< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, Number > * > &neumann_bc, const ArrayView< const ReadVector< Number > * > &solutions, ArrayView< Vector< float > * > &errors, const ComponentMask &component_mask={}, const Function< spacedim > *coefficients=nullptr, const unsigned int n_threads=numbers::invalid_unsigned_int, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id, const types::material_id material_id=numbers::invalid_material_id, const Strategy strategy=cell_diameter_over_24)
static void estimate(const DoFHandler< dim, spacedim > &dof, const hp::QCollection< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, Number > * > &neumann_bc, const ArrayView< const ReadVector< Number > * > &solutions, ArrayView< Vector< float > * > &errors, const ComponentMask &component_mask={}, const Function< spacedim > *coefficients=nullptr, const unsigned int n_threads=numbers::invalid_unsigned_int, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id, const types::material_id material_id=numbers::invalid_material_id, const Strategy strategy=cell_diameter_over_24)
static void estimate(const hp::MappingCollection< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const hp::QCollection< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, Number > * > &neumann_bc, const ReadVector< Number > &solution, Vector< float > &error, const ComponentMask &component_mask={}, const Function< spacedim > *coefficients=nullptr, const unsigned int n_threads=numbers::invalid_unsigned_int, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id, const types::material_id material_id=numbers::invalid_material_id, const Strategy strategy=cell_diameter_over_24)
@ face_diameter_over_twice_max_degree
@ cell_diameter_over_24
Kelly error estimator with the factor .
@ cell_diameter
Kelly error estimator with the factor .
static void estimate(const DoFHandler< dim, spacedim > &dof, const Quadrature< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, Number > * > &neumann_bc, const ReadVector< Number > &solution, Vector< float > &error, const ComponentMask &component_mask={}, const Function< spacedim > *coefficients=nullptr, const unsigned int n_threads=numbers::invalid_unsigned_int, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id, const types::material_id material_id=numbers::invalid_material_id, const Strategy strategy=cell_diameter_over_24)
static void estimate(const DoFHandler< dim, spacedim > &dof, const hp::QCollection< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, Number > * > &neumann_bc, const ReadVector< Number > &solution, Vector< float > &error, const ComponentMask &component_mask={}, const Function< spacedim > *coefficients=nullptr, const unsigned int n_threads=numbers::invalid_unsigned_int, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id, const types::material_id material_id=numbers::invalid_material_id, const Strategy strategy=cell_diameter_over_24)
static void estimate(const hp::MappingCollection< dim, spacedim > &mapping, const DoFHandler< dim, spacedim > &dof, const hp::QCollection< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, Number > * > &neumann_bc, const ArrayView< const ReadVector< Number > * > &solutions, ArrayView< Vector< float > * > &errors, const ComponentMask &component_mask={}, const Function< spacedim > *coefficients=nullptr, const unsigned int n_threads=numbers::invalid_unsigned_int, const types::subdomain_id subdomain_id=numbers::invalid_subdomain_id, const types::material_id material_id=numbers::invalid_material_id, const Strategy strategy=cell_diameter_over_24)
Abstract base class for mapping classes.
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_DEPRECATED_WITH_COMMENT(comment)
#define DEAL_II_CXX20_REQUIRES(condition)
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcInvalidBoundaryFunction(types::boundary_id arg1, int arg2, int arg3)
static ::ExceptionBase & ExcInvalidBoundaryFunction(types::boundary_id arg1, int arg2, int arg3)
static ::ExceptionBase & ExcIncompatibleNumberOfElements(int arg1, int arg2)
static ::ExceptionBase & ExcNoSolutions()
#define DeclException2(Exception2, type1, type2, outsequence)
#define DeclExceptionMsg(Exception, defaulttext)
static ::ExceptionBase & ExcInvalidComponentMask()
#define DeclException3(Exception3, type1, type2, type3, outsequence)
static ::ExceptionBase & ExcInvalidCoefficient()
static ::ExceptionBase & ExcInvalidCoefficient()
static ::ExceptionBase & ExcNoSolutions()
static ::ExceptionBase & ExcIncompatibleNumberOfElements(int arg1, int arg2)
MappingQ< dim, spacedim > StaticMappingQ1< dim, spacedim >::mapping
constexpr unsigned int invalid_unsigned_int
constexpr types::material_id invalid_material_id
constexpr types::subdomain_id invalid_subdomain_id
unsigned int subdomain_id