KEMBAR78
FEATool Multiphysics v1 | PDF | Computing
0% found this document useful (0 votes)
65 views41 pages

FEATool Multiphysics v1

FEATool Multiphysics v1.17.1 is a comprehensive simulation platform compatible with Windows and Linux, requiring installation as a standalone app or MATLAB toolbox. Users can generate and import computational grids for finite element analysis, utilizing various grid generation algorithms and options. The software supports importing and exporting grids in multiple formats, and provides resources for installation, tutorials, and community support.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
65 views41 pages

FEATool Multiphysics v1

FEATool Multiphysics v1.17.1 is a comprehensive simulation platform compatible with Windows and Linux, requiring installation as a standalone app or MATLAB toolbox. Users can generate and import computational grids for finite element analysis, utilizing various grid generation algorithms and options. The software supports importing and exporting grids in multiple formats, and provides resources for installation, tutorials, and community support.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 41

FEATool Multiphysics v1.17.

1
Finite Element Analysis Toolbox
https://www.featool.com/doc/grid#grid_imp

FEATool Multiphysics
Software Download
Download and Installation
https://www.featool.com/download/
https://www.featool.com/tutorial/
2017/11/06/Gmsh-CAD-STEP-File-Import-
and-Mesh-Generation-Tutorial/?
srsltid=AfmBOopeELyXH3HG6L8L__UNJ
obq_yZBuzwZLjg-WLjeAEo1mVZY6a0A

FEATool Multiphysics is a fully integrated simulation platform, which has been tested and
verified to work with Microsoft Windows and Linux. In order to use FEATool, the software
must first be installed on the intended computer system.

Please follow the steps below to install FEATool as a stand-alone Desktop App, or as a
MATLAB® toolbox. The installers can be downloaded directly from the FEATool releases
and installed manually, or installed from the MATLAB® APPS and Add-On Toolbar as a
toolbox. It is also recommended to first uninstall previous versions before
installing/upgrading to a newer version.

Stand-Alone Desktop App (Windows / Linux)

1. First download the installer for your operating system

FEATool Windows Installer

FEATool Linux Installer

MacOS not avaiable as Stand-Alone App

2. Save it to a directory and run the installer. This will first download and/or install the
application runtime if required (which may require up to 10 GB of free disk space to
install), and then the program file will be extracted.
3. When everything has been installed, run the program file to start FEATool. Please be
patient as the application runtime can take some time to start.

MATLAB® Toolbox (Windows / Linux / Intel MacOS)

Follow the steps below to install FEATool as a MATLAB® toolbox, and to enable running
MATLAB® simulation m-scripts

1. Download the FEATool_Multiphysics.mlappinstall toolbox installation file.

FEATool toolbox for MATLAB®

2. Then start MATLAB®, press the APPS toolbar button, and select the Install App
button.
3. When prompted to choose a toolbox file to install, select the
FEATool_Multiphysics.mlappinstall file and press OK.
4. Press the Install button if prompted to “Install to My Apps”.
Once the toolbox has been installed, an app icon will be available in the APPS toolbar to start
the FEATool GUI. (Note that MATLAB® may not show or give any indication of the toolbox
installation progress or completion.)

Quickstart
To get started with FEATool you can try out some of the built-in tutorials which can be run
directly from the File > Model Examples and Tutorials menu option in the FEATool GUI,
or take a look at any of the quickstart example models and video tutorials. Note that, as all
functions are initially loaded into memory, the app may take some time to load and show the
GUI on initial startup.
Questions and Community
If you have questions about using FEATool, the Documentation and Frequently Asked
Questions (FAQ) is a first resource for more information. Questions and issue reports can be
also be submitted to the community forum where you can participate in modeling and
simulation discussions with other users. Alternatively, direct and priority help and assistance
from the software developer of is also available with support and consulting services.

Grid

After a model geometry has been defined, a computational grid or mesh must be generated to
allow for the finite element discretization. This section describes how to create or import a
compatible grid.

Grid Mode
Grid mode can be selected by pressing the mode button or corresponding menu
option. In grid mode the toolbar buttons allow for grid generation, refinement, and accessing
the advanced grid generation settings.
 calls the selected grid generation function to generate and unstructured.
The desired overall mean Grid Size is specified in the corresponding edit field which
can be set manually or with the slider control.

 The button is used to uniformly refine a grid. This will split triangular
and quadrilateral (2D) grid cells into four subcells, and tetrahedral and hexahedral
(3D) ones into eight subcells each. Grid points on boundaries will also be projected
and aligned with any geometries in 2D.
 The Grid Generation Settings dialog box can be opened by pressing the
button, or selecting Grid Settings... menu option, and allows for more advanced
control over the mesh generation.

Grid Generation Settings


The Grid Generation Settings dialog box shown below

allows for selecting the mesh and Grid Generation Algorithm

 2D: Built-in, Gridgen2D, Gmsh, and Triangle


 3D: Built-in, Gmsh, and Robust

The built-in default algorithm should work well in most cases and the other algorithms are
optional. Specifically the Robust algorithm is appropriate for difficult to mesh 3D geometries
and faceted geometries (such as from STL and OBJ CAD formats).

