sampleDict - Problems with distanceSurface
Hi,
I try to sample my velocity data with distanceSurface (using OF 201) and getting this error: Code:
/*---------------------------------------------------------------------------*\ Because when I try to sample the same case with OF17 it runs fine (without any errors), but the results are verry weird! Here are my sampleDict: Code:
/*--------------------------------*- C++ -*----------------------------------*\ Kris |
did you ever get a reply?
Hi Kris,
I'm trying to use distanceSurface to sample at specific heights above my surface, for flow simulation in the atmospheric boundary layer - exactly what you are doing (according to the name of you stl file). Did you ever solve your problem? I have some additional questions , but first thing first, hope you answer. Hanan. |
Hi Hanan,
After so many years:), do you have a solution for this problem? Regards, Aaron |
Extract the surface from the bottom patch
A good solution that worked like charm for me was to first convert the bottom (terrain) patch into an stl, then move it to the height of interest:
surfaceMeshTriangulate -patches "(Terrain)" Terrain_frompatch.stl surfaceTransformPoints -translate '(0 0 h)' Terrain_frompatch.stl Sampling_surface.stl Where h is your desired height. The resulting surface will have the same mesh resolution as your patch, so if you mesh is okish, your surface sampling should be too. Then you just do a typical triSurfaceMesh sampling: Terrain_ph { // Sampling on triSurface type triSurfaceMesh; surface Sampling_surface.stl; source cells; interpolate false; } Cheers |
12 years later...
I just had that problem. I have used this method for a long time and today was the first time that I run into this problem. The reason is actually in the error message. OpenFOAM can't determine what region is Inside or Outside your stl file. In my case, when it worked, I always used shell-type surfaces. Therefore, the definition of insider and outside is within the postprocess function. Most likely you are using an "actual" surface, at least that was my case. So, the solution is pretty simple, set Signed as False. That should do it. This is what my Dict looks like type surfaces; libs ("libsampling.so"); surfaceFormat raw; interpolationScheme pointMVC; fields ( UPrime2Mean R k UMean ); surfaces ( h_10Percent { // Isosurface from signed/unsigned distance to surface type distanceSurface; signed false; // Definition of surface surfaceType triSurfaceMesh; surfaceName Q3_h1.stl; // Distance to surface distance 0.001; //cell false;// optional: use isoSurface instead // of isoSurfaceCell interpolate true; regularise false; // Optional: do not simplify // mergeTol 1e-10; // Optional: fraction of mesh bounding box // to merge points (default=1e-6) } ); Hope this helps someone in the future. |
angelmonsalve:
By pure chance I had the same issue in the last couple of days, and was able to solve it using "signed false;". Thank you my man/woman! |
Quote:
Using "signed false" will then create an envelope at the given distance away from the surface which may not be what you want for many cases. If you have a distance identical to "0", this is really ill-advised since you most definitely need the sign to get the proper cell cuts. As a side-note: if you have a distance of "0", you will normally get a variety of special handling for at the edges of the surface, which you need to avoid having the distance surface become infinitely large, but also to avoid "ragged" edges. https://develop.openfoam.com/Develop...feebb874d7fae2 |
All times are GMT -4. The time now is 20:30. |