20 #ifndef LIBMESH_FE_TYPE_H 21 #define LIBMESH_FE_TYPE_H 24 #include "libmesh/compare_types.h" 25 #include "libmesh/libmesh_config.h" 26 #include "libmesh/enum_order.h" 27 #include "libmesh/enum_fe_family.h" 28 #include "libmesh/enum_inf_map_type.h" 29 #include "libmesh/hashing.h" 107 #define OrderWrapperOperators(comparisontype) \ 108 inline bool operator==(comparisontype lhs, Order rhs) \ 109 { return lhs == static_cast<comparisontype>(rhs); } \ 110 inline bool operator==(Order lhs, comparisontype rhs) \ 111 { return static_cast<comparisontype>(lhs) == rhs; } \ 112 inline bool operator!=(comparisontype lhs, Order rhs) \ 113 { return !(lhs == rhs); } \ 114 inline bool operator!=(Order lhs, comparisontype rhs) \ 115 { return !(lhs == rhs); } \ 116 inline bool operator< (comparisontype lhs, Order rhs) \ 117 { return lhs < static_cast<comparisontype>(rhs); } \ 118 inline bool operator< (Order lhs, comparisontype rhs) \ 119 { return static_cast<comparisontype>(lhs) < rhs; } \ 120 inline bool operator> (comparisontype lhs, Order rhs) \ 121 { return rhs < lhs; } \ 122 inline bool operator> (Order lhs, comparisontype rhs) \ 123 { return rhs < lhs; } \ 124 inline bool operator<=(comparisontype lhs, Order rhs) \ 125 { return !(lhs > rhs); } \ 126 inline bool operator<=(Order lhs, comparisontype rhs) \ 127 { return !(lhs > rhs); } \ 128 inline bool operator>=(comparisontype lhs, Order rhs) \ 129 { return !(lhs < rhs); } \ 130 inline bool operator>=(Order lhs, comparisontype rhs) \ 131 { return !(lhs < rhs); } 135 #if LIBMESH_SIZEOF_SIZE_T != LIBMESH_SIZEOF_UNSIGNED_INT 186 #ifndef LIBMESH_ENABLE_INFINITE_ELEMENTS 222 const int ro =
THIRD,
263 #endif // ifndef LIBMESH_ENABLE_INFINITE_ELEMENTS 272 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
285 return !(*
this == f2);
298 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 305 #endif // ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 326 const int extraorder=0)
const;
345 const int extraorder=0)
const;
377 std::size_t seed = 0;
386 #endif // LIBMESH_FE_TYPE_H class FEType hides (possibly multiple) FEFamily and approximation orders, thereby enabling specialize...
FEFamily family
The type of finite element.
bool operator==(const FEType &f2) const
Tests equality.
OrderWrapper(int order)
Constructor.
Order
defines an enum for polynomial orders.
OrderWrapperOperators(int) OrderWrapperOperators(unsigned int) OrderWrapperOperators(std
Order unweighted_quadrature_order() const
void hash_combine(std::size_t &seed, const T &value)
bool operator<(const OrderWrapper &lhs, const OrderWrapper &rhs)
OrderWrapper radial_order
The approximation order in radial direction of the infinite element.
std::ostream & operator<<(std::ostream &os, const OrderWrapper &order)
Overload stream operators.
Order default_quadrature_order() const
OrderWrapper order
The approximation order of the element.
bool operator>=(const OrderWrapper &lhs, const OrderWrapper &rhs)
The libMesh namespace provides an interface to certain functionality in the library.
bool operator!=(const OrderWrapper &lhs, const OrderWrapper &rhs)
bool operator<=(const OrderWrapper &lhs, const OrderWrapper &rhs)
bool operator!=(const FEType &f2) const
Tests inequality.
std::unique_ptr< QBase > default_quadrature_rule(const unsigned int dim, const int extraorder=0) const
int _order
The approximation order of the element.
bool operator>(const OrderWrapper &lhs, const OrderWrapper &rhs)
FEType(const int o=1, const FEFamily f=LAGRANGE)
Constructor.
This provides a shim class that wraps the Order enum.
InfMapType inf_map
The coordinate mapping type of the infinite element.
bool operator==(const OrderWrapper &lhs, const OrderWrapper &rhs)
Overload comparison operators for OrderWrapper.
bool operator<(const FEType &f2) const
An ordering to make FEType useful as a std::map key.
FEFamily radial_family
The type of approximation in radial direction.
int get_order() const
Explicitly request the order as an int.
std::unique_ptr< QBase > unweighted_quadrature_rule(const unsigned int dim, const int extraorder=0) const
InfMapType
defines an enum for the types of coordinate mappings available in infinite elements.
std::size_t operator()(const libMesh::FEType &fe_type) const
FEFamily
defines an enum for finite element families.
FEType(const int o=1, const FEFamily f=LAGRANGE, const int ro=THIRD, const FEFamily rf=JACOBI_20_00, const InfMapType im=CARTESIAN)
Constructor.
OrderWrapper(Order order)
Constructor.
void ErrorVector unsigned int