The Subdomain Grid Size and Boundary Grid Size edit fields can be used to prescribe
maximum grid sizes for subdomains and boundaries. Accepts a scalar or space separated list
of real numbers (one entry for each subdomain or boundary).

The following options are only available and enabled by a subset of grid generation
algorithms.
The Quality slider allows setting the target mesh quality. For the Robust algorithm this will
correspond to the detail level included features (high quality will include more and finer
features of the input geometry).

The number of grid Smoothing steps can be specified in the corresponding edit field.

Cell Type shows which mesh cell types are available Tri, Quad, or Tet. Quadrilateral mesh
generation is available with the Built-in and Gmsh algorithms in 2D.

The Reparametrization Angle is available with the Robust and Gmsh mesh generators for
STL faceted geometries to set prescribe a feature angle for boundary segmentation (post mesh
generation). See the corresponding section below for more details and manual boundary
assignment. This parameter is specified in degrees, with zero (0) disabling automatic
boundary reparametrization.

Selecting the Boundary Layers checkbox enables mesh generation of structured boundary
layers on boundaries (available in 2D with the Gridgen2D and Gmsh mesh generators). The
height of the boundary layer can be specified with the Layer Size and also Aspect Ratio
between cells. With Gmsh it is also possible to specify the number of mesh Cells in the
boundary layer, and the boundary numbers to apply boundary layer generation to (Gridgen2D
is limited to boundary layers around internal regions/holes).

Lastly, the Optional Parameters field allows for an additional string of space separated
property/value pairs to be supplied to the grid generation call (which effectively appends the
user defined options to the gridgen function call, for example 'waitbar' false would
suppress the progress bar during grid generation). For the Robust mesh generation algorithm it
can be used to pass on CSG operations on geometry objects (with for example 'formula'
'OBJ1 - OBJ2'). See the gridgen command for valid optional arguments that can be passed
on.

Grid Menu Options


The Grid menu also features some options to view, edit, and modify grid data. The Convert
Grid Cells menu option is used to convert between triangular and quadrilateral cells in 2D, or
between tetrahedral and hexahedral cells in 3D. View Subdomains... and View Boundaries...
can be used to show resulting geometric entities and their corresponding numbering. This is
the numbering used to assign different mesh sizes to different subdomains and boundaries for
the built-in grid generator.

The View Selected Cells... menu option allows for specifying an expression to select and
show a subset of grid cells, such as x>0 or x>0 & z<=0.5 (useful for viewing the interior of
3D meshes). In 3D, the option Boundary Numbering... is also available to view and modify
the boundary numbering of the mesh, and which cells should be assigned to which
boundaries. Lastly, the Grid Statistics... option shows mesh statistics such as grid cell quality
for the current grid.

The Grid menu also supports the following import and export of grids through external files
and to/from the main MATLAB workspace
 Import Grid > From MATLAB Workspace... imports a valid FEATool grid struct
from the main MATLAB workspace.
 Import Grid > FEniCS/Dolfin Format... imports a grid in FEniCS/Dolfin format
(.xml file) (calls impexp_dolfin).
 Import Grid > FEniCS/Dolfin Format... imports a grid in FEniCS/Dolfin format
(.xml file) (impexp_dolfin).
 Import Grid > GiD Format... imports a grid in GiD format (.msh file) (calls
impexp_gid).
 Import Grid > Gmsh Format... imports a grid in Gmsh format (.msh file) (calls
impexp_gmsh).
 Import Grid > OpenFOAM Format... import a grid in OpenFOAM format
(foam2grid).
 Import Grid > Triangle Format... imports a 2D Triangle grid (.node/.ele files) (calls
impexp_triangle).
 Import Grid > VTK Format... imports a ParaView compatible VTK format grid
(.vtk file) (calls impexp_vtk).

 Export Grid > To MATLAB Workspace exports a grid struct to the main MATLAB
workspace with the variable name grid.
 Export Grid > FEniCS/Dolfin Format... exports a grid in FEniCS/Dolfin format
(.xml file) (calls impexp_dolfin).
 Export Grid > FEniCS/HDF5 Format... exports a grid in FEniCS/HDF5 format
(.hdf5 file) (impexp_hdf5).
 Export Grid > GiD Format... exports a grid in GiD format (.msh file) (calls
impexp_gid).
 Export Grid > Gmsh Format... exports a grid in Gmsh format (.msh file) (calls
impexp_gmsh).
 Export Grid > OpenFOAM Format... exports a grid in OpenFOAM format (calls
grid2foam).
 Export Grid > STL Format... exports a STL grid file (.stl file) (calls impexp_stl).
 Export Grid > SU2 Format... exports a grid in SU2 format (.su2 file) (calls
export_su2).
 Export Grid > Triangle Format... exports a 2D Triangle polygonal geometry
description (.poly file) (calls impexp_triangle).
 Export Grid > VTK Format... exports a ParaView compatible VTK format grid (.vtk
file) (calls impexp_vtk).
 Export Grid > Web Browser... exports a html plot of the grid to the web browser.

Boundary Renumbering
3D faceted geometries, such as those from imported STL and OBJ CAD file formats,
typically do not include enough information to clearly identify geometry boundaries. In such
cases it is possible to manually perform boundary assignment of grid cells. Selecting the
Boundary Numbering... Grid menu option opens the corresponding dialog box below.
The "Recaculate" button will try to automatically re-number boundaries with the chosen sharp
Feature angle (effectively calling the gridbdr function).

