CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Native Meshers: blockMesh (http://www.cfd-online.com/Forums/openfoam-meshing-blockmesh/)
-   -   BlockMeshMergePatchPairs trouble 2 (http://www.cfd-online.com/Forums/openfoam-meshing-blockmesh/61837-blockmeshmergepatchpairs-trouble-2-a.html)

r2d2 December 19, 2006 11:35

Hi, Can anyone tell me why
 
Hi,
Can anyone tell me why the following blockMeshDict of a simple four blocks gives trouble when trying to merge the last pair of patches ( topMerge bottomMerge) .
blockMeshDict reads:

/*---------------------------------------------------------------------------*\
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 1.0 |
| \ / A nd | Web: http://www.openfoam.org |
| \/ M anipulation | |
\*---------------------------------------------------------------------------*/

FoamFile
{
version 2.0;
format ascii;

root "";
case "";
instance "";
local "";

class dictionary;
object blockMeshDict;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //


convertToMeters 1.0;

vertices
(

// z = 0 (back plane)
(0 0 0) //0
(1 0 0) //1
(1 0 0) //2
(2 0 0) //3
(2 0 0) //4
(3 0 0) //5
(0 1 0) //6
(1 1 0) //7
(1 1 0) //8
(2 1 0) //9
(2 1 0) //10
(3 1 0) //11
(0 1 0) //12
(3 1 0) //13
(0 2 0) //14
(3 2 0) //15


// z = 0.1 (front plane) = +16
(0 0 0.1) //16
(1 0 0.1) //17
(1 0 0.1) //18
(2 0 0.1) //19
(2 0 0.1) //20
(3 0 0.1) //21
(0 1 0.1) //22
(1 1 0.1) //23
(1 1 0.1) //24
(2 1 0.1) //25
(2 1 0.1) //26
(3 1 0.1) //27
(0 1 0.1) //28
(3 1 0.1) //29
(0 2 0.1) //30
(3 2 0.1) //31
);

blocks
(
hex (0 1 7 6 16 17 23 22) (2 2 1) simpleGrading (1 1 1)
hex (2 3 9 8 18 19 25 24) set1 (2 2 1) simpleGrading (1 1 1)
hex (4 5 11 10 20 21 27 26) (2 2 1) simpleGrading (1 1 1)
hex (12 13 15 14 28 29 31 30) (8 2 1) simpleGrading (1 1 1)
);

edges
(
);

patches
(

wall bottom
(
(0 1 17 16)
(2 3 19 18)
(4 5 21 20)
)
wall top
(
(14 30 31 15)
)

patch inflow
(
(0 16 22 6)
(12 28 30 14)
)
patch outflow
(
(5 11 27 21)
(13 15 31 29)
)

empty frontAndBack
(
(0 6 7 1)
(16 17 23 22)
(2 8 9 3)
(18 19 25 24)
(4 10 11 5)
(20 21 27 26)
(12 14 15 13)
(28 29 31 30)
)

patch leftMerge1
(
(1 7 23 17)
)
patch rightMerge1
(
(2 18 24 8)
)

patch leftMerge2
(
(3 9 25 19)
)
patch rightMerge2
(
(4 20 26 10)
)

patch bottomMerge
(
(6 22 23 7)
(8 24 25 9)
(10 26 27 11)
)

patch topMerge
(
(12 13 29 28)
)

);

mergePatchPairs
(
(leftMerge1 rightMerge1)
(leftMerge2 rightMerge2)
(topMerge bottomMerge)
);


// ************************************************** *********************** //


and the output of blockMesh gives the error:
Enriched patch support OK. Slave faces: 6 Master faces: 8
local: 4(18 27 28 19) one side: 0 other side: 0
local: 4(28 38 36 19) one side: 0 other side: 1
Finished face 0
local: 4(36 38 29 20) one side: 1 other side: 1


--> FOAM FATAL ERROR : Zero length edge detected. Probable projection error: slave patch probably does not project onto master. Please switch on enriched patch debug for more info

From function void enrichedPatch::calcCutFaces() const
in file slidingInterface/enrichedPatch/enrichedPatchCutFaces.C at line 237.

FOAM aborting

Foam::error::printStack(Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&)
Foam::error::abort()
Foam::enrichedPatch::calcCutFaces() const
Foam::enrichedPatch::cutFaces() const
Foam::slidingInterface::coupleInterface(Foam::poly TopoChange&) const
Foam::slidingInterface::setRefinement(Foam::polyTo poChange&) const
Foam::polyTopoChanger::topoChangeRequest() const
Foam::polyTopoChanger::changeMesh()
Foam::attachPolyTopoChanger::attach(bool)
blockMesh [0x80718c2]
__libc_start_main
__gxx_personality_v0

..and that is with "enriched patch debug" switched on in controlDict.
What am I missing?
Many thanx in advance,
Radu

hjasak December 19, 2006 12:38

I bet you 10 to 1 you messed u
 
I bet you 10 to 1 you messed up a choice of master and slave patch pair: the two patches must face each other. Otherwise, the slave projects into a line on a master and you get this error.

Hrv

r2d2 December 20, 2006 05:32

Oh how much I would like to lo
 
Oh how much I would like to loose this bet... The two patches do face each other and do have the same area and so on.
I did an even simpler test, with only three blocks, something like (in xy plane):

bl3
___________
bl1 | bl2


and defined just two merge pairs
1: between bl1 and bl2
2: between bl3 and bl1+bl2
...and saw that it failed only when BOTH the merge pairs were specified. Any one by itself was fine.(of course the mesh had multiple regions not connected by any face)
Just in case anyone is interested I post theblockMeshDict file.
/*---------------------------------------------------------------------------*\
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 1.0 |
| \ / A nd | Web: http://www.openfoam.org |
| \/ M anipulation | |
\*---------------------------------------------------------------------------*/

FoamFile
{
version 2.0;
format ascii;

root "";
case "";
instance "";
local "";

class dictionary;
object blockMeshDict;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //


convertToMeters 1.0;

vertices
(

// z = 0 (back plane)
(0 0 0) //0
(1 0 0) //1
(1 0 0) //2
(2 0 0) //3
(0 1 0) //4
(1 1 0) //5
(1 1 0) //6
(2 1 0) //7
(0 1 0) //8
(2 1 0) //9
(0 2 0) //10
(2 2 0) //11


// z = 0.1 (front plane) = indx+12

(0 0 0.1) //12
(1 0 0.1) //13
(1 0 0.1) //14
(2 0 0.1) //15
(0 1 0.1) //16
(1 1 0.1) //17
(1 1 0.1) //18
(2 1 0.1) //19
(0 1 0.1) //20
(2 1 0.1) //21
(0 2 0.1) //22
(2 2 0.1) //23


);

blocks
(
hex (0 1 5 4 12 13 17 16) (2 4 1) simpleGrading (1 1 1)
hex (2 3 7 6 14 15 19 18) set1 (2 8 1) simpleGrading (1 1 1)
hex (8 9 11 10 20 21 23 22) (8 4 1) simpleGrading (1 1 1)
);

edges
(
);

patches
(

wall bottom
(
(0 1 13 12)
(2 3 15 14)
)

wall top
(
(10 22 23 11)
)

patch inflow
(
(0 12 16 4)
(8 20 22 10)
)
patch outflow
(
(3 7 19 15)
(9 11 23 21)
)

empty frontAndBack
(
(0 4 5 1)
(12 13 17 16)
(2 6 7 3)
(14 15 19 18)
(8 10 11 9)
(20 21 23 22)
)

patch leftMerge
(
(1 5 17 13)
)
patch rightMerge
(
(2 14 18 6)
)



patch bottomMerge
(
(4 16 17 5)
(6 18 19 7)
)

patch topMerge
(
(8 9 21 20)
)

);

mergePatchPairs
(
(leftMerge rightMerge)
(topMerge bottomMerge)
);


// ************************************************** *********************** //

Cheers,
Radu

hjasak December 20, 2006 06:21

You have two intersecting mesh
 
You have two intersecting mesh modifiers operating at the same time, which is not allowed - please read the documentation. If you connect them one at a time, everything works.

Hrv

r2d2 December 20, 2006 07:34

Sorry about that, but I tried
 
Sorry about that, but I tried to run blockMesh with either one of them switched on and then use stitchMesh for the other pair and I get the following error, e.g.:
Adding point and face zones


--> FOAM FATAL ERROR : point, face or cell zone already exists

From function void addZones
(
const List<pointzone*>& pz,
const List<facezone*>& fz,
const List<cellzone*>& cz
)
in file meshes/polyMesh/polyMesh.C at line 590.

FOAM aborting

Foam::error::printStack(Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&)
Foam::error::abort()
Foam::polyMesh::addZones(Foam::List<foam::pointzon e*> const&, Foam::List<foam::facezone*> const&, Foam::List<foam::cellzone*> const&)
stitchMesh [0x80564c8]
__libc_start_main
__gxx_personality_v0
Aborted

I remember seeing this problem reported before...a long time ago...but donīt seem to be able to find that thread.
Can anyone help.
Thanx again,
Radu


All times are GMT -4. The time now is 16:05.