PolyFEM
Loading...
Searching...
No Matches
RBFInterpolation.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Eigen/Dense>
4
5#include <functional>
6#include <string>
7
8#ifdef POLYFEM_OPENCL
9#include <rbf_interpolate.hpp>
10#endif
11
12namespace polyfem
13{
14 namespace utils
15 {
17 {
18 public:
20 RBFInterpolation(const Eigen::MatrixXd &fun, const Eigen::MatrixXd &pts, const std::function<double(double)> &rbf);
21 void init(const Eigen::MatrixXd &fun, const Eigen::MatrixXd &pts, const std::function<double(double)> &rbf);
22
23 RBFInterpolation(const Eigen::MatrixXd &fun, const Eigen::MatrixXd &pts, const std::string &rbf, const double eps);
24 void init(const Eigen::MatrixXd &fun, const Eigen::MatrixXd &pts, const std::string &rbf, const double eps);
25
26 Eigen::MatrixXd interpolate(const Eigen::MatrixXd &pts) const;
27
28 private:
29#ifdef POLYFEM_OPENCL
30 int verbose_ = 0;
31 const std::string rbfcl_ = "GA";
32 bool opt_ = false;
33 bool unit_cube_ = false;
34 int num_threads_ = -1;
35
36 std::vector<rbf_pum::RBFData> data_;
37#else
38 Eigen::MatrixXd centers_;
39 Eigen::MatrixXd weights_;
40
41 std::function<double(double)> rbf_;
42#endif
43 };
44 } // namespace utils
45} // namespace polyfem
void init(const Eigen::MatrixXd &fun, const Eigen::MatrixXd &pts, const std::function< double(double)> &rbf)
Eigen::MatrixXd interpolate(const Eigen::MatrixXd &pts) const
std::function< double(double)> rbf_