The "Manual Boundary Editing/Selection" section allows for manually specifying and
changing the boundary numbering. The edit field allows for a selection syntax for the forms
x>0 and x>0 & z<=0.5 to select with the coordinates x, y, and z, and selection via boundary
numbers as ib==1 or ib>=3 (where ib is the current boundary number) View Menu Options
show and highlight the boundaries and cells corresponding to the selection expression. The
Edit Selection button allows for manually reassigning a boundary number to the selection, and
Delete Selection completely removes the selected cells from the list of boundaries.

External Grid Generators


FEATool Multiphysics also comes with optional and built-in support for the external mesh
generators Gmsh and Triangle. External grid generators allow for different grid generation
algorithms, control options, and meshing results, which can be useful if the built-in ones have
a difficult time meshing a geometry. The Grid Generation Algorithm can be selected with the
corresponding option in the Grid Generation Settings dialog box.

In addition to the external grid generator interfaces, FEATool also fully supports mesh import
and export from the Dolfin/FEniCS (XML), GiD, and ParaView (VTK/VTP) formats.
Gmsh and Triangle Installation
If Gmsh or Triangle is selected as grid generation algorithm and FEATool cannot find the
corresponding binaries, they will automatically be downloaded, and installed when an internet
connection is available. Alternatively, the mesh generator binaries can downloaded from the
external grid generators repository and/or compiled manually and added to any of the
directories available on the MATLAB paths so they can be located by the FEATool program
(external binaries are typically placed in the bin folder of the FEATool installation directory).
(The grid generator binaries are expected to have the file extensions exe, lnx, mac for
Windows, Linux, and MacOS platforms respectively.)

Should Gmsh installation fail, please manually download and install Gmsh from the original
source reference (Gmsh version 4.6.0 is recommended as is has been tested and validated for
use with FEATool).

Usage Notes
 Gmsh and Triangle can be used in the FEATool GUI as well as on the MATLAB
command line by using the gridgen function with the grid generator arguments gmsh,
and triangle, respectively.
 External grid generators works by exporting the current FEATool geometry in its own
native format, make a system call to the grid generator binary, and then re-import the
generated grid.
 For geometries with multiple and overlapping geometry objects the actual subdomain
numbering will generally not correspond to the geometry object numbering (two
intersecting geometry objects will for example create three or more subdomains and
several internal boundaries). In this case the actual subdomain and boundary
numbering for vector valued hmax and hmaxb arrays can easiest be visualized and
determined by first creating a coarse grid and switching to Equation/Subdomain and
Boundary modes, respectively.
 Gmsh propagates the hmax and hmaxb values down to the specific nodes in the mesh
which means that it is currently not possible to exactly define mesh sizes for
subdomains and boundaries.

Grid Import and Export


FEATool allows importing and exporting finite element grids between FEniCS, GiD, Gmsh,
OpenFOAM, ParaView (VTK), and Triangle formats with the corresponding impexp_dolfin,
impexp_gid, impexp_gmsh, import_foam, impexp_vtk, and impexp_triangle functions. These
functions can also be accessed from the Grid and Postprocessing menus of the FEATool
GUI.

Gmsh Grid Import


Gmsh msh files can be imported either into the GUI using the corresponding menu option, or
the impexp_gmsh MATLAB function.
FEATool currently only supports Gmsh mesh file format version 2 (default in Gmsh versions
2-3), which was replaced with an incompatible format in Gmsh version 4.0 and later. When
using FEATool to mesh geometries this is handled automatically.

However, one must take care when using Gmsh manually and ensure that Gmsh v4 saves and
exports meshes in version 2 format. One can either start Gmsh with the command line
argument -format msh2, for example

gmsh.exe -format msh2

or set the following option in the general or mesh specific Gmsh .opt file

Mesh.MshFileVersion = 2;

The option files can be generated by selecting Save Model Options or Save Options As
Default in the File menu.

If there are issues importing the mesh into FEATool one can also optionally try to add the -
save_all command line argument which corresponds to the Mesh.SaveAll = 1; .opt file
option.

ASCII Grid Import


Due to the simple grid format syntax it is possible to manually import grids from other
software. The process essentially consists of first exporting the grid point coordinates and grid
cell connectivity data from the external grid generation tool into separate text files. Then
import them into MATLAB, after which they can be reshaped and used by FEATool. The
following steps describe the process

