LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
Loading...
Searching...
No Matches
quad_rule_cache.h
1
10#ifndef INCG5b965019a2a74585a86f055191a31def
11#define INCG5b965019a2a74585a86f055191a31def
12
13#include <deque>
14
15#include "quad_rule.h"
16
17namespace lf::quad {
18
27 public:
28 QuadRuleCache() = default;
29
33 QuadRuleCache(const QuadRuleCache&) = delete;
34
38 QuadRuleCache(QuadRuleCache&& other) noexcept
39 : cache_(std::move(other.cache_)) {}
40
45
49 QuadRuleCache& operator=(QuadRuleCache&&) noexcept = default;
50
51 ~QuadRuleCache() = default;
52
65 [[nodiscard]] const QuadRule& Get(base::RefEl ref_el, unsigned degree) const;
66
67 private:
68 // cache_[i][j] contains quadrature rule for reference element with id = i and
69 // degree = j
70 mutable std::array<std::deque<QuadRule>, 5> cache_;
71};
72
73} // namespace lf::quad
74
75#endif // INCG5b965019a2a74585a86f055191a31def
A cache for make_QuadRule()
QuadRuleCache & operator=(QuadRuleCache &&) noexcept=default
Move assignment is allowed.
QuadRuleCache(QuadRuleCache &&other) noexcept
Move construction is allowed.
QuadRuleCache & operator=(const QuadRuleCache &)=delete
copy assignment is delete to avoid accidental copy.
const QuadRule & Get(base::RefEl ref_el, unsigned degree) const
Retrieve a quadrature rule for reference element ref_el with degree d. Is identical to calling make_Q...
QuadRuleCache(const QuadRuleCache &)=delete
Copy constructor is deleted to avoid accidental copy.
std::array< std::deque< QuadRule >, 5 > cache_
Represents a Quadrature Rule over one of the Reference Elements.
Definition quad_rule.h:58
Rules for numerical quadrature on reference entity shapes.