View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003371 | OpenFOAM | Bug | public | 2019-10-15 22:01 | 2019-11-12 16:42 |
Reporter | NauticalMile | Assigned To | henry | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Platform | Unix | OS | Ubuntu | OS Version | 16.04 |
Product Version | dev | ||||
Summary | 0003371: blockMesh quits for some combinations of vertex position and vertex / edge / face projection | ||||
Description | I have been programatically generating blockMeshDict files and noticed some funny behaviour at times. In the attached case file, I have 3 blockMeshDict files: 1) blockMeshDictA (MESHES) : filled cylinder using 8 exterior vertices spaced evenly around the cylinder axis to create 4 blocks, each with 6 vertices. 2) blockMeshDictB (FAILS) : same as blockMeshDictA, except vertices have been rotated counter-clockwise about the axis by pi/8 radians. 3) blockMeshDictC (FAILS) : same as blockMeshDictB, except the cylinder is a tube, with an inner radius of 0.25. While blockMeshDictA and B are shorter and easier to read, they use blocks with fewer than 8 vertices. The fact that this mesh also fails suggests the problem is not linked to the number of vertices in the participating blocks. When I say FAILS, the command line output looks like this: $ blockMesh /*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: dev \\/ M anipulation | \*---------------------------------------------------------------------------*/ Build : dev-6f1c3362a637 Exec : blockMesh Date : Oct 15 2019 Time : 15:32:29 Host : [...] PID : 932 I/O : uncollated Case : [...]/OF_case nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10) allowSystemOperations : Allowing user-supplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Overriding DebugSwitches according to controlDict Creating block mesh from "[...]/OF_case/system/blockMeshDict" Creating block edges Creating block faces Creating topology blocks $ I believe this is a bug because all that has changed between blockMeshDictA and B is the cylinder orientation, and A meshes while B does not. blockMeshDictB can be modified to produce a mesh using one of three methods which I could find: 1) Commenting out the 3rd face projection on line 69 2) Commenting out the 6th edge projection on line 52 3) Re-ordering the nodes on line 52 (i.e. changing 7 9 --> 9 7) For this trivial example, face projections are unnecessary, but for the more complicated meshes I wish to generate (e.g. two tubes of differing sizes intersecting at a right angle), the vertices, edges, AND faces need to be projected to ensure the geometry is modeled correctly. I would try to work around the issue by carefully controlling the node ordering, but I can't figure out a consistent fix because I don't know what the root cause is. | ||||
Steps To Reproduce | cd OF_case blockMesh -dict blockMeshDictB #or A or C | ||||
Tags | No tags attached. | ||||
|
|
|
I tested the three mesh files and they all fail, even blockMeshDictA blockMesh -dict system/blockMeshDictA /*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: dev \\/ M anipulation | \*---------------------------------------------------------------------------*/ Build : dev-da429d77f5bf Exec : blockMesh -dict system/blockMeshDictA Date : Nov 12 2019 Time : 16:19:55 Host : "dm" PID : 19776 I/O : uncollated Case : /home/dm2/henry/OpenFOAM/henry-dev/run/Bugs/blockMesh/OF_case nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). SetNaN : Initialising allocated memory to NaN (FOAM_SETNAN). fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10) allowSystemOperations : Allowing user-supplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Overriding DebugSwitches according to controlDict Creating block mesh from "/home/dm2/henry/OpenFOAM/henry-dev/run/Bugs/blockMesh/OF_case/system/blockMeshDictA" Creating block edges Creating block faces Creating topology blocks #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::sigFpe::sigHandler(int) at ??:? #2 ? in "/lib64/libc.so.6" #3 Foam::blockFaces::projectFace::project(Foam::blockDescriptor const&, int, Foam::Field<Foam::Vector<double> >&) const at ??:? #4 Foam::blockDescriptor::correctFacePoints(Foam::FixedList<Foam::Field<Foam::Vector<double> >, 6u>&) const at ??:? #5 Foam::block::createPoints() at ??:? #6 Foam::block::block(Foam::dictionary const&, int, Foam::Field<Foam::Vector<double> > const&, Foam::PtrList<Foam::blockEdge> const&, Foam::PtrList<Foam::blockFace> const&, Foam::Istream&) at ??:? #7 Foam::block::New(Foam::dictionary const&, int, Foam::Field<Foam::Vector<double> > const&, Foam::PtrList<Foam::blockEdge> const&, Foam::PtrList<Foam::blockFace> const&, Foam::Istream&) at ??:? #8 void Foam::PtrList<Foam::block>::read<Foam::block::iNew>(Foam::Istream&, Foam::block::iNew const&) at ??:? #9 Foam::blockMesh::createTopology(Foam::IOdictionary const&, Foam::word const&) at ??:? #10 Foam::blockMesh::blockMesh(Foam::IOdictionary const&, Foam::word const&) at ??:? #11 ? at ??:? #12 __libc_start_main in "/lib64/libc.so.6" #13 ? at /home/abuild/rpmbuild/BUILD/glibc-2.29/csu/../sysdeps/x86_64/start.S:122 Floating point exception (core dumped) |
|
The issue relates to the edge projection producing the correct surface so that the face projection does nothing and produces a 0 initial residual for the iteration but this is used to normalise subsequent residuals to it fails due to a /0. I am testing a fix, will push shortly. |
|
Resolved in OpenFOAM-7 by commit 1e109ebe0c17e31207112de2cc13511e9fe87842 Resolved in OpenFOAM-dev by commit e7128a08529cb1b483b83f51c944a10ff73864b4 |
Date Modified | Username | Field | Change |
---|---|---|---|
2019-10-15 22:01 | NauticalMile | New Issue | |
2019-10-15 22:01 | NauticalMile | File Added: OF_case.zip | |
2019-11-12 16:20 | henry | Note Added: 0010889 | |
2019-11-12 16:34 | henry | Note Added: 0010890 | |
2019-11-12 16:42 | henry | Assigned To | => henry |
2019-11-12 16:42 | henry | Status | new => resolved |
2019-11-12 16:42 | henry | Resolution | open => fixed |
2019-11-12 16:42 | henry | Fixed in Version | => 7 |
2019-11-12 16:42 | henry | Note Added: 0010891 | |
2019-11-12 16:42 | henry | Severity | major => minor |
2019-11-12 16:42 | henry | Description Updated | |
2019-11-12 16:42 | henry | Steps to Reproduce Updated |