Вы находитесь на странице: 1из 4

2D Mesh Tutorial using GMSH - OpenFOAMWiki

http://openfoamwiki.net/index.php/2D_Mesh_Tuto...

2D Mesh Tutorial using GMSH


From OpenFOAMWiki
This tutorial was created to show how to generate a 2D mesh for OpenFOAM using the GMSH Open Source Mesh Generator. OpenFOAM by default only works with 3D mesh elements, so some special steps need to be applied to create a 2D mesh. This is not meant to be a tutorial on GMSH or OpenFOAM, but just some useful steps to get the two tools to work together. Note that this uses the GMSH GUI to create the mesh, and requires some modications of the resulting .geo le.

1 Dening the Geometry in GMSH


1. Open GMSH and create a new le. 2. In a single plane (2D), create the geometry by rst creating all points, then combining the points into lines, and then the lines into a surface. These can all be done from the Geometry Menu under Elementary entities->Add->New. 3. Extrude the nal surface into 3D by selecting Elementary entities->Extrude->Translate under the Geometry menu. Select Surface, then click the surface in the viewer. This will extend the surface into 3D space. The distance and direction of the extension is dened under the Contextual Geometry Denitions window that appears, under the Translate tab. 4. Now that the shape is 3D, the boundaries can be dened. To dene a boundary, go to Physical Groups->Add->Surface from Geometry and add each surface that will be a boundary. Remember the order of the boundaries, as the GMSH GUI will label them with numbers that later need to be changed to a text name for OpenFOAM. For example, if the shape is a square, select the bottom, left, top, right, front, and back faces and individually add them as a Physical Group (If your boundary consists of multiple faces, you can select them together and then add the Physical Group). Later the names will be changed from a number to bottom, left, top, etc... These names will be used in OpenFOAM. 5. The volume of the geometry must also be named. Select Physical Groups->Add->Volume from Geometry and select the volume. 6. The shape should be saved as a .geo le automatically, but if not, save it now. Then open the .geo le in a text editor. Rename the Physical Surfaces to the names that will be used in OpenFOAM as the boundary names. For example (the numbers may be dierent):

1 de 4

23/05/11 06:53

2D Mesh Tutorial using GMSH - OpenFOAMWiki

http://openfoamwiki.net/index.php/2D_Mesh_Tuto...

Physical Physical Physical Physical Physical Physical

Surface("front") = {28}; Surface("back") = {6}; Surface("bottom") = {27}; Surface("left") = {15}; Surface("top") = {19}; Surface("right") = {23};

Do the same for the volume:


Physical Volume("internal") = {1};

7. In the .geo le, the Extrude statement must be modied to have a single layer, and then should be recombined. Do this by adding the Layers{1} and Recombine commands to the Extrude command. This ensures that the mesh blocks are created only in 2D and then extended to 3D, and not divided in the 3rd axis. For example:
Extrude {0, 0, 10} { Surface{6}; Layers{1}; Recombine; }

8. Save the .geo le in the text editor and then reload in GMSH using Reload under the Geometry menu. There should be no errors produced by GMSH. Below is an example of a 2D mesh .geo le of a simple square:
Point(1) = {-100, 100, 0, 1e+22}; Point(2) = {100, 100, 0, 1e+22}; Point(3) = {100, -100, 0, 1e+22}; Point(4) = {-100, -100, 0, 1e+22}; Line(1) = {1, 2}; Line(2) = {2, 3}; Line(3) = {3, 4}; Line(4) = {4, 1}; Line Loop(6) = {4, 1, 2, 3}; Plane Surface(6) = {6}; Physical Volume("internal") = {1}; Extrude {0, 0, 10} { Surface{6}; Layers{1}; Recombine; } Physical Surface("front") = {28}; Physical Surface("back") = {6}; Physical Surface("bottom") = {27}; Physical Surface("left") = {15}; Physical Surface("top") = {19}; Physical Surface("right") = {23};

2 de 4

23/05/11 06:53

2D Mesh Tutorial using GMSH - OpenFOAMWiki

http://openfoamwiki.net/index.php/2D_Mesh_Tuto...

9. Create the mesh in GMSH by selecting 3D from the Mesh menu. If everything is set up correctly (via the Extrude modications), the sides of the 3D mesh should only have straight lines connecting the front face to the back face. This is required for OpenFOAM because for 2D analysis the mesh blocks should only change in two dimensions. OpenFOAM will produce an error if the mesh does not meet this requirement. The size of the mesh elements can be controlled by setting the Element Size Factor under Mesh in the Options window (select Tools->Options from the main menu). The smaller the number, the smaller the mesh elements. For the changes in element size factor to take place, just go back to Geometry, Reload, then back to Mesh and click 3D. 10. Save the mesh by selecting Save from the Mesh menu. This will create a le using the same name as the .geo le, but ending in .msh. This will be used by the OpenFOAM utility gmshToFoam that is shipped with OpenFOAM.

2 Converting the Mesh to OpenFOAM


1. An OpenFOAM case directory with a controlDict le must already be created. Copy the .msh le into the case directory. 2. Open a command console and go to the case directory, and enter gmshToFoam <le.msh>. For example:
gmshToFoam square.msh

This will create the mesh used by OpenFOAM under the constant/polyMesh directory. If there are any errors, ensure that a proper case directory is set up (refer to OpenFOAM documentation, or use a pre-shipped case directory such as icoFoam or simpleFoam). If the errors indicate no 3D elements exist, or there is another mesh problem, make sure all steps were followed in the GMSH section of this tutorial. 3. Check that the mesh conforms to OpenFOAM standards by running checkMesh from the console. 4. To conrm that the boundaries made it to the OpenFOAM mesh, open the boundary le in the case directory under constant/polyMesh. Each boundary is dened here. For the faces that are along the 3rd dimension, set the type to empty. For example:
back { type

empty;

3 de 4

23/05/11 06:53

2D Mesh Tutorial using GMSH - OpenFOAMWiki

http://openfoamwiki.net/index.php/2D_Mesh_Tuto...

nFaces startFace } front { type nFaces startFace }

2858; 4217;

empty; 2858; 7075;

This will indicate to OpenFOAM that this is a 2D case. Ensure that all other boundaries as dened in the GMSH .geo le are present. There will also be a defaultFaces boundary that should have nFaces = 0 (it is unclear what will happen if nFaces is not 0):
defaultFaces { type nFaces startFace }

patch; 0; 10073;

5. The 2D mesh is now ready to be used by OpenFOAM. Be sure that the boundaries names in the initial conditions les (for example p, U, etc...) match those if the boundary le. For the empty faces (3rd dimension), set the boundary type to empty in these les. 6. If all went well, OpenFOAM should be able to use the new mesh for a 2D case. If things dont go well... OpenFOAM will let you know. Retrieved from "http://openfoamwiki.net/index.php /2D_Mesh_Tutorial_using_GMSH" This page was last modied on 12 September 2010, at 12:15. Content is available under GNU Free Documentation License 1.2.

4 de 4

23/05/11 06:53

Вам также может понравиться