gridap / gridap/STLCutters.jl

Extract a mesh of general polytopes

Open
#36 0 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
Julia
Stars
18
Forks
2
PR merge metrics
No merged PRs in 30d

Description

The `subtriangulation()` procedure returns a set of simplex meshes. However, for some applications it may be convenient to return a mesh of `GeneralPolytope`.

The result of `compute_polyhedra!` are arrays of general polytopes (Kin,Kout,Γk),. Then, inside `save_cell_submesh!`, these polytopes are simplexified and appended to the submesh. Instead, we need to merge these arrays of polytopes into a single polytope per background cell. Then, the merged polytopes compose a mesh.

Therefore, the main task is to merge arrays of `GeneralPolytope` with the following considerations.
- The polytope nodes contain metadata about the background mesh and STL
- It is convenient to keep polytope faces (vertex,edges,facets) linked to background faces
- We can remove all the interior edges and vertices
- We can generate a polytope from the interior array Kin, and another for Kout.

One possible approach is the following:

1. Extract the polytope edges on the background cell edges
2. Merge nodes not touching STL surface (Nk)
3. Merge edges that share nodes (Ek)
4. Glue cut surface Γk with merged edges Ek to generate a new `GeneralPolytope`

Here, one of the main complication is that an edge can be cut more than once by the STL surface. Thus, the glue is not straight forward. E.g., we need a process of sorting nodes over the background edge.

It important to note that the `GenaralPolytope` is represented by an oriented edge graph; see more information in the reference publication.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with subtriangulation(), compute_polyhedra!, and save_cell_submesh! to trace how GeneralPolytope arrays are currently simplexified and appended. Review the oriented edge-graph representation and the reference publication, then define merging for background edges with multiple STL cuts; done means returning one merged GeneralPolytope mesh per background cell while preserving the relevant metadata and face links.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
computer-graphics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.