Wildmeshing Toolkit
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
wmtk::components::topological_offset::Parameters Struct Reference

What the offset needs on top of the parameters every wmtk optimizer shares. More...

#include <Parameters.h>

Inheritance diagram for wmtk::components::topological_offset::Parameters:
wmtk::OptimizerParameters

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
 

Detailed Description

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.

Member Data Documentation

◆ debug_output_per_pass

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.

◆ deform_others

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.

◆ front_alignment_energy

bool wmtk::components::topological_offset::Parameters::front_alignment_energy = true

see the spec: needed at pressed seams, biased elsewhere

◆ max_iterations

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.

◆ max_rounds

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.

◆ offset_envelope_rel

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).

◆ offset_field

std::string wmtk::components::topological_offset::Parameters::offset_field

"smooth" (Phi level set) or "euclidean" (exact distance)

◆ pre_optimize_input

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().

◆ pre_optimize_sizing_from_edges

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.

◆ sizing_collapse_min

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.

◆ vertex_grad_tol_rel

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.


The documentation for this struct was generated from the following file: