CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM

How to efficiently find all cells within an 3D object (e.g. box or sphere)?

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   January 26, 2022, 02:16
Question How to efficiently find all cells within an 3D object (e.g. box or sphere)?
  #1
Senior Member
 
David Long
Join Date: May 2012
Location: Germany
Posts: 104
Rep Power: 14
keepfit is on a distinguished road
Hi Foamers,

suppose there is a moving object in fluid. I want to know all cells (IDs) that intersects the object at EVERY timestep. Is there any way to avoid loop all cells in the fluid domain?

My idea is: first find the cell near the center of the object, then loop over the neighboring cells of the first cell. We repeat this process on preciously found cells until new cells are all outside the object. This way we don't need to loop over cells that are far away from the object.

Nevertheless, I am not familiar with existing OpenFOAM algorithms to do this job more efficiently. Any wonderful advice will be highly appreciated.

Last edited by keepfit; February 2, 2022 at 04:10.
keepfit is offline   Reply With Quote

Old   February 1, 2022, 17:04
Default
  #2
Super Moderator
 
Tobi's Avatar
 
Tobias Holzmann
Join Date: Oct 2010
Location: Tussenhausen
Posts: 2,708
Blog Entries: 6
Rep Power: 51
Tobi has a spectacular aura aboutTobi has a spectacular aura aboutTobi has a spectacular aura about
Send a message via ICQ to Tobi Send a message via Skype™ to Tobi
Hey, probably you could use some waveFront algorithm in OpenFOAM. We use it for blockLevel feature in snappyHexMesh and search cells close around some surface. However, if you have a surface (of the object) you should simply be able to find the intersecting cells. Nontheless, searching and selecting cells within an object should be very fast and straight forward (e.g., setSets, topoSet).
__________________
Keep foaming,
Tobias Holzmann
Tobi is offline   Reply With Quote

Old   February 2, 2022, 02:45
Default
  #3
Senior Member
 
David Long
Join Date: May 2012
Location: Germany
Posts: 104
Rep Power: 14
keepfit is on a distinguished road
Quote:
Originally Posted by Tobi View Post
Hey, probably you could use some waveFront algorithm in OpenFOAM. We use it for blockLevel feature in snappyHexMesh and search cells close around some surface. However, if you have a surface (of the object) you should simply be able to find the intersecting cells. Nontheless, searching and selecting cells within an object should be very fast and straight forward (e.g., setSets, topoSet).
hey Tobi, thanks very much for your reply. At the moment I am implementing a BFS (breath first search) algorithm: treat the cell at the central of the object as root node, then use the connectivity (neighboring cells) between cells to propagate from the center to the outside of the object. I think it is quite similar to iead of waveFront algorithm you mentioned.

By the way, the object surface in my case is implicit: the surface is described as signed distance field, so it is quite easy to determine if one cell (center) is inside or outside of the object surface. But for the case of STL mesh, is there any native algorithms in OpenFOAM to do this job? I once used some algorithms from the geometry library - CGAL for lazy implementation. I guess we can directly call these methods from CGAL since it is ready integrated in OpenFOAM? TopoSet with stl file is not useful when we need to update the cells intersects with obj at every few steps.

Last edited by keepfit; February 3, 2022 at 20:26.
keepfit is offline   Reply With Quote

Old   February 3, 2022, 17:35
Default
  #4
Super Moderator
 
Tobi's Avatar
 
Tobias Holzmann
Join Date: Oct 2010
Location: Tussenhausen
Posts: 2,708
Blog Entries: 6
Rep Power: 51
Tobi has a spectacular aura aboutTobi has a spectacular aura aboutTobi has a spectacular aura about
Send a message via ICQ to Tobi Send a message via Skype™ to Tobi
Only can tell you that CGAL is implemented - yes
__________________
Keep foaming,
Tobias Holzmann
Tobi is offline   Reply With Quote

Reply

Tags
findcell, meshsearch, octree


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[snappyHexMesh] snappyHexMesh stuck when snap is turned on yukuns OpenFOAM Meshing & Mesh Conversion 3 February 2, 2021 13:05
[snappyHexMesh] SnappyHexMesh for internal Flow vishwa OpenFOAM Meshing & Mesh Conversion 24 June 27, 2016 08:54
[foam-extend.org] Error compiling OpenFOAM-1.6-ext Canesin OpenFOAM Installation 137 January 20, 2016 14:56
[Netgen] Import netgen mesh to OpenFOAM hsieh OpenFOAM Meshing & Mesh Conversion 32 September 13, 2011 05:50
Errors running allwmake in OpenFOAM141dev with WM_COMPILE_OPTION%3ddebug unoder OpenFOAM Installation 11 January 30, 2008 20:30


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