Feel++ provides some tools to manipulate mesh.
Here is a basic example that shows you how to generate a mesh for a square geometry (source "doc/manual/tutorial/mymesh.cpp").
As always, we initialise the Feel++ environment (see section First Feel++ Application ).
The unitSquare() will generate a mesh for a square geometry. Feel++ provides several functions to automate the GMSH mesh generation for different topologies. These functions will create a geometry file .geo and a mesh file .msh. We can visualize them in GMSH.
gmsh <entity_name>.msh
Finally we use the exporter() (see Post-Processing and Visualisation ) function to export the mesh for post processing. It will create by default a Paraview format file .sos and an Ensight format file .case.
paraview <app_name>.sos
In this section, we present some of the mesh definition and manipulation tools provided by Feel++. For more information you can also see Gmsh.
There is a list of basic geometries you can automatically generate with Feel++ library.
| Feel++ function | Dim | Description</th |
|---|---|---|
unitSegment(); | 1 | Build a mesh of the unit segment |
unitSquare(); | 2 | Build a mesh of the unit square using triangles |
unitCircle(); | 2 | Build a mesh of the unit circle using triangles |
unitHypercube(); | 3 | Build a mesh of the unit hypercube using tetrahedrons |
unitSphere(); | 3 | Build a mesh of the unit sphere using tetrahedrons |
Examples :
From "doc/manual/tutorial/myfunctionspace.cpp
You can use this function to :
.msh file and use the mesh data structure .geo file and automatically generate a mesh data structure on this geometrical structureInterface :
Required Parameters :
_mesh : a mesh data structure.Optional Parameters :
_hsize (double) : characteristic size of the mesh. This option will edit the .geo file and change the variable h if defined0.1 gmsh.hsize _geo_variables_list (string) : Set a list of variable that may be defined in a .geo file"" gmsh.geo-variables-list _filename (string) : filename with extension."feel.geo" gmsh.filename _depends (string) : list of files (separated by , or ;) on which gmsh.filename depends"" gmsh.depends _refine (boolean) : optionally refine with refine levels the mesh.0.gmsh.refine _update (integer) : update the mesh data structure (build internal faces and edges).true _physical_are_elementary_regions (boolean): to load specific meshes formats.false._straighten (boolean): in case of curvilinear elements, straighten the elements which are not touching with a face the boundary of the domaintrue gmsh.straighten _partitioner (integer) : define the mesh partitioner to use :1 (if Metis is available) 0 if not (CHACO)
The file you want to load has to be in an appropriate repository.
Feel++ looks for .geo and .msh files in following directories (in this order) :
"$HOME/feel/geo" (cf: Environment ) "$FEELPP_DIR/share/feel/geo" (cf: Environment)Examples :
Load a mesh data structure from the file "$HOME/feel/mymesh.msh".
Load a geometric structure from the file "./mygeo.geo" and automatically create a mesh data structure.
Create a mesh data structure from the file "./feel.geo".
In order to load only .msh file, you can also use the loadGMSHMesh
Interface :
Required Parameters :
_mesh : a mesh data structure. _filename : filename with extension.Optional Parameters :
_refine : optionally refine with refine levels the mesh. Default =0. _update : update the mesh data structure (build internal faces and edges). Default =true. _physical_are_elementary_regions : to load specific meshes formats. Default = false.The file you want to load has to be in an appropriate repository. See loadMesh.
Examples :
From "doc/manual/heatns.cpp" :
From "applications/check/check.cpp" :
Interface :
Required Parameters :
_mesh : mesh data structure. _desc : descprition. See further.Optional Parameters :
_h : characteristic size. Default = 0.1. _order : order. Default = 1. _parametricnodes : Default = 0. _refine : optionally refine with refine levels the mesh. Default =0. _update : update the mesh data structure (build internal faces and edges). Default =true. _force_rebuild : rebuild mesh if already exists. Default = false. _physical_are_elementary_regions : to load specific meshes formats. Default = false.To generate your mesh you need a description parameter. This one can be create by one the two following function.
Use this function to create a description from a .geo file.
Interface :
Required Parameters :
filename : file to load.Optional Parameters :
_h : characteristic size of the mesh. Default = _dim : dimension. Default = 3. _order : order. Default = 1. _files_path : path to the file. Default = localGeoRepository().The file you want to load has to be in an appropriate repository. See loadMesh.
Examples :
From "doc/manual/heat/ground.cpp" :
From "doc/manual/fd/penalisation.cpp" :
Use this function to generate a simple geometrical domain from parameters.
Interface :
Required Parameters :
_name : name of the file that will ge generated without extension. _shape : shape of the domain to be generated (simplex or hypercube).Optional Parameters :
_h : characteristic size of the mesh. Default = 0.1. _dim : dimension of the domain. Default = 2. _order : order of the geometry. Default = 1. _convex : type of convex used to mesh the domain. Default = simplex._addmidpoint : add middle point. Default = true. _xmin : minimum x coordinate. Default = 0. _xmax : maximum x coordinate. Default = 1. _ymin : minimum y coordinate. Default = 0. _ymax : maximum y coordinate. Default = 1. _zmin : minimum z coordinate. Default = 0. _zmax : maximum z coordinate. Default = 1.Examples :
From "doc/manual/laplacian/laplacian.ccp" :
From "doc/manual/stokes/stokes.cpp" :
From "doc/manual/solid/beam.cpp" :
1.8.5