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

Mesh morphing in parallel: procBoundary faces don't match after many iterations

Register Blogs Community New Posts Updated Threads Search

Like Tree1Likes
  • 1 Post By jmf

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   February 4, 2017, 14:22
Default Mesh morphing in parallel: procBoundary faces don't match after many iterations
  #1
jmf
Member
 
Jean-Michel FONTAINE
Join Date: Aug 2009
Location: Orleans - France
Posts: 55
Rep Power: 17
jmf is on a distinguished road
Dear all


I'm using fvMesh::movePoints() for moving a dynamic mesh. The morphing scaling and other components come from sixDOFRigidBodyMotion.
The case is a simple floating box, meshed with snappyHexMesh, nothing special. According checkMesh, the mesh is OK.

Everything works fine on a single processor. But in parallel (8 procs), the solver stops after roughly 70 morphing iterations with this message :

Code:
[0] processorPolyPatch::calcGeometry : Writing my 141 faces to OBJ file "/home/nous/OpenFOAM/nous-dev/tutorials/multiphase/bodyWave/testFloatingBox/processor0/procBoundary0to1_faces.obj"
[1] processorPolyPatch::calcGeometry : Writing my 141 faces to OBJ file "/home/nous/OpenFOAM/nous-dev/tutorials/multiphase/bodyWave/testFloatingBox/processor1/procBoundary1to0_faces.obj"
[2] processorPolyPatch::calcGeometry : Writing my 141 faces to OBJ file "/home/nous/OpenFOAM/nous-dev/tutorials/multiphase/bodyWave/testFloatingBox/processor2/procBoundary2to0_faces.obj"
[0] processorPolyPatch::calcGeometry : Dumping cell centre lines between corresponding face centres to OBJ file"/home/nous/OpenFOAM/nous-dev/tutorials/multiphase/bodyWave/testFloatingBox/processor0/procBoundary0to1_faceCentresConnections.obj"
[2] processorPolyPatch::calcGeometry : Dumping cell centre lines between corresponding face centres to OBJ file"/home/nous/OpenFOAM/nous-dev/tutorials/multiphase/bodyWave/testFloatingBox/processor2/procBoundary2to0_faceCentresConnections.obj"
[1] processorPolyPatch::calcGeometry : Dumping cell centre lines between corresponding face centres to OBJ file"/home/nous/OpenFOAM/nous-dev/tutorials/multiphase/bodyWave/testFloatingBox/processor1/procBoundary1to0_faceCentresConnections.obj"
[0] [2] 
[0] 
[0] --> FOAM FATAL ERROR: 
[0] face 14 area does not match neighbour by 0.00556450469057% -- possible face ordering problem.
patch:procBoundary0to1 my area:0.248848415159 neighbour area:0.248834568363 matching tolerance:1.36641209403e-05
Mesh face:8647 vertices:5((2.29891922335e-07 -0.401730229978 -1.16728607597) (-3.71220352615e-07 2.59544341986e-07 -1.16652025771) (-8.609616315e-07 -3.77768751261e-07 -0.547727379825) (-3.04170602284e-07 -0.20229502984 -0.548709812717) (-1.96712958549e-07 -0.404060089841 -0.551903587152))
If you are certain your matching is correct you can increase the 'matchTolerance' setting in the patch dictionary in the boundary file.
Rerun with processor debug flag set for more information.
[0] 
[0]     From function virtual void Foam::processorPolyPatch::calcGeometry(Foam::PstreamBuffers&)
[0]     in file meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.C at line 284.
FOAM parallel run exiting
[2] 
[2] --> FOAM FATAL ERROR: 
[2] face 14 area does not match neighbour by 0.00556450510688% -- possible face ordering problem.
patch:procBoundary2to0 my area:0.248953795093 neighbour area:0.248967648526 matching tolerance:1.36663291959e-05
Mesh face:7755 vertices:5((-0.401888239985 2.44719181695e-07 -1.16729052031) (-3.71220343883e-07 2.59544353419e-07 -1.16652564526) (-8.6096156693e-07 -3.77768666727e-07 -0.547767214909) (-0.202414009888 -2.04817231172e-07 -0.548748574775) (-0.404287879889 -3.22308157959e-07 -0.551940166394))
If you are certain your matching is correct you can increase the 'matchTolerance' setting in the patch dictionary in the boundary file.
Rerun with processor debug flag set for more information.
[2] 
[2]     From function virtual void Foam::processorPolyPatch::calcGeometry(Foam::PstreamBuffers&)
[2]     in file meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.C at line 284.
[2] 
FOAM parallel run exiting
[2] 

