
[Sponsors] 
November 3, 2008, 08:49 
Is there a quick way to determ

#1 
New Member
Robert Manning
Join Date: Mar 2009
Posts: 12
Rep Power: 10 
Is there a quick way to determine the volume of a cell that is cut by a surface? Also, is there a way to determine if an arbitrary point is in inside a cell?


November 3, 2008, 09:11 
Hi Robert
Please try
mes

#2 
Senior Member
Join Date: Mar 2009
Posts: 248
Rep Power: 11 
Hi Robert
Please try mesh.findCell(location); where location is a point defined as: point location(x y z); Once you have the label of the cell where point is located you can get its volume as well. Hope that helps Regards Jaswi 

November 4, 2008, 15:37 
Thanks Jaswi for your help. H

#3 
New Member
Robert Manning
Join Date: Mar 2009
Posts: 12
Rep Power: 10 
Thanks Jaswi for your help. How do I make a pointField structure from several individual vectors?


November 4, 2008, 16:02 
Hi Robert
Sorry I did not g

#4 
Senior Member
Join Date: Mar 2009
Posts: 248
Rep Power: 11 
Hi Robert
Sorry I did not get that question :). Well as far as I know pointField is a field of points and field itself is a List of a <type>. So if you have certain number of individual vectors then you can create a pointField of certain size as you would do for an array and then assign your vectors as the elements of array . The code might look something like this: pointField myField(size,vector::zero); myField[0] = vector1(x,y,z); myField[1] = vector2(x,y,z); and so on..... Please let me know if this doesn't works ... Hope that helps Regards Jaswi 

November 6, 2008, 11:36 
Thanks Jaswinder. It works we

#5 
New Member
Robert Manning
Join Date: Mar 2009
Posts: 12
Rep Power: 10 
Thanks Jaswinder. It works well. I'm currently trying to debug a code that I wrote which initializes gamma based on an STL file. It is slightly different than "surfaceToCell" because it will set gamma to a fraction of the cell that is cut by the surface. It places hundreds of points within each cell that is cut by the surface. It then calculates the fraction that is interior using surfaceToPoint. However it seems that surfaceToPoint returns some falsenegatives if the point is in the cell. Anyone willing to give me a hand? I can post or email you the code and STL file.
Thanks, Bob 

November 7, 2008, 11:20 
Hi Robert
I can give it a

#6 
Senior Member
Join Date: Mar 2009
Posts: 248
Rep Power: 11 
Hi Robert
I can give it a try Regards Jaswi 

November 8, 2008, 20:24 
Thanks Jaswi. Is there anyway

#7 
New Member
Robert Manning
Join Date: Mar 2009
Posts: 12
Rep Power: 10 
Thanks Jaswi. Is there anyway to post a compressed file? If not, email me at "BobatPurdue" at "yahoo.com".
Thanks, Bob 

November 11, 2008, 21:32 
I attached a short code that s

#8 
New Member
Robert Manning
Join Date: Mar 2009
Posts: 12
Rep Power: 10 
I attached a short code that sees if points are within a STL surface. It reads gamma.stl. However, there appears to be a bug. It reports that points are both interior and exterior to the surface when they are both inside the surface. Possible bug / limitation of the code / programmer error ? I can attach the gamma.stl if needed.
Thanks, Bob  CODE  #include "argList.H" #include "Time.H" #include "fvMesh.H" #include "topoSetSource.H" #include "cellSet.H" #include "volFields.H" #include "triSurface.H" #include "Random.H" #include "triSurfaceSearch.H" using namespace Foam; int main(int argc, char *argv[]) { //Random Random rndGen(label(0)); // Temp variables scalar currentx; scalar currenty; scalar currentz; scalar randnum; // Point list pointField cellPoints(10,vector::zero); // Random point in cell vector currentpoint = vector::zero; forAll(cellPoints,pointsi) { randnum = rndGen.scalar01(); currentx = (randnum0.5)*0.57735*2; randnum = rndGen.scalar01(); currenty = (randnum0.5)*0.57735*2; randnum = rndGen.scalar01(); currentz = (randnum0.5)*0.57735*2; currentpoint = Vector<scalar>(currentx,currenty,currentz); cellPoints[pointsi] = currentpoint; } // Select Surface triSurface surf("gamma.stl"); triSurfaceSearch querySurf(surf); // determine if points inside surface boolList pointInside(querySurf.calcInside(cellPoints)); forAll(pointInside, pointI) { bool isInside = pointInside[pointI]; cout << cellPoints[pointI].x() << " " << cellPoints[pointI].y() << " " << cellPoints[pointI].z(); if (isInside) cout << " Inside\n"; else cout << " Outside\n"; } return 0; } 

Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
SnappyHexMesh Point is not inside Mesh but it is  wolle1982  OpenFOAM Mesh Utilities  10  October 4, 2017 13:25 
Point labels associated with a cell  philippose  OpenFOAM Meshing Format & General Technical  16  June 30, 2008 08:37 
udf to set vel. = 0 at a grid point or a cell  Ralf Schmidt  FLUENT  0  September 22, 2006 09:45 
point inside a hexahedron  gama  Main CFD Forum  6  July 28, 2006 09:06 
How to determine a point is inside a tetrahedral?  G.P. Xia  Main CFD Forum  16  January 12, 2000 12:15 