CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Meshing & Mesh Conversion (https://www.cfd-online.com/Forums/openfoam-meshing/)
-   -   [blockMesh] using blockMesh - defaultFaces (https://www.cfd-online.com/Forums/openfoam-meshing/129683-using-blockmesh-defaultfaces.html)

aylalisa February 10, 2014 18:21

using blockMesh - defaultFaces
 
Hi to All!

could anybody support me to generate a hexmesh with blockMesh:
channel with obstacle in the centre.
http://up.picr.de/17331261jr.jpg
I've created the mesh composing of 18 blocks.
Result: 4 defaultFaces (faded in the picture --> redundant plane).
Inlet is the leftmost plane, outlet rightmost plane, right wall is turned off in the pic,
obstacle in the centre.

How can I remove these defaultFaces?

If I start the simulation converges very (too) fast, the result is wrong, the solver does not solve for Uz (but for Ux and Uy).
The same case works perfectly if I disclaim the obstacle and create a very simple mesh (1 block) instead.
Each time I create a mesh with blockMesh with undefined faces (wherever they come from) the simulation produces wrong results and paraFoam crashes if I try to view the mesh or the final reconstructed result from parallel run.

Please advice!
Aylalisa

Thangam February 11, 2014 22:27

could you post your case along with the blockmesh dictionary please? Also, do you have any errosr/warnings when paraview crashes?

alexeym February 12, 2014 02:31

Hi,

defaultFaces is a patch where faces that do not belong to any patch go.

I.e. to remove them you have to define these patches in boundary section of blockMeshDict and maybe then use mergePatchPairs to get rid of those additional patches.

And yes, as pervious poster said it would be much easier to help you if you post your blockMeshDict.

aylalisa February 13, 2014 13:14

Hi Thangam, Hi alexeym,


with that case I wanted to test if it is possible to subdivide a domain with blockMesh in arbitrary number of blocks.

Code:

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

convertToMeters 1;

vertices
(
 
(    0.00    0.00    0.00    )    //0
(    0.94    0.00    0.00    )    //1
(    0.94    0.71    0.00    )    //2
(    0.00    0.71    0.00    )    //3
(    0.00    0.00    0.50    )    //4
(    0.94    0.00    0.50    )    //5
(    0.94    0.71    0.50    )    //6
(    0.00    0.71    0.50    )    //7
(    0.94    0.86    0.00    )    //8
(    0.00    0.86    0.00    )    //9
(    0.94    0.86    0.50    )    //10
(    0.00    0.86    0.50    )    //11
(    0.94    1.57    0.00    )    //12
(    0.00    1.57    0.00    )    //13
(    0.94    1.57    0.50    )    //14
(    0.00    1.57    0.50    )    //15
(    0.00    0.00    1.00    )    //16
(    0.94    0.00    1.00    )    //17
(    0.94    0.71    1.00    )    //18
(    0.00    0.71    1.00    )    //19
(    0.94    0.86    1.00    )    //20
(    0.00    0.86    1.00    )    //21
(    0.94    1.57    1.00    )    //22
(    0.00    1.57    1.00    )    //23
(    1.10    0.00    0.00    )    //24
(    1.10    0.71    0.00    )    //25
(    1.10    0.00    0.50    )    //26
(    1.10    0.71    0.50    )    //27
(    1.10    0.86    0.00    )    //28
(    1.10    0.86    0.50    )    //29
(    1.10    1.57    0.00    )    //30
(    1.10    1.57    0.50    )    //31
(    1.10    0.00    1.00    )    //32
(    1.10    0.71    1.00    )    //33
(    1.10    0.86    1.00    )    //34
(    1.10    1.57    1.00    )    //35
(    3.14    0.00    0.00    )    //36
(    3.14    0.71    0.00    )    //37
(    3.14    0.00    0.50    )    //38
(    3.14    0.71    0.50    )    //39
(    3.14    0.86    0.00    )    //40
(    3.14    0.86    0.50    )    //41
(    3.14    1.57    0.00    )    //42
(    3.14    1.57    0.50    )    //43
(    3.14    0.00    1.00    )    //44
(    3.14    0.71    1.00    )    //45
(    3.14    0.86    0.50    )    //46
(    3.14    0.86    1.00    )    //47
(    3.14    1.57    0.50    )    //48
(    3.14    1.57    1.00    )    //49


);

edges
(
);

blocks
(
    hex (0 1 2 3 4 5 6 7) (30 23 25) simpleGrading (1 1 1) //block 0
    hex (3 2 8 9 7 6 10 11) (30 5 25) simpleGrading (1 1 1) //block 1
    hex (9 8 12 13 11 10 14 15) (30 23 25) simpleGrading (1 1 1) //block 2
    hex (4 5 6 7 16 17 18 19) (30 23 25) simpleGrading (1 1 1) //block 3
    hex (7 6 10 11 19 18 20 21) (30 5 25) simpleGrading (1 1 1) //block 4
    hex (11 10 14 15 21 20 22 23) (30 23 25) simpleGrading (1 1 1) //block 5
    hex (1 24 25 2 5 26 27 6) (5 23 25) simpleGrading (1 1 1) //block 6
    //hex (2 25 28 8 6 27 29 10) (5 5 25) simpleGrading (1 1 1) //block 7
    hex (8 28 30 12 10 29 31 14) (5 23 25) simpleGrading (1 1 1) //block 8
    hex (5 26 27 6 17 32 33 18) (5 23 25) simpleGrading (1 1 1) //block 9
    hex (6 27 29 10 18 33 34 20) (5 5 25) simpleGrading (1 1 1) //block 10
    hex (10 29 31 14 20 34 35 22) (5 23 25) simpleGrading (1 1 1) //block 11
    hex (24 36 37 25 26 38 39 27) (65 23 25) simpleGrading (1 1 1) //block 12
    hex (25 37 40 28 27 39 41 29) (65 5 25) simpleGrading (1 1 1) //block 13
    hex (28 40 42 30 29 41 43 31) (65 23 25) simpleGrading (1 1 1) //block 14
    hex (26 38 39 27 32 44 45 33) (65 23 25) simpleGrading (1 1 1) //block 15
    hex (27 39 46 29 33 45 47 34) (65 5 25) simpleGrading (1 1 1) //block 16
    hex (29 46 48 31 34 47 49 35) (65 23 25) simpleGrading (1 1 1) //block 17

);

boundary
(
    inlet
    {
        type patch;
        faces
        (
            (0 4 7 3)
        (3 7 11 9)
        (9 11 15 13)
        (4 16 19 7)
        (7 19 21 11)
        (11 21 23 15)
        );
    }

    outlet
    {
        type patch;
        faces
        (
            (36 37 39 38)
        (37 40 41 39)
        (40 42 43 41)
        (38 39 45 44)
        (39 46 47 45)
        (46 48 49 47)
        );
    }

    wallLeft
    {
        type wall;
    type cyclic;
    neighbourPatch wallRight;
    matchTolerance 0.01;
        faces
        (
        (12 13 15 14)
        (14 15 23 22)
        (30 12 14 31)
        (31 14 22 35)
        (42 30 31 43)
        (48 31 35 49)
        );
    }
   
    wallRight
    {
        //type wall;
        type cyclic;
    neighbourPatch wallLeft;
    matchTolerance 0.01;
        faces
        (
        (0 1 5 4)
        (4 5 17 16)
        (1 24 26 5)
        (5 26 32 17)
        (24 36 38 26)
        (26 38 44 32)
        );
    }
   
    top
    {
        type wall;
        faces
        (
        (16 17 18 19)
        (19 18 20 21)
        (21 20 22 23)
        (17 32 33 18)
        (18 33 34 20)
        (20 34 35 22)
        (32 44 45 33)
        (33 45 47 34)
        (34 47 49 35)
    );
    }
   
    bottom
    {
        type wall;
        faces
        (
            (0 3 2 1)
        (3 9 8 2)
        (9 13 12 8)
        (1 2 25 24)
        //(2 8 28 25)
        (8 12 30 28)
        (28 30 42 40)
        (25 28 40 37)
        (24 25 37 36)
        );
    }
   
    obstacle
    {
        type wall;
        faces
        (
        (8 28 29 10)
        (6 10 29 27)
        (2 6 27 25)
        (2 8 10 6)
        (25 27 29 28)
       
        );
    }
   
);

mergePatchPairs
(
);

I've paid attention during node definition. Theoretically there shouldn't be any default faces.
Each time I unintentionally create default faces the solver only solves for certain components of u! In this case: Uz is omitted.
Why?
If the node coordinates are correctly defined there should not appear any default faces.



Ayla

alexeym February 13, 2014 13:57

Hi,

All faces that are not described in your boundary sub-dictionary of blockMeshDict go to defaultFaces. By default type of this boundary is empty, so there are no boundary conditions on the patch, and that is why you've got problems with velocities.

In your case I've found duplicate vertices in blockMeshDict (43 and 48 for example, actually I've stopped after I found this pair, maybe there are more), so when you describe your blocks there appear two faces (though in paraview they look like one face) that can not be automatically merged by blockMesh (actually blockMesh thinks you've done this intentionally to have a wall inside domain). So they go to defaultFaces as you did not describe this faces in boundary sub-dictionary.

I'd suggest Gmsh for the mesh as there it is easy to avoid this type of errors (and yes, it can build hexagonal meshes with transfinite algorithm).


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