|
Wildmeshing Toolkit
|
What the offset needs on top of the parameters every wmtk optimizer shares. More...
#include <Parameters.h>
Public Member Functions | |
| Parameters (const nlohmann::json &json_params) | |
| void | init (const VectorXd &min_, const VectorXd &max_) |
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 | |
| ExpressionPtr | offset_selection |
| std::set< std::string > | offset_output_tag |
| std::set< std::string > | protected_tags |
| bool | offset_in |
| bool | offset_out |
| double | target_distance |
| double | target_distance_rel |
| bool | throw_on_nonconvergence |
| double | envelope_size |
| double | envelope_size_rel |
| double | offset_dhat_factor |
| std::string | offset_field |
| bool | debug_output_per_pass |
| double | front_conv_rel |
| std::string | front_conv_criterion |
| 2D: gradient_norm_rel | step_size_rel | decrement | |
| bool | front_normal_projection = true |
| bool | front_alignment_energy = true |
| bool | sizing_collapse_min = false |
| bool | deform_others = true |
| int | max_rounds = 40 |
| int | offset_residual_samples |
| bool | sorted_marching |
| std::string | output_path |
| bool | save_vtu |
| int | phi_grid_resolution |
| int | num_threads |
| int | max_iterations |
| int | ab_smooth_max_passes |
| cap on Phase B smoothing passes; negative = uncapped (default) | |
| double | ab_smooth_tol |
| double | vertex_grad_tol_rel |
| bool | pre_optimize_input = true |
| bool | pre_optimize_sizing_from_edges = false |
| double | offset_envelope_rel |
| double | min_edge_length |
| double | min_edge_length_rel |
| double | min_sizing_scalar |
| double | max_sizing_scalar |
| double | sizing_gradation |
| VectorXd | box_min |
| VectorXd | box_max |
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 = 0 |
| double | stuck_refine_stall_eps = 0.1 |
| int | stuck_refine_cooldown = 1 |
| 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. | |
| bool | smooth_quality_veto = true |
| 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 |
What the offset needs on top of the parameters every wmtk optimizer shares.
The optimization phase reuses wmtk::TetOptimizerMesh, so everything that phase reads – target edge length, the split/collapse thresholds derived from it, smoothing weights and pass count, the sizing knobs, the debug switch – comes from wmtk::OptimizerParameters and is not restated here. The bounding box stays here because its type and meaning differ per application.
| bool wmtk::components::topological_offset::Parameters::debug_output_per_pass |
Only read when debug_output is set: also write the engine's per-pass debug_{N} frames, not just the per-phase timeline. See the spec doc.
| bool wmtk::components::topological_offset::Parameters::deform_others = true |
2D. Other input regions (no input-complex face, no wall contact) deform under smoothing against their rest shape instead of being envelope-held. See the spec doc.
| bool wmtk::components::topological_offset::Parameters::front_alignment_energy = true |
see the spec: needed at pressed seams, biased elsewhere
| int wmtk::components::topological_offset::Parameters::max_iterations |
Cap of the shared TriWild/TetWild loop wherever it runs: the pre-optimisation pass, one Phase A, the frozen-front finishing pass.
| int wmtk::components::topological_offset::Parameters::max_rounds = 40 |
The outer loop's budget: turns of the 2D single phase, A/B rounds in 3D. The loop leaves on the front test; this is only the guard.
| double wmtk::components::topological_offset::Parameters::offset_envelope_rel |
Phase A's offset envelope width, in Phi tolerances – the same tube every round; see rebuild_offset_envelope(). Also feeds the derived sizing floor (min_edge_length_rel < 0).
| std::string wmtk::components::topological_offset::Parameters::offset_field |
"smooth" (Phi level set) or "euclidean" (exact distance)
| bool wmtk::components::topological_offset::Parameters::pre_optimize_input = true |
Run TriWild over the INPUT mesh before the simplicial embedding and the marching, held only by the per-tag region envelopes. 2D only; see TopoOffsetTriMesh::pre_optimize_input_mesh().
| bool wmtk::components::topological_offset::Parameters::pre_optimize_sizing_from_edges = false |
See the spec: which sizing field pre_optimize_input runs against. false = seed target_distance on the input-complex boundary; true = seed every vertex from its own incident edge lengths, so target_distance never enters the field.
| bool wmtk::components::topological_offset::Parameters::sizing_collapse_min = false |
What a collapse's surviving vertex keeps as its sizing scalar. false (the default): its own. true: the smaller of the two, which is the shared engine's rule – refinement then never relaxes behind a travelling front.
| double wmtk::components::topological_offset::Parameters::vertex_grad_tol_rel |
Phase B's interior (background AMIPS) per-vertex Newton tolerance: polysolve's rel_grad_norm_tol, the fraction of the visit's own entry gradient the solve stops at. The 2D front placement does not read it – an entry-relative rule with no absolute floor limit-cycles, so that descent stops on offset_gradient_tolerance() and front_conv_rel governs local solves and the global criterion alike. 3D reads it for both Phase B solves.