1. The first step is to output the grid to an ASCII text format. If possible save the grid
output to two files, one for the grid vertex coordinates, and another with the grid cell
connectivities (this specifies which grid points/vertices make up each cell). If this is
not possible one will have to manually open the grid output file in a text editor, and
cut and save the grid coordinates and cell connectivities to two different files.
2. Load the two files in MATLAB (here it is assumed they are saved as p.txt and c.txt):
3. load p.txt
4. load c.txt
5. Reshape the grid coordinates (p variable) so that it has the form 𝑛𝑠𝑑𝑖𝑚×𝑛𝑝 where
𝑛𝑠𝑑𝑖𝑚 is the number of space dimensions (1, 2, or 3) and 𝑛𝑝 is the total number of
grid points (p essentially consists of rows of x, y, and z-coordinates). Precisely how to
reshape depends on the output format from the external grid generator, one might not
have to do anything (check the shape by entering the command size(p) or whos), it
might be enough to transpose as p = p';, or one might have to reshape with something
like p = reshape(p,n_sdim,n_p);.
6. Similarly, reshape the cell connectivity array c so that it has the shape 𝑛𝑣×𝑛𝑐 where
𝑛𝑣 is the number of vertices on each cell (for example 3 for triangles) and 𝑛𝑐 is the
total number of cells. Each column should point to the corresponding grid points in p
that make up the cell.
7. The grid vertices must run in counterclockwise order on each cell, so reorient them if
necessary. This is usually accomplished by changing the row order, for example c =
c([3 2 1],:); which the ordering for triangles.
8. Use the function gridadj to create an array that points to neighboring cells for each cell
edge
9. n_sdim = size(p,1);
10. a = gridadj( c, n_sdim );
11. Create a vector that assigns a subdomain number for each cell. If the geometry should
be one single block and thus not split, a unit row vector is sufficient
12. n_c = size(c,2);
13. s = ones( 1, n_c );
14. Use the function gridbdr to create boundary edge/face information. The gridbdr
function splits external boundaries where the angles are acute
15. b = gridbdr( p, c, a );
16. Alternatively, one can manually construct and set the boundary numbering, for
example as
17. [ix_edge_face,ix_cells] = find( a==0 );
18. b = [ix_cells'; ix_edge_face'; ones(1,length(ix_cells))];
19. b = [b; gridnormals(p,c,b)];

this creates a boundary array b where all external boundaries are joined. With
additional boundary information one can now split the boundary edges and faces
(columns) by assigning different boundary numbers (third row in b). A helpful
function to use here is findbdr which allows one to find boundary numbers and
column indices in to b by prescribing logical expressions such as x>0.5. For example

[~,ix] = findbdr( struct('p',p,'c',c,'b',b), 'x>0.5', false );


b(3,ix) = 2;

sets boundary number 2 on all boundary edges/faces where x>0.5 is true.

20. Create a grid struct to hold all the grid information


21. grid.p = p;
22. grid.c = c;
23. grid.a = a;
24. grid.s = s;
25. grid.b = b;
26. Now the grid can be used by FEATool functions and subroutines on the command
line.
27. Optionally, one can also add the grid to an existing finite element GUI model by using
the Grid Menu option
28. Grid > Import Grid > From MATLAB Workspace...

Select the created grid variable to import and press Import. This loads it into the local
FEATool memory workspace of the GUI (note that this overwrites the existing fea
grid data). Press the Grid mode button to update and show the new grid.

Grid Reference Material


This section describes the format of the grid data structure that FEATool employs as well as
advanced command line (CLI) usage such as manually creating and importing grids.
Grid Format
The grid format used by FEATool is specified in the grid struct with the following fields

Field Description Size


p Grid point coordinates (n_sdim, n_points)
c Grid cell connectivity (n_vertices_per_cell, n_cells)
a Grid cell adjacency (n_edges/faces_per_cell, n_cells)
b Boundary information (3+n_sdim, n_boundary_edges/faces)
s Grid cell subdomain list (1, n_cells)

The coordinates of the grid points are specified by an array p, with the row number indicating
the i-th coordinate direction, and column number the corresponding grid point number.

Cell connectivities are specified in the c array, where each column point to the grid points (in
p) making up each cell. The row index gives the local vertex number and the column index
the cell number. Moreover, the grid points are numbered counterclockwise in each cell.

Adjacency, meaning pointers to neighboring cells, are specified in the a array. Similar to c the
row index gives the local edge in 2D or face number in 3D (starting with the corresponding
grid point in c) and the column index points to the cell number. If the edge/face is on an
external boundary the corresponding entry in a is 0.

Boundary information is specified in the b array. The cell, edge/face, and boundary numbers
are prescribed in the first to third rows. The last n_sdim rows consists of the outward pointing
unit normals corresponding to each boundary cell edge/face.

A list of subdomain numbers for each cell is given in the s vector.

Grid Cell Definitions


The various grid cells available in FEATool are defined in this section.

1D Line

In one dimension only the simple straight line segment grid cell is available. Grid Example 1
shows how this can be defined and used.

2D Triangle (Simplex)

The 2D triangular grid cell is defined with vertices in counter clockwise order. Local edges e i
are defined by the local vertices vi as

[ e1 ; [ v1 v2 ;
e2 ; = v2 v3 ;
e3 ] v3 v1 ];
2D Quadrilateral

The quadrilateral grid cell is similarly defined with vertices in counter clockwise order. Local
edges ei are defined by the local vertices vi as

[ e1 ; [ v1 v2 ;
e2 ; v2 v3 ;
e3 ] = v3 v4 ;
e4 ] v4 v1 ];
3D Tetrahedron (Simplex)

The 3D tetrahedral grid cell is defined with vertices in counter clockwise order. Local edges e i
are defined by the local vertices vi as

[ e1 ; [ v1 v2 ;
e2 ; v2 v3 ;
e3 ; v3 v1 ;
e4 ; = v1 v4 ;
e5 ; v2 v4 ;
e6 ] v3 v4 ];

