16#ifndef dealii_error_estimator_h
17#define dealii_error_estimator_h
259template <
int dim,
int spacedim = dim>
338 template <
typename InputVector>
347 const InputVector & solution,
360 template <
typename InputVector>
368 const InputVector & solution,
390 template <
typename InputVector>
399 const std::vector<const InputVector *> &solutions,
412 template <
typename InputVector>
420 const std::vector<const InputVector *> &solutions,
434 template <
typename InputVector>
443 const InputVector & solution,
457 template <
typename InputVector>
465 const InputVector & solution,
479 template <
typename InputVector>
488 const std::vector<const InputVector *> &solutions,
502 template <
typename InputVector>
510 const std::vector<const InputVector *> &solutions,
523 "You provided a ComponentMask argument that is invalid. "
524 "Component masks need to be either default constructed "
525 "(in which case they indicate that every component is "
526 "selected) or need to have a length equal to the number "
527 "of vector components of the finite element in use "
528 "by the DoFHandler object. In the latter case, at "
529 "least one component needs to be selected.");
535 "If you do specify the argument for a (possibly "
536 "spatially variable) coefficient function for this function, "
537 "then it needs to refer to a coefficient that is either "
538 "scalar (has one vector component) or has as many vector "
539 "components as there are in the finite element used by "
540 "the DoFHandler argument.");
548 <<
"You provided a function map that for boundary indicator "
549 << arg1 <<
" specifies a function with " << arg2
550 <<
" vector components. However, the finite "
551 "element in use has "
553 <<
" components, and these two numbers need to match.");
560 <<
"The number of input vectors, " << arg1
561 <<
" needs to be equal to the number of output vectors, "
563 <<
". This is not the case in your call of this function.");
568 "You need to specify at least one solution vector as "
583template <
int spacedim>
626 template <
typename InputVector>
635 const InputVector & solution,
650 template <
typename InputVector>
658 const InputVector & solution,
682 template <
typename InputVector>
691 const std::vector<const InputVector *> &solutions,
706 template <
typename InputVector>
714 const std::vector<const InputVector *> &solutions,
729 template <
typename InputVector>
738 const InputVector & solution,
753 template <
typename InputVector>
761 const InputVector & solution,
776 template <
typename InputVector>
785 const std::vector<const InputVector *> &solutions,
800 template <
typename InputVector>
808 const std::vector<const InputVector *> &solutions,
823 "You provided a ComponentMask argument that is invalid. "
824 "Component masks need to be either default constructed "
825 "(in which case they indicate that every component is "
826 "selected) or need to have a length equal to the number "
827 "of vector components of the finite element in use "
828 "by the DoFHandler object. In the latter case, at "
829 "least one component needs to be selected.");
836 "If you do specify the argument for a (possibly "
837 "spatially variable) coefficient function for this function, "
838 "then it needs to refer to a coefficient that is either "
839 "scalar (has one vector component) or has as many vector "
840 "components as there are in the finite element used by "
841 "the DoFHandler argument.");
850 <<
"You provided a function map that for boundary indicator "
851 << arg1 <<
" specifies a function with " << arg2
852 <<
" vector components. However, the finite "
853 "element in use has "
855 <<
" components, and these two numbers need to match.");
863 <<
"The number of input vectors, " << arg1
864 <<
" needs to be equal to the number of output vectors, "
866 <<
". This is not the case in your call of this function.");
872 "You need to specify at least one solution vector as "
@ face_diameter_over_twice_max_degree
static void estimate(const DoFHandler< dim, spacedim > &dof, const Quadrature< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, typename InputVector::value_type > * > &neumann_bc, const std::vector< const InputVector * > &solutions, std::vector< Vector< float > * > &errors, const ComponentMask &component_mask=ComponentMask(), 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, typename InputVector::value_type > * > &neumann_bc, const std::vector< const InputVector * > &solutions, std::vector< Vector< float > * > &errors, const ComponentMask &component_mask=ComponentMask(), 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 hp::QCollection< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, typename InputVector::value_type > * > &neumann_bc, const InputVector &solution, Vector< float > &error, const ComponentMask &component_mask=ComponentMask(), 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, typename InputVector::value_type > * > &neumann_bc, const InputVector &solution, Vector< float > &error, const ComponentMask &component_mask=ComponentMask(), 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, typename InputVector::value_type > * > &neumann_bc, const std::vector< const InputVector * > &solutions, std::vector< Vector< float > * > &errors, const ComponentMask &component_mask=ComponentMask(), 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 hp::QCollection< dim - 1 > &quadrature, const std::map< types::boundary_id, const Function< spacedim, typename InputVector::value_type > * > &neumann_bc, const std::vector< const InputVector * > &solutions, std::vector< Vector< float > * > &errors, const ComponentMask &component_mask=ComponentMask(), 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, typename InputVector::value_type > * > &neumann_bc, const InputVector &solution, Vector< float > &error, const ComponentMask &component_mask=ComponentMask(), 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, typename InputVector::value_type > * > &neumann_bc, const InputVector &solution, Vector< float > &error, const ComponentMask &component_mask=ComponentMask(), 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 .
Abstract base class for mapping classes.
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcInvalidBoundaryFunction(types::boundary_id arg1, int arg2, int arg3)
static ::ExceptionBase & ExcIncompatibleNumberOfElements(int arg1, int arg2)
#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 & ExcNoSolutions()
const types::material_id invalid_material_id
const types::subdomain_id invalid_subdomain_id
static const unsigned int invalid_unsigned_int