19 static constexpr bool kRecomputeAndClear =
true;
20 static constexpr bool kReportResidual =
false;
21 static constexpr int Order = 6;
22 static constexpr double coarse_ratio = 0.125;
23 static constexpr index_t n_coarsest_points = 1024;
33 valuesd operator()(
const valuesd& v)
const override;
35 index_t size()
const override;
38 template <
class... Args>
39 void add_evaluator(
int from_level,
int to_level, Args&&... args) {
40 evaluator_.emplace(std::piecewise_construct, std::forward_as_tuple(from_level, to_level),
41 std::forward_as_tuple(std::forward<Args>(args)...));
44 Evaluator& evaluator(
int from_level,
int to_level)
const {
45 return evaluator_.at({from_level, to_level});
48 const model model_without_poly_;
51 const index_t n_points_;
52 const index_t n_grad_points_;
53 const index_t n_poly_basis_;
54 const std::unique_ptr<interpolation::rbf_symmetric_evaluator<Order>> finest_evaluator_;
56 Eigen::MatrixXd lagrange_pt_;
58 std::vector<std::vector<index_t>> point_idcs_;
59 std::vector<std::vector<index_t>> grad_point_idcs_;
60 mutable std::vector<std::vector<fine_grid>> fine_grids_;
61 std::unique_ptr<coarse_grid> coarse_;
62 mutable std::map<std::pair<int, int>,
Evaluator> evaluator_;