The local faces fi are defined by the local vertices vi as

[ f1 ; [ v1 v2 v3 ;
f2 ; v1 v2 v4 ;
f3 ; = v2 v3 v4 ;
f4 ] v3 v1 v4 ];
3D Hexahedron

The hexahedral brick grid cell is defined with vertices in counter clockwise order. Local edges
ei are defined by the local vertices vi as

[ e1 ; [ v1 v2 ;
e2 ; v2 v3 ;
e3 ; v3 v4 ;
e4 ; v4 v1 ;
e5 ; v1 v5 ;
e6 ; v2 v6 ;
e7 ; = v3 v7 ;
e8 ; v4 v8 ;
e9 ; v5 v6 ;
e10 ; v6 v7 ;
e11 ; v7 v8 ;
e12 ] v8 v1 ];

The local faces fi are defined by the local vertices vi as

[ f1 ; [ v1 v2 v3 v4 ;
f2 ; v1 v2 v6 v5 ;
f3 ; v2 v3 v7 v6 ;
f4 ; = v3 v4 v8 v7 ;
f5 ; v4 v1 v5 v8 ;
f6 ] v5 v6 v7 v8 ];
Grid Example 1
The following code can be used to manually define a one dimensional grid with 10 uniformly
spaced cells on the line (0..1)

grid.p = 0:0.1:1;
grid.c = [1:10;2:11];
grid.a = [0:9;2:10 0];
grid.b = [1 10;1 2;1 2;-1 1];
grid.s = ones(1,10);

Alternatively one can use the grid utility function linegrid

grid = linegrid( 10, 0, 1 );

The plotgrid function can be used to plot and visualize a grid

plotgrid( grid )

Grid Example 2
A 2 by 2 unit square rectangular grid can be created with the following commands

grid.p =
[repmat([0,0.5,1],1,3);0 0 0 0.5 0.5 0.5 1 1 1];
grid.c =
[1 2 5 4;2 3 6 5;4 5 8 7;5 6 9 8]';
grid.a =
[0 2 3 0;0 0 4 1;1 4 0 0;2 0 0 3];
grid.b =
[1 2 2 4 4 3 3 1;1 1 2 2 3 3 4 4;1 1 2 2 3 3 4 4; ...
0 0 1 1 0 0 -1 -1;-1 -1 0 0 1 1 0 0];
grid.s = ones(1,4);
The rectgrid function can also be used to create rectangular grids, in this case

grid = rectgrid( 2, 2, [0 1;0 1] );

As before the grid can be plotted, visualizing both grid point and cell numbers, with

plotgrid( grid, 'nodelabels', 'on', 'cellabels', 'on' )

Similarly, the boundaries can be visualized with the function plotbdr (subdomains can be
visualized with plotsubd)

plotbdr( grid )

As FEATool also supports simplex triangular cells in two dimensions a grid consisting of
quadrilaterals can easily be converted with the utility function quad2tri

grid = quad2tri( grid )

Reverse conversions can be made with tri2quad function which uses Catmull-Clark
subdivision. In 3D the hex2tet and tet2hex functions perform similar conversions.

Grid Example 3
A more complex example, a grid for a rectangle with a circular hole can be created by first
creating geometry objects (a rectangle and a circle), applying a formula to construct the
geometry shape, and then calling the automatic unstructured grid generation function gridgen

% Geometry definition.
xmin = 0;
xmax = 1;
ymin = 0;
ymax = 1;
tag1 = 'R1';
gobj1 = gobj_rectangle( xmin, xmax, ymin, ymax, tag1 );

xc = (xmax-xmin)/2;
yc = (ymax-ymin)/2;
r = 0.25;
tag2 = 'C1';
gobj2 = gobj_circle( [xc yc], r, tag2 );

geom.objects = { gobj1 gobj2 };


formula = 'R1 - C1';
geom = geom_apply_formula( geom, formula );
fea.geom = geom;

% Grid generation.
hmax = 0.1;
fea.grid = gridgen( fea, 'hmax', hmax );

As before the grid can be plotted, visualizing both grid point and cell numbers, with

plotgrid( grid, 'nodelabels', 'on', 'cellabels', 'on' )


Creating Structured Grids
The computational finite element library in FEATool supports FEM shape functions for
structured grids (quadrilaterals in 2D and hexahedra in 3D). Although more difficult to
generate automatically, structured grids are often computationally superior, allowing for
higher accuracy with a smaller number of cells.

In FEATool, structured tensor-product grids of basic geometric shapes can easily be generated
on the command line with the following MATLAB m-script functions

Descriptio
Function
n
Create a
linegrid 1D line
grid
Create a
2D
structured
circgrid circular
grid of
quadrilater
al cells
Create a
2D
rectangula
holegrid
r grid with
a circular
hole
Create a
2D
rectangula
rectgrid
r grid of
quadrilater
al cells
Create a
2D grid of
ringgrid a ring
shaped
domain
Create a
3D
blockgrid
structured
block grid
Create a
3D
cylgrid structured
cylindrical
grid
spheregrid Create a
3D grid
for a
spherical
domain

Téléchargement et installation

FEATool Multiphysics est une plateforme de simulation entièrement


