Tue 11 Sep 2012 01:14:12 PM UTC, comment #12:
the attached file
nonManifold3.py
joins Tomas's and Benedict's functions using the rings. It seems accurate and fast.
TODO: extend it to nonManifolEdges and nonManifoldEdgeNodes
(file #26534)
|
Tue 28 Aug 2012 02:24:35 PM UTC, comment #11:
The current solution Mesh.nonManifoldNodes() fails if the non-manifold-node is located in the same mesh part. See attached example:
nonManifold2.py
The previous function posted by Benedict, even if slower, does not fail.
Also, the Mesh.nonManifoldNodes() changes the property numbers.
(file #26436)
|
Sun 26 Aug 2012 08:22:45 AM UTC, comment #10:
In revision 2421 we now have Mesh.nonManifoldNodes, Mesh.nonManifoldEdges and Mesh.nonManifoldEdgeNodes.
And added an example (NonManifold) as demo and for testing.
Consider this closed, unless some difficulties appear.
|
Sat 25 Aug 2012 08:30:18 PM UTC, comment #9:
Mesh.nonManifoldNodes is available in Revision 2419. I leave this bug open until nonManifoldEdges is added.
|
Sat 25 Aug 2012 07:44:05 PM UTC, comment #8:
I had a look at this, and came up with a first solution, following the algorithm in comment #6. I give it in attached file (nonManifold1.py) as an illustration of how to 'pyformexize' and 'numpy-ize' your code ;) It is (only slighly) faster than the original posted by Gianluca.
But then I had a second look, and realized that the non-manifold nodes are a feature of a grade(dimensionality) 2 Mesh only, and occurs where parts are connected by a node but do not share an edge. Using a splitByConnection over edge-adjacency made it easy to find the common nodes between any parts. This is many orders faster than the solution above. I will check it in shortly.
A related function nonManifoldEdges (only for grad-3 meshes) can also be created. And maybe nonManifoldNodes should get an option to also add the nodes of the nonManifoldEdges?
(file #26424)
|
Fri 24 Aug 2012 12:19:44 PM UTC, comment #7:
This function tries to do too much on its own and it uses techniques that will explode on large data sets.
It should use already available functions for connectivity (possibly propose additional/better ones when needed).
And lists should be avoided at all times.
The _doc_ mentions rings without explaining the concept.
If it is useful, we should probably create 'ring' functions?
(Or do we already have some?)
|
Fri 24 Aug 2012 11:49:52 AM UTC, comment #6:
I have attached a file
nonmanifoldnodes-submit.py
which contains a function proposed by Tomas Praet.
It works fine on all test cases:
please run it and visualize the results.
In my opinion it
should be added to mesh.py as a mesh method.
(file #26422)
|
Fri 24 Aug 2012 09:48:53 AM UTC, comment #5:
Is this issue still of interest? If so, please indicate if the proposed solution would be helpful. Otherwise, just close the bug as fixed.
|
Wed 27 Jun 2012 06:30:49 PM UTC, comment #4:
Do you want to detect where elements have exactly one common node?
Or where elements have any number of common nodes, but no common edges?
We could add an option to adjacency() to also return the node numbers by which the adjacency occurs. Then each of the above questions could be handled.
|
Wed 13 Jun 2012 04:04:14 PM UTC, comment #3:
I did not explain the problem in the right way. Sorry!
I show the problem in the attached images. I would like to detect the black node in both cases.
Gianluca
(file #26018, file #26019)
|
Tue 12 Jun 2012 03:42:19 PM UTC, comment #2:
This functionality has been added in revision 2337.
Create the adjacency tables for different levels, and then take the difference. Example for a Mesh M with dimensionality 3:
|
Tue 12 Jun 2012 09:49:27 AM UTC, comment #1:
First create intermediate levels with Connectivity.insertLevel. Then use Connectivity.adjacency to find the elements adjacent by face, edge, and node. Finally, take elements adjacent by node but not by edge, and elements adjacent by edge but not by face.
This should be implemented in a general fashion in the Connectivity class.
|
Tue 12 Jun 2012 09:10:40 AM UTC, original submission:
I would like to detect non-Manifold entities in a Hex mesh:
-non Manifold nodes: nodes that connect 2 elements without being part of a common edge (or face)
-non Manifold edges: edges that connect 2 elements without being part of a common face
Gianluca
|