|
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 | respect_all_topologies |
| bool | offset_in |
| bool | offset_out |
| double | target_distance |
| double | target_distance_rel |
| double | convergence_target |
| double | convergence_target_rel |
| double | convergence_normal_deviation |
| bool | throw_on_nonconvergence |
| double | envelope_size |
| double | envelope_size_rel |
| bool | region_envelope_from_input |
| double | relative_ball_threshold |
| double | edge_search_term_len |
| bool | sorted_marching |
| std::string | output_path |
| bool | optimize |
| bool | save_vtu |
| int | num_threads |
| int | optimization_iterations |
| double | max_normal_deviation_deg |
| double | min_normal_deviation_deg |
| double | min_edge_length |
| double | smooth_quadrics_weight |
| double | smooth_laplacian_weight |
| double | quadrics_svd_threshold |
| double | min_sizing_scalar |
| double | max_sizing_scalar |
| double | sizing_mrm_threshold |
| 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 = 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 |
What the offset needs on top of the parameters every wmtk optimizer shares.
The optimization phase reuses wmtk::TetOptimizerMesh, so the quantities that phase reads – the target edge length and the split/collapse thresholds derived from it, the smoothing weights and pass count, the sizing-refinement knobs, the debug switch – come from wmtk::OptimizerParameters rather than being spelled out again here. The json keys are unchanged: length/length_rel feed the base's l/lr, smoothing_iterations feeds num_smoothing_passes, DEBUG_output feeds debug_output.
The bounding box stays here, as it does in every application: the base deliberately does not own it, because its type and meaning differ per application.