CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   Open Source Meshers: Gmsh, Netgen, CGNS, ... (http://www.cfd-online.com/Forums/openfoam-meshing-open/)
-   -   gmshToFoam problem: not the same mesh in Gmsh vs. paraview (http://www.cfd-online.com/Forums/openfoam-meshing-open/78076-gmshtofoam-problem-not-same-mesh-gmsh-vs-paraview.html)

zhernadi July 12, 2010 11:53

gmshToFoam problem: not the same mesh in Gmsh vs. paraview
 
1 Attachment(s)
Hi there,

I am a new user of OpenFOAM and I have some problems using gmshToFoam. When I convert an .msh file for using in OpenFOAM the resulting mesh is not the same. There might be some problems with boundaries linked (I have to create 'defaultFaces' boundaries, otherwise paraFoam fails).

I use 64bit Ubuntu 10.04 with OpenFoam 1.7.0, ParaView 3.8.0 and Gmsh 2.4.2. I write down my very simple example so anyone can reproduce this problem.

1. I created an empty directory:
mkdir cuboid
cd cuboid/

2. I created a text file for the geometry:
nano cuboid.geo

Code:

Point(1) = {0, 0, 0};
Point(2) = {0, 0, 3};
Point(3) = {0, 2, 0};
Point(4) = {0, 2, 3};
Point(5) = {1, 0, 0};
Point(6) = {1, 0, 3};
Point(7) = {1, 2, 0};
Point(8) = {1, 2, 3};
Line(1) = {8, 7};
Line(2) = {7, 3};
Line(3) = {3, 4};
Line(4) = {4, 8};
Line(5) = {6, 5};
Line(6) = {5, 1};
Line(7) = {1, 2};
Line(8) = {2, 6};
Line(9) = {4, 2};
Line(10) = {6, 8};
Line(11) = {7, 5};
Line(12) = {1, 3};
Line Loop(13) = {10, -4, 9, 8};
Plane Surface(14) = {13};
Line Loop(15) = {9, -7, 12, 3};
Plane Surface(16) = {15};
Line Loop(17) = {6, 12, -2, 11};
Plane Surface(18) = {17};
Line Loop(19) = {11, -5, 10, 1};
Plane Surface(20) = {19};
Line Loop(21) = {8, 5, 6, 7};
Plane Surface(22) = {21};
Line Loop(23) = {4, 1, 2, 3};
Plane Surface(24) = {23};
Surface Loop(25) = {14, 20, 18, 22, 16, 24};
Volume(26) = {25};
Physical Surface("outlet") = {14};
Physical Surface("noslipwall") = {20, 24, 16, 22};
Physical Surface("inlet") = {18};
Physical Volume(27) = {26};

3. I created the mesh in cuboid.msh with this command:
gmsh cuboid.geo -3

4. I created three files as follows.

mkdir system 0
cp $FOAM_TUTORIALS/incompressible/icoFoam/elbow/system/controlDict system/
nano 0/p

Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      volScalarField;
    object      p;
}
dimensions      [0 2 -2 0 0 0 0];
internalField  uniform 0;
boundaryField
{
    noslipwall         
    {
        type            zeroGradient;
    }
    inlet
    {
        type            zeroGradient;
    }
    outlet
    {
        type            fixedValue;
        value          uniform 0;
    }
    defaultFaces
    {
        type            fixedValue;
        value          uniform 0;
    }
}

nano 0/U

Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      volVectorField;
    object      U;
}
dimensions      [0 1 -1 0 0 0 0];
internalField  uniform (0 0 0);
boundaryField
{
    noslipwall         
    {
        type            fixedValue;
        value          uniform (0 0 0);
    }
    inlet
    {
        type            fixedValue;
        value          uniform (0 0 1);
    }
    outlet
    {
        type            zeroGradient;
    }
    defaultFaces
    {
        type            zeroGradient;
    }
}

5. I converted the Gmsh mesh to OpenFoam with this command:
gmshToFoam cuboid.msh

At this point I noticed a warning message:

--> FOAM Warning :
From function polyMesh::polyMesh(... construct from shapes...)
in file meshes/polyMesh/polyMeshFromShapeMesh.C at line 576
Found 372 undefined faces in mesh; adding to default patch.


6. I copied some files for solving the model:
cp $FOAM_TUTORIALS/incompressible/icoFoam/elbow/system/fvS* system/
cp $FOAM_TUTORIALS/incompressible/icoFoam/elbow/constant/transportProperties constant/

7. I studied the mesh in ParaView using paraFoam command and I noticed that the mesh is not the same and the boundary definitions are not correct.

http://www.cfd-online.com/Forums/att...1&d=1278949637

8. I tried to run icoFoam and it solved the model without problems, but the solution is not realistic.

I think the problem comes from gmshToFoam, the OpenFOAM mesh is not the same as Gmsh mesh. Can you help me using a Gmsh mesh in OpenFOAM? If you can share any (tutorial) model for creating an OpenFOAM model using a Gmsh mesh, it would be also highly appreciated.

Thank you,
Zoltan

cgoniva July 19, 2010 13:37

Hi Zoltan!

I'm not familiar with gmsh, but I had a similar problem:
I once notized with an other CAD tool (SALOME) that I can either export the geometry (usually very coarse) or the mesh I built for the geometry. Maybe you exported the geometry and not the mesh?

regards, chris

Akuji July 21, 2010 06:30

Hi, Zoltan!
A'm trying to make a simple example using gmsh and OpanFOAM. I have got a question for you: how did you make named physical surfaces as inlet, outlet and noslipwall? I have some troubles with it...

zhernadi July 21, 2010 09:07

Chris, thank you for your reply. I will try Salome. I think .geo is for geomety and .msh is for the mesh in Gmsh.

Arina, I used Gmsh GUI to create this example, so it gave numbers as 'Physical Surface' index. I noted which index is for which boundary, then I used a text editor to modify the numbers in the .geo file to "inlet", "outlet" and "noslipwall". That's the trick.

zhernadi July 21, 2010 09:23

It works!
 
I figured out that there was no problem with the conversion. It works!

Recent paraFoam has some problem with localization, so I started "LC_ALL=C paraFoam". After this, the mesh was the same as in Gmsh and the solution generated by icoFoam was also realistic.

So one may try the instructions in the first post of this thread as a tutorial for gmshToFoam.

Akuji July 22, 2010 04:07

Quote:

Originally Posted by zhernadi (Post 268328)
Arina, I used Gmsh GUI to create this example, so it gave numbers as 'Physical Surface' index. I noted which index is for which boundary, then I used a text editor to modify the numbers in the .geo file to "inlet", "outlet" and "noslipwall". That's the trick.

Hi, Zoltan.
Thanks for quick reply. But I have one more question: did you open .geo and just replace for example Surface (50) to Surface ("inlet")?

zhernadi July 28, 2010 05:21

Quote:

Originally Posted by Akuji (Post 268455)
Hi, Zoltan.
Thanks for quick reply. But I have one more question: did you open .geo and just replace for example Surface (50) to Surface ("inlet")?

Yes, that's the trick.

moser_r July 5, 2011 08:17

I've been trying to get the physical surfaces into the boundary file, but with no success. I copied your exact file above, meshed it in gmsh, then used gmshToFoam, but those surfaces do not come across - I just get patch0 and defaultFaces. Any idea what I might be doing wrong?

moser_r July 7, 2011 02:28

I've managed to sort the problem by downloading the latest (nightly) build of gmsh (2.5.1). All patches now come through to OpenFOAM properly.


All times are GMT -4. The time now is 15:44.