3#include <wmtk/OptimizerParameters.h>
4#include <nlohmann/json.hpp>
5#include <wmtk/Types.hpp>
7namespace wmtk::components::simwild {
20 preserve_topology =
true;
24 std::string output_path;
29 bool allow_surface_swap =
true;
33 bool check_surface_topology =
false;
36 double epsr_simplify = 2e-4;
41 double eps_simplify = -1.;
44 bool stop_at_float =
false;
46 std::string operation =
"remeshing";
56 bool skip_simplify =
false;
57 bool use_sample_envelope =
false;
61 bool write_vtu =
false;
66 output_path = json_params[
"output"];
67 skip_simplify = json_params[
"skip_simplify"];
68 use_sample_envelope = json_params[
"use_sample_envelope"];
70 NUM_THREADS = json_params[
"num_threads"];
71 write_vtu = json_params[
"write_vtu"];
73 epsr = json_params[
"eps_rel"];
74 eps = json_params[
"eps"];
75 lr = json_params[
"length_rel"];
76 l = json_params[
"length"];
77 stop_energy = json_params[
"stop_energy"];
78 stop_at_float = json_params[
"stop_at_float"];
79 preserve_topology = json_params[
"preserve_topology"];
82 epsr_simplify = json_params[
"eps_simplify_rel"];
84 eps_simplify = json_params[
"eps_simplify"];
86 w_amips = json_params[
"w_amips"];
91 interleaved_smoothing = json_params[
"interleaved_smoothing"];
92 interleaved_smoothing_passes = json_params[
"interleaved_smoothing_passes"];
106 debug_output = json_params[
"DEBUG_output"];
107 perform_sanity_checks = json_params[
"DEBUG_sanity_checks"];
111 allow_surface_swap = json_params[
"allow_surface_swap"];
112 check_surface_topology = json_params[
"check_surface_topology"];
115 stuck_refine_stall_eps = json_params[
"stuck_refine_stall_eps"];
116 stuck_refine_cooldown = json_params[
"stuck_refine_cooldown"];
117 stuck_refine_num_worst = json_params[
"stuck_refine_num_worst"];
118 stuck_refine_rings = json_params[
"stuck_refine_rings"];
119 stuck_refine_factor = json_params[
"stuck_refine_factor"];
120 stuck_refine_force_split = json_params[
"stuck_refine_force_split"];
121 stuck_refine_min_scalar = json_params[
"stuck_refine_min_scalar"];
122 stuck_refine_gradation = json_params[
"stuck_refine_gradation"];
125 skip_good_regions = json_params[
"skip_good_regions"];
126 skip_good_regions_margin = json_params[
"skip_good_regions_margin"];
128 operation = json_params[
"operation"];
131 void init(
const VectorXd& min_,
const VectorXd& max_)
137 if (eps_simplify > 0) {
138 epsr_simplify = eps_simplify / diag_l;
140 eps_simplify = epsr_simplify * diag_l;
146 const std::vector<Vector3d>& vertices,
147 const std::vector<std::array<size_t, 3>>& faces)
150 for (
size_t i = 0; i < vertices.size(); i++) {
156 for (
int j = 0; j < 3; j++) {
157 if (vertices[i][j] < min_[j]) min_[j] = vertices[i][j];
158 if (vertices[i][j] > max_[j]) max_[j] = vertices[i][j];
The parameters tetwild, triwild and simwild all share.
Definition OptimizerParameters.h:29
int project_line_search_nested_steps
Partial-projection bisections tried after it gives up; 0 disables that pass.
Definition OptimizerParameters.h:178
double w_amips
Definition OptimizerParameters.h:172
int coarsen_max_inner_passes
Definition OptimizerParameters.h:345
std::string smoothing_mode
"projected" or "exact"; see SmoothVertexOptions::SmoothingMode.
Definition OptimizerParameters.h:174
bool coarsen_pass
Definition OptimizerParameters.h:238
bool optimize_envelope_around_simplified
Definition OptimizerParameters.h:65
bool check_surface_folds
Definition OptimizerParameters.h:212
int coarsen_global_smoothing_passes
Definition OptimizerParameters.h:303
int coarsen_max_rounds
Definition OptimizerParameters.h:327
void init_lengths_from_diagonal(const double diag)
Derive the edge-length and envelope quantities from the bounding-box diagonal.
Definition OptimizerParameters.h:357
bool coarsen_unbounded
Definition OptimizerParameters.h:262
int coarsen_local_smoothing_passes
Definition OptimizerParameters.h:280
int project_line_search_steps
Bisections tried before the projected search gives up. See SmoothVertexOptions.
Definition OptimizerParameters.h:176
bool colored_smoothing
Definition OptimizerParameters.h:201
int coarsen_smooth_ring
Definition OptimizerParameters.h:296
int num_smoothing_passes
Number and placement of smoothing passes in the shared Wild optimization driver.
Definition OptimizerParameters.h:188
The fields shared with tetwild and triwild live in wmtk::OptimizerParameters.
Definition Parameters.h:10
Parameters()
Definition Parameters.h:16
bool simplify_use_sample_envelope
Opt-in: the sampled envelope for the input simplification alone; see the spec.
Definition Parameters.h:59
double order2_envelope_ratio
Definition Parameters.h:40
bool verbose_quality_stats
Definition Parameters.h:54