Wildmeshing Toolkit
Loading...
Searching...
No Matches
OptimizationSmoothing.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <polysolve/Types.hpp>
6
7
8namespace polysolve::nonlinear {
9class Solver;
10}
11
12namespace wmtk::function {
13class Function;
14}
15
16namespace wmtk::operations {
17
19{
20private:
21 template <typename T>
22 class WMTKProblem;
23
24public:
25 OptimizationSmoothing(std::shared_ptr<wmtk::function::Function> energy);
26
27 std::vector<simplex::Simplex> execute(const simplex::Simplex& simplex) override;
28
29 const polysolve::json& linear_solver_params() const { return m_linear_solver_params; }
30 const polysolve::json& nonlinear_solver_params() const { return m_nonlinear_solver_params; }
31
32
33 void set_linear_solver_params(const polysolve::json& params)
34 {
37 }
38
39 void set_nonlinear_solver_params(const polysolve::json& params)
40 {
43 }
44
45private:
46 std::shared_ptr<wmtk::function::Function> m_energy;
47 std::shared_ptr<polysolve::nonlinear::Solver> m_solver;
48
49
50 polysolve::json m_linear_solver_params;
52
53 void create_solver();
54};
55
56} // namespace wmtk::operations
void set_linear_solver_params(const polysolve::json &params)
std::shared_ptr< wmtk::function::Function > m_energy
void set_nonlinear_solver_params(const polysolve::json &params)
std::shared_ptr< polysolve::nonlinear::Solver > m_solver
std::vector< simplex::Simplex > execute(const simplex::Simplex &simplex) override
returns an empty vector in case of failure
const polysolve::json & linear_solver_params() const
const polysolve::json & nonlinear_solver_params() const