[1] --> FOAM FATAL ERROR: 
[1] face 14 area does not match neighbour by 0.00556450469057% -- possible face ordering problem.
patch:procBoundary1to0 my area:0.248834568363 neighbour area:0.248848415159 matching tolerance:1.36630506152e-05
Mesh face:7758 vertices:5((2.29891931019e-07 -0.401730229978 -1.16729143327) (-1.96712894399e-07 -0.404060089841 -0.551943163643) (-3.04170537813e-07 -0.20229502984 -0.548749587058) (-8.6096156693e-07 -3.77768666727e-07 -0.547767214909) (-3.71220343883e-07 2.59544353419e-07 -1.16652564526))
If you are certain your matching is correct you can increase the 'matchTolerance' setting in the patch dictionary in the boundary file.
Rerun with processor debug flag set for more information.
[1] 
[1]     From function virtual void Foam::processorPolyPatch::calcGeometry(Foam::PstreamBuffers&)
[1]     in file meshes/polyMesh/polyPatches/constraint/processor/processorPolyPatch.C at line 284.
[1] 
FOAM parallel run exiting
[1] 
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD 
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
[linux0:04198] 2 more processes have sent help message help-mpi-api.txt / mpi-abort
[linux0:04198] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
I tried to increase the matching tolerance in the boundary file. This avoids the face matching error, but the solver freezes a few seconds later.
In Paraview, the faulty processor boundary faces show very tiny mismatches, see the attached image.

It may be due to machine precision errors, isn't it ? Is there in OF a build-in function to resynchronize the processor boundary points position ?

I found these classes : /OpenFOAM/meshes/polyMesh/syncTools/syncTools.C
I also found this aplication : /applications/test/syncTools/Test-syncTools.C

I added in the solver something like this, without any results :

Code:
    // Synchonize the points
    pointField syncedPoints(mesh.points());
    syncTools::syncPointPositions
    (
        mesh,
        syncedPoints,
        minMagSqrEqOp<point>(),
        point(GREAT, GREAT, GREAT)
    );
Could anybody give me suggestions ?

Best wishes

Jean-Michel

OF version : 1612+
Attached Images
File Type: jpg faulty faces dump in OBJ.JPG (39.1 KB, 25 views)
blue8803 likes this.
jmf is offline   Reply With Quote

Reply

Tags
match faces, parallel error, processor boundary, synchronization


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
decomposePar problem: Cell 0contains face labels out of range vaina74 OpenFOAM Pre-Processing 37 July 20, 2020 06:38
Problem with chtMultiregionFoam radiation boundary condition baran_foam OpenFOAM Running, Solving & CFD 10 December 17, 2019 18:36
[snappyHexMesh] Error snappyhexmesh - Multiple outside loops avinashjagdale OpenFOAM Meshing & Mesh Conversion 53 March 8, 2019 10:42
pimpleFoam: turbulence->correct(); is not executed when using residualControl hfs OpenFOAM Running, Solving & CFD 3 October 29, 2013 09:35
Orifice Plate with a fully developed flow - Problems with convergence jonmec OpenFOAM Running, Solving & CFD 3 July 28, 2011 06:24


All times are GMT -4. The time now is 21:24.