CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   Boundary faces sharing a point (https://www.cfd-online.com/Forums/openfoam-programming-development/174420-boundary-faces-sharing-point.html)

Phil_ July 12, 2016 06:07

Boundary faces sharing a point
 
Hi all,

I'm trying to get all the faces sharing a point.

For the internal faces the following works:

Code:

labelList facesSharingPoint = mesh.pointFaces()[pointLabelI];
In order to get the boundary faces I tried:

Code:

labelList boundaryFacesSharingPoint = mesh.boundaryMesh()[patchI]pointFaces()[pointLabelI];
This fails, as the points are defined on the patches by local labels. How is it possible to return the boundary faces through a global point label?

Philip

Jerryfan July 12, 2016 10:48

Hi,



Each of the fvPatch object maintains a polyPatch instance. There is a start() function defining in polyPatch which returns the start label of this patch in the polyMesh face list. This returned label is in the global level. The other thing about the patch label is that for each of the patch, its storage in the global polyMesh face list is continuous. Therefore, if you add the start label of that patch to the local labels you obtained, you will be able to get the global label.


Quote:

forAll (mesh.BoundaryMesh(), PatchI)
{
label pstart=mesh.boundaryMesh()[patchI].start();
labelList boundaryFacesSharingPoint = mesh.boundaryMesh()[patchI]pointFaces();
forAll (boundaryFacesSharingPoint, pI)
{
boundaryFacesSharingPoint[pI] += pstart;
}
}

I didn't test the above code. But the idea should work for you. I hope it will help you.

Phil_ July 13, 2016 02:53

Hi Jerryfan,

thanks for your suggestion. :)

Maybe I'm not fully understanding your idea, but the main issue here is the relation of global vertice labels to local patch vertice labels.

Code:

mesh.pointFaces()
returns a labelListList containing the global vertice labels and the global labels of the internal faces sharing the respective vertice. I need to know the boundary faces sharing a vertice too.

Code:

mesh.boundaryMesh()[patchI]pointFaces()
returns a labelListList containing the local vertice labels of the patch and the local labels of the boundary faces sharing the respective vertice.

So the problem is, that I only know the global vertice label. Is there a function etc. to get the relation of global to local patch vertice labels?

Philip

Phil_ July 13, 2016 08:33

I found an much easier way to accomplish the original task, so finding all the faces sharing a point is no longer needed :D

Jerryfan July 13, 2016 12:07

Would you mind sharing it?

Phil_ July 14, 2016 03:32

It has nothing to do with the original question, so I guess it's not worth sharing. I'm
avoiding any search for faces sharing a point and instead utilize
Code:

mesh.pointPoints()[pI];
to do stuff with the direct neighbor points.


All times are GMT -4. The time now is 18:11.