intégrée, qui a été testée et vérifiée pour fonctionner avec
Microsoft Windows et Linux. Pour utiliser FEATool, le logiciel
doit d'abord être installé sur le système informatique prévu.

Veuillez suivre les étapes ci-dessous pour installer FEATool en


tant qu'application de bureau autonome ou en tant que boîte à
outils MATLAB®. Les programmes d'installation peuvent être
téléchargés directement à partir des versions de FEATool et
installés manuellement, ou installés à partir des MATLAB® APPS et
de la barre d'outils complémentaires en tant que boîte à outils.
Il est également recommandé de désinstaller d’abord les versions
précédentes avant d’installer/mettre à niveau vers une version
plus récente.
Application de bureau autonome (Windows / Linux)

Téléchargez d’abord le programme d’installation de votre


système d’exploitation
Enregistrez-le dans un répertoire et exécutez le programme
d'installation. Cela téléchargera et/ou installera d'abord le
runtime de l'application si nécessaire (ce qui peut nécessiter
jusqu'à 10 Go d'espace disque libre pour l'installer), puis le
fichier du programme sera extrait.

Lorsque tout a été installé, exécutez le fichier programme


pour démarrer FEATool. Soyez patient car le démarrage de
l’application peut prendre un certain temps.

Boîte à outils MATLAB® (Windows / Linux / Intel MacOS)

Suivez les étapes ci-dessous pour installer FEATool en tant que


boîte à outils MATLAB® et activer l'exécution de m-scripts de
simulation MATLAB®

Téléchargez le fichier d'installation de la boîte à outils


FEATool_Multiphysics.mlappinstall.

Ensuite, démarrez MATLAB®, appuyez sur le bouton de la barre


d'outils APPS et sélectionnez le bouton Installer l'application.

Lorsque vous êtes invité à choisir un fichier de boîte à


outils à installer, sélectionnez le fichier
FEATool_Multiphysics.mlappinstall et appuyez sur OK.

Appuyez sur le bouton Installer si vous êtes invité à


« Installer sur mes applications ».
Ensuite, démarrez MATLAB®, appuyez sur le bouton de la barre
d'outils APPS et sélectionnez le bouton Installer l'application.

Lorsque vous êtes invité à choisir un fichier de boîte à


outils à installer, sélectionnez le fichier
FEATool_Multiphysics.mlappinstall et appuyez sur OK.
Appuyez sur le bouton Installer si vous êtes invité à
« Installer sur mes applications ».

Une fois la boîte à outils installée, une icône d'application sera


