Skip to content

ToSurfaceMesh emits reversed duplicate triangles for an oxidation-evolved 3D level set #163

Description

@meshandmore

ToSurfaceMesh emits reversed duplicate triangles for an oxidation-evolved
3D level set.

Versions

  • ViennaLS v5.8.5:
    6f8cf622ae6ba8dc31f07107425041be7c95dbcd
  • ViennaPS v4.6.2:
    4c9ee7d2e04e31e71f99180657ac141181c9e205
  • ViennaHRLE v1.1.2:
    8aa4aa7ac4a72d101bee8a140dbf64e20963e305
  • GCC/G++ 11.4.0, CMake 3.31.8, VTK v9.3.1
  • Linux x86_64, CPU-only, OpenMP 32 threads

The upstream checkouts are unmodified. The standalone source is available at:

https://github.com/meshandmore/gpu-native-oxidation-solver/blob/b2dad563c6ae65753f816873e0f8c8a11f61d251/reproducers/viennals/to_surface_mesh_duplicate_face.cpp

It contains no project finite-fin adapter code. The smallest known trigger
still uses five upstream ViennaPS oxidation steps of 0.002 hr at grid delta
0.0125 µm to generate the final level set. Initial, deep-copy and analytic
0.004 µm recession controls are included and do not reproduce the defect.

Build and run

With ViennaPS configured in build/viennaps-cpu and the source added as a
target linked to ViennaPS:

cmake --build build/viennaps-cpu \
  --target to_surface_mesh_duplicate_face_repro --parallel 32
OMP_NUM_THREADS=32 OMP_PROC_BIND=spread OMP_PLACES=cores \
CUDA_VISIBLE_DEVICES= \
  build/viennaps-cpu/reproducers/viennals/to_surface_mesh_duplicate_face_repro

The exact target definition is in:

https://github.com/meshandmore/gpu-native-oxidation-solver/blob/b2dad563c6ae65753f816873e0f8c8a11f61d251/cmake/inject_viennaps_finite_fin_adapter.cmake

Expected

Each extracted closed interface has no duplicate faces and every undirected
edge has incidence two.

Actual

The final Silicon interface remains manifold. The final outer interface has
six duplicate groups and six non-manifold edges. Each pair uses exactly the
same three vertex IDs in reversed cyclic orientation.

One pair is:

faces: 5408, 5979
kind: reversed_orientation
vertex IDs: 2806, 2809, 2810
vertices:
  (-0.37498095265138415, 0.2125, -0.18748536743394970)
  (-0.37500000000000000, 0.22218595376598371, -0.18750000000000000)
  (-0.37500424967304546, 0.2250, -0.18750424967304544)

The other pairs are 5666/6132, 8464/8477, 8664/8673,
11567/11577, and 24348/24651. The input level-set object contains scalar
points, not faces; the duplicates first exist in the ToSurfaceMesh result.

No automatic deletion, welding or reorientation was applied.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions