Wildmeshing Toolkit
Loading...
Searching...
No Matches
RunPass.hpp
1#pragma once
2
3#include <wmtk/TetOptimizerMesh.h>
4#include <wmtk/TriOptimizerMesh.h>
5#include <wmtk/ExecutionScheduler.hpp>
6
7#include <functional>
8#include <string>
9
10namespace wmtk {
11
18enum class PassLock {
19 EdgeRing,
20 FaceRing,
21 VertexRing,
22};
23
39constexpr int default_ring(PassLock lock)
40{
41 return lock == PassLock::VertexRing ? 1 : 2;
42}
43
69void run_pass(
70 TriOptimizerMesh& m,
71 PassLock lock,
72 int ring,
73 const std::string& label,
74 const std::function<void(ExecutePass<TriOptimizerMesh>&, TriOptimizerMesh&)>& body);
75
76void run_pass(
77 TetOptimizerMesh& m,
78 PassLock lock,
79 int ring,
80 const std::string& label,
81 const std::function<void(ExecutePass<TetOptimizerMesh>&, TetOptimizerMesh&)>& body);
82
83inline void run_pass(
84 TriOptimizerMesh& m,
85 PassLock lock,
86 const std::string& label,
87 const std::function<void(ExecutePass<TriOptimizerMesh>&, TriOptimizerMesh&)>& body)
88{
89 run_pass(m, lock, default_ring(lock), label, body);
90}
91
92inline void run_pass(
93 TetOptimizerMesh& m,
94 PassLock lock,
95 const std::string& label,
96 const std::function<void(ExecutePass<TetOptimizerMesh>&, TetOptimizerMesh&)>& body)
97{
98 run_pass(m, lock, default_ring(lock), label, body);
99}
100
101} // namespace wmtk