disponible dans la barre d'outils APPS pour démarrer l'interface
graphique de FEATool. (Notez que MATLAB® peut ne pas afficher ou
donner aucune indication sur la progression ou l'achèvement de
l'installation de la boîte à outils.)
Démarrage rapide

Pour démarrer avec FEATool, vous pouvez essayer certains des


didacticiels intégrés qui peuvent être exécutés directement à
partir de l'option de menu Fichier > Exemples de modèles et
didacticiels dans l'interface graphique de FEATool, ou jeter un
œil à l'un des exemples de modèles de démarrage rapide et de
didacticiels vidéo. Notez que, comme toutes les fonctions sont
initialement chargées en mémoire, l'application peut prendre un
certain temps pour se charger et afficher l'interface graphique au
démarrage initial.
Questions et communauté

Si vous avez des questions sur l'utilisation de FEATool, la


documentation et la foire aux questions (FAQ) sont une première
ressource pour plus d'informations. Les questions et les rapports
de problèmes peuvent également être soumis au forum communautaire
où vous pouvez participer à des discussions de modélisation et de
simulation avec d'autres utilisateurs. Alternativement, une aide
directe et prioritaire du développeur du logiciel est également
disponible avec des services de support et de conseil.
Moreover, the grid utility functions selcells, delcells, gridextrude, gridmerge, gridrevolve,
gridrotate, and gridscale can be used to manually modify, transform, and join grids to more
complex structures.
The figure below shows three examples of more complex grids created by using these
functions.
The first flow over cylinder benchmark grid is for example created with the following
commands:

grid1 = ringgrid( [0.05 0.06 0.08 0.11 0.15], ...


32, [], [], [0.2;0.2] );
grid2 = holegrid( 8, 1, [0 0.41;0 0.41], 0.15, [0.2;0.2] );
grid2 = gridmerge( grid1, 5:8, grid2, 1:4 );
grid3 = rectgrid( [0.41 0.5 0.7 1 1.4 1.8 2.2], ...
8, [0.41 2.2;0 0.41] );
grid = gridmerge( grid3, 4, grid2, 6 );

And the lower right revolved grid with these commands:

grid = rectgrid();
grid = gridscale( grid, {'1-(y>0.5).*(y-0.5)' 1} );
grid = delcells( selcells( ...
'((x<=0.8).*(x>=0.2)).*(y<=0.2)', grid ), grid );
grid = gridrevolve( grid, 20, 0, 1/4, 2, pi/2, 0 );

The last example with two brackets attached to an I-beam section is more complex:

grid01 = ringgrid( 1, 20, 0.03, 0.06, [0;0] );


indc01 = selcells( grid01, 'y<=sqrt(eps)' );
grid01 = delcells( grid01, indc01 );

grid02 = holegrid( 5, 1, .06*[-1 1;-1 1], .03, [0;0] );


indc02 = selcells( grid02, 'y>=-sqrt(eps)' );
grid02 = delcells( grid02, indc02 );
grid2d = gridmerge( grid01, [5 6], grid02, [7 8] );

grid1 = gridextrude( grid2d, 1, 0.02 );


grid1 = gridrotate( grid1, pi/2, 1 );
grid2 = grid1;
grid1.p(2,:) = grid1.p(2,:) + 0.03;
grid2.p(2,:) = grid2.p(2,:) - 0.01;

x_coord = [ -0.08 linspace(-0.06,0.06,6) 0.08 ];


y_coord = [ -0.2 -0.15 -0.1 -0.05 -0.03 -0.01 ...
0.01 0.03 0.05 0.1 0.15 0.2 ];
grid3 = blockgrid( x_coord, y_coord, 1, ...
[-0.08 0.08;-0.2 0.2;-0.08 -0.06] );
grid4 = blockgrid( 1, y_coord, 5, ...
[-0.01 0.01;-0.2 0.2;-0.18 -0.08] );
grid5 = grid3;
grid5.p(3,:) = grid5.p(3,:) - 0.12;

grid = gridmerge( grid1, 8, grid3, 6 );


grid = gridmerge( grid2, 8, grid, 19 );
grid = gridmerge( grid4, 6, grid, 24, 1 );
grid = gridmerge( grid5, 6, grid, 33, 2 );

After, the grids have been created on the command line they can also be imported into the
FEATool GUI (by using the Grid > Import Grid > From MATLAB Workspace... menu
option).

Quadrilateral Grid Generation


Using quadrilateral grid cells are often advantageous to triangular cells in that they can
provide somewhat more accuracy when aligned with geometry features and also tends to
require less overall grid cells.

A mesh of quadrilateral grid cells can be created by using the gridgen function with quad as
grid generation argument. This tries to align quadrilateral cell edges with immersed interfaces
described by distance and level set functions. The algorithm then uses the zero level set
contour from the distance functions to align grid cell edges with external geometry object
boundaries. Furthermore, the cells are split in a way to treat edge cases such as when an
interface segment crosses a cell diagonal. Optionally, the Built-in and Gmsh mesh generators
also allows for quadrilateral mesh generation in 2D. Finally, it is also possible to subdivide
triangles and convert into quadrilaterals, however the resulting grids are often of poor quality
and not suitable for physics simulations.

Grid Utility Functions


The following functions are available for working with and processing grids

Function Description
gridgen Unstructured automatic grid simplex generation
gridgen_scale Grid generation with scaling of geometry objects
gridrefine Refine a grid uniformly
gridstat Show grid statistics
gridsmooth Apply smoothing to a grid
gridextrude Extrude a grid from 2D to 3D
gridrevolve Extrude and revolve a 2D grid to 3D
gridrotate Rotate a grid along a specified axis
gridscale Apply scaling to a grid
gridmerge Merge two grids along boundaries
gridnormals Determine normal vectors to external cell edges/faces
get_boundary_layers Find boundary layers
quad2tri Convert a grid of quadrilateral cells to triangular cells
tri2quad Convert a grid of triangular cells to quadrilateral cells
hex2tet Convert a grid of hexahedral cells to tetrahedral cells
tet2hex Convert a grid of tetrahedral cells to hexahedral cells
impexp_dolfin Import and export FEniCS/Dolfin grid data
import_foam Import OpenFOAM dictionary data
impexp_gid Import and export GiD grid data
impexp_gmsh Import Gmsh grid and postprocessing data
impexp_hdf5 Import and export FEniCS/HDF5 grid data
export_su2 Export grid data in SU2 format
impexp_triangle Import and export 2D Triangle grid and polygon data
impexp_vtk Import and export ParaView VTK grid data
grid2foam Convert and export grid data to OpenFOAM format
gridcheck Check grid for errors
gridadj Create grid adjacency information
gridbdr Create grid boundary information
gridbdre Create 3D grid edge boundary information
gridbdrx Reconstruct internal boundaries
gridvert Create grid vertex information
gridedge Create grid edge information
gridface Create grid face information
findbdr Find boundary indices and numbers
selcells Find cell indices from an expression
delcells Delete a selection of cells from a grid
plotbdr Plot and visualize boundaries
plotsubd Plot and visualize subdomains
plotgrid Plot and visualize grid

CAD File Import, Mesh, and Grid


Generation with Gmsh
Gmsh is a popular cross platform and open source mesh generation software which supports
many CAD file formats such as STEP, IGES, and STL. In addition to its own mesh
generation algorithms, Gmsh also includes support for a variety of integrated mesh
generators, such as Netgen, Tetgen, and Triangle. As such is it one of the most flexible mesh
generators, and can be used with FEATool Multiphysics to allow meshing complex geometries
and models than the default built-in grid generator [1,2].

Although FEATool includes built-in support for import and automatic meshing of CAD
geometries, controlling the mesh generation steps manually offer more control and can result
in higher quality meshes, and more accurate simulation results. Manual meshing can for
instance be useful for more difficult 3D geometries, which may require repair or defeaturing
in order to allow for creation of good meshes for simulation.

The following section explains how to use Gmsh to manually load and import a CAD
geometry from a STEP file, and then generate a mesh which can be imported and used with
FEATool Multiphysics.

Gmsh CAD File Import and Mesh Generation Tutorial


This is a tutorial showing how to import a STEP model into Gmsh, and generate a 3D volume
mesh for finite element analysis (FEA) simulations. The STEP file and CAD model used in
the example can be downloaded from the link below (but any STEP model should technically
work)

Fixed Spanner CAD STEP Model

1. Start Gmsh (using version 2 Mesh File Format)

If the resulting mesh is to be used with the FEATool Multiphysics toolbox (or the Gmsh
MATLAB API), it is important that the Gmsh mesh file is saved in Gmsh ASCII mesh file
format version 2. This format is default in Gmsh versions 2-3, but not in the current Gmsh
versions 4.x.

To make sure Gmsh saves and exports meshes in version 2 format, one can either start Gmsh
with the command line argument -format msh2, for example

gmsh.exe -format msh2

or set the following option in the general or mesh specific Gmsh .opt options file

Mesh.MshFileVersion = 2;

The option files can be generated by selecting Save Model Options or Save Options As
Default in the File menu of the Gmsh GUI.

If there are issues importing the mesh into FEATool one can also optionally try to add the -
save_all command line argument which corresponds to the Mesh.SaveAll = 1; .opt file
option.

2. CAD Model Import with the Merge Operation

The second step is to use the Merge… option, from the File menu in the Gmsh menubar.
Choosing this menu option opens a file selection dialog box where the CAD file to import can
be chosen. In this example, select the spanner.step file and press the Open button to
automatically let Gmsh load, import, and construct edges and faces for the geometry. If the
model has been imported successfully it should be displayed and shown in the main GUI
window of Gmsh (you can use mouse controls to rotate and zoom in/out).
3. Setting Mesh Options and Specifying Grid Size

Gmsh supports several options to specify mesh and grid sizes. One can for example prescribe
specific sizes at various points, or define functions to determine variable mesh sizing. Here
the Min/Max element size option is used to set a global maximum mesh size of 6 mm (as the
units in this CAD model is defined in millimeters). This option can be found on the General
tab, in the Mesh section of the Options dialog box (which is accessed by selecting Options
from the Tools menu).

A description of the different mesh options is available in the Mesh options section of the
Gmsh reference guide.

4. 3D Mesh and Grid Generation


To generate a 3D volume mesh, first click on the [+] Mesh node in the left hand side tree list
to expand it, then click to the 3D node to start and run the selected mesh generation algorithm.
Once the mesh generation algorithm has finished the resulting mesh should be displayed in
the Gmsh GUI window.

5. Mesh Info, Saving, and Mesh Export


Progress information and messages (and errors) are displayed in the bottom line of the Gmsh
UI. Clicking on this line also expands and opens the message and log window, where one can
see information and statistics from the mesh generation process.

Once a mesh has been generated it can be saved and exported by using the Save Mesh option
from the File menu (the file will be saved in the same directory and named as the imported
CAD file but with the .msh file extension).
Gmsh Import and Export in FEATool Multiphysics
To import and use a Gmsh .msh file with FEATool Multiphysics use the Import Grid > Gmsh
Format… option found under the Grid mode menu of the toolbox GUI (note that the mesh file
has to have the same 2D or 3D space dimension as the model, and be in Gmsh version 2
ASCII format to be compatible with the toolbox).
An illustrative example on how to import the spanner CAD model, define, set up, and run
simulations in FEATool Multiphysics is explained in the linked tutorial for a structural
mechanics simulation with a parametric displacement study.

MATLAB Gmsh Import and Export Functionality


Alternatively, the impexp_gmsh function, from the MATLAB programming and scripting
API, can be used directly on the command line to import a Gmsh mesh directly into
MATLAB. The following commands imports, exports, and visualizes the mesh in MATLAB

input_file = 'C:\temp\spanner.msh'; % Full path to input mesh file.


mesh = impexp_gmsh( input_file, 'import' );

plotgrid( mesh ) % Plot and visualize mesh

plotsubd( mesh ) % Plot and visualize subdomains

plotbdr( mesh ) % Plot and visualize boundaries

output_file = 'C:\temp\output.msh'; % Full path to output mesh file.


impexp_gmsh( output_file, 'export', mesh );

Toolbox Availability and Download


The FEATool Multiphysics™ toolbox is available as stand-alone Desktop App, and also as
MATLAB toolbox Add-Ons, with fully interactive GUI and cross-platform support for the
Microsoft Windows, Linux, and MacOS operating systems. The toolboxes can be downloaded
directly from the link below (or installed with one-click from the MATLAB Add-Ons Toolbar).

Download and Try FEATool Multiphysics

If you use FEATool Multiphysics and find it useful in your work or studies please do share
your models, modeling experience, and consider recommending the toolboxes to your
colleagues and coworkers.

References
[1] Remacle J.-F. Geuzaine C. Gmsh: a three dimensional finite element mesh generator with
built-in pre- and post-processing facilities, International Journal for Numerical Methods in
Engineering 79 (11), pp. 1309-1331, 2009.

[2] Gmsh, 3D finite element mesh generator with built-in pre- and post-processing facilities.

You might also like