|
Wildmeshing Toolkit
|
The fields shared with tetwild and triwild live in wmtk::OptimizerParameters. More...
#include <Parameters.h>
Public Member Functions | |
| Parameters () | |
| Parameters (const nlohmann::json &json_params) | |
| void | init (const VectorXd &min_, const VectorXd &max_) |
| void | init (const std::vector< Vector3d > &vertices, const std::vector< std::array< size_t, 3 > > &faces) |
Public Member Functions inherited from wmtk::OptimizerParameters | |
| void | init_lengths_from_diagonal (const double diag) |
| Derive the edge-length and envelope quantities from the bounding-box diagonal. | |
Public Attributes | |
| std::string | output_path |
| bool | allow_surface_swap = true |
| bool | check_surface_topology = false |
| double | epsr_simplify = 2e-4 |
| double | order2_envelope_ratio = 0.5 |
| double | eps_simplify = -1. |
| VectorXd | box_min |
| VectorXd | box_max |
| bool | stop_at_float = false |
| bool | check_envelope_at_init = false |
| std::string | operation = "remeshing" |
| bool | skip_simplify = false |
| bool | use_sample_envelope = false |
| int | NUM_THREADS = 0 |
| bool | write_vtu = false |
| bool | write_envelope = true |
Public Attributes inherited from wmtk::OptimizerParameters | |
| double | epsr = 1e-3 |
| double | eps = -1. |
| double | lr = 5e-2 |
| double | l = -1. |
| double | l_min = -1 |
| double | diag_l = -1. |
| bool | preserve_topology = false |
| bool | optimize_envelope_around_simplified = false |
| int | split_high_valence_threshold = 200 |
| double | stuck_refine_stall_eps = 0.1 |
| int | stuck_refine_cooldown = 0 |
| int | stuck_refine_num_worst = 0 |
| int | stuck_refine_rings = 0 |
| double | stuck_refine_factor = 0.5 |
| double | stuck_refine_min_scalar = 1e-3 |
| double | stuck_refine_gradation = 2.0 |
| bool | stuck_refine_force_split = true |
| bool | skip_good_regions = false |
| double | skip_good_regions_margin = 0.9 |
| double | splitting_l2 = -1. |
| double | collapsing_l2 |
| double | stop_energy = 100 |
| double | w_amips = 1e-4 |
| std::string | smoothing_mode = "projected" |
| "projected" or "exact"; see SmoothVertexOptions::SmoothingMode. | |
| int | project_line_search_steps = 12 |
| Bisections tried before the projected search gives up. See SmoothVertexOptions. | |
| int | project_line_search_nested_steps = 0 |
| Partial-projection bisections tried after it gives up; 0 disables that pass. | |
| double | w_envelope = 1. - 1e-4 |
| int | num_smoothing_passes = 2 |
| Number and placement of smoothing passes in the shared Wild optimization driver. | |
| bool | interleaved_smoothing = true |
| int | interleaved_smoothing_passes = 1 |
| bool | coarsen_pass = false |
| bool | coarsen_unbounded = true |
| int | coarsen_local_smoothing_passes = 0 |
| int | coarsen_smooth_ring = 1 |
| int | coarsen_global_smoothing_passes = 1 |
| int | coarsen_max_rounds = 2 |
| int | coarsen_max_inner_passes = 1 |
| bool | debug_output = false |
| bool | perform_sanity_checks = false |
The fields shared with tetwild and triwild live in wmtk::OptimizerParameters.
|
inline |
The four shared fields where simwild deliberately differs from tetwild/triwild. Set here rather than in the base so the divergence is visible in one place; each matches the default in simwild_spec.json.
| bool wmtk::components::simwild::Parameters::check_envelope_at_init = false |
Verify at init that every surface edge starts inside the envelope (2D remeshing only).
The same check triwild carries, and the same trade: the invariant is real, but it costs one sampled segment query per surface edge, serially, on every run. Measured in triwild's 2D sweep at 22s on a 3.5M-edge input and 5m07s on a 7.6M-edge one – 8.5% of that model's entire budget, spent before the first iteration. Off by default.
The 3D counterpart in VolumemesherInsertion is deliberately NOT gated by this: it is not a check but a decision, feeding the "rebuild the envelope from tet tags" branch.
| double wmtk::components::simwild::Parameters::order2_envelope_ratio = 0.5 |
Order-2 (open boundary / non-manifold edge) envelope thickness, as a fraction of the surface envelope's. Deliberately below 1 where the surface envelope uses the full eps; see the doc on /order2_envelope_ratio in the spec for the measurement behind 0.5.