FEATool Multiphysics
v1.12
Finite Element Analysis Toolbox

The first step in the modeling process is to create a geometry to define the domain to be simulated. This section describes how a complex geometry can be created in FEATool either by combining geometry primitives such as rectangles, circles, blocks, and polygons, or importing an existing CAD geometry from an STEP, IGES, OBJ, or STL file.
Geometry mode is the default mode that a new FEATool problem starts in. This mode can also be selected by pressing the mode button or corresponding menu option. While in geometry mode the toolbar buttons represent the geometry objects and operations that are available. The main gui window will also show all present geometry objects and highlight them in red while they are selected. A selection list box will also be present which is used to select geometry object to perform and apply operations on (in 2D geometry objects can also be selected by clicking on them in the main gui window).
In two dimensions rectangles, squares, ellipses, circles, and polygonal geometry object primitives are available. To create a 2D geometry object click on one of the corresponding toolbar buttons
In three dimensions (3D) block, polyhedron, cylinder, cone, ellipsoid, sphere, and torus, geometry object primitives are available. To create a 3D geometry object click on one of the corresponding toolbar buttons
In three dimensions geometry objects are created by specifying the corresponding dimensions. Geometry object properties and dimensions can also be edited by using the Inspect/edit selected geometry object option.
The Create Object... option in the Geometry menu also allows for the geometry objects described above, as well as point objects which are used to enforce grid vertices at the specified points during the grid generation process.
Pressing the button will open a dialog box for the selected geometry object where object properties can be edited.
The following operations allow geometry objects to be combined, by using the join, intersection, and subtraction operations, to form more complex geometries. These operations are described in the following
Alternatively to these buttons, the Combine Objects... geometry menu option opens a dialog box where an exact geometry formula can be entered. The syntax uses +
for join, 
for subtract, and &
or *
for the intersection operation as well as the geometry object labels or tags shown in the geometry object Selection listbox. Geometry object combination operations are applied from left to right according to the given formula. (Take care that the applied operations will create objects that intersect as no operation will be performed if the selected objects do not intersect.)
In the example R1  C1 + C2 & P1
, circle C1 will first be subtracted from rectangle R1. The intermediate result will be joined with C2, after which it will be intersected with the polygon object P1.
The undo/split button is used to undo a previous join, subtract, intersect, or transformation (move, scale, or rotate) operation and returns the corresponding parent objects.
In addition, the copy and/or transform object button allows one to copy and/or move with linear translation, scale, and rotate a selected geometry object. Movement is specified as a space separated vector of a translation distance or length in each space dimension (can be negative). Scaling, is similarly specified with a vector where a negative value will mirror the object. The rotation angle is specified in degrees, with coordinates of the center of rotation, and rotation axis vector. Note that the default values will skip operations (scaling of 1, translation and rotation 0).
Lastly, the delete button completely removes selected geometry objects (Note that undo is unavailable for the delete operation).
FEATool features a builtin computational solid geometry (CSG) engine, but also supports the 3D external geometry engines GEOMTool (the recommended 3D geometry engine which is included with the FEATool distribution), Gmsh, and BRLCAD. The 3D geometry engine can be selected using the Geometry Engine... option in the Geometry menu.
Note, that the builtin 3D geometry engine is sometimes not quite robust enough to handle all cases of overlapping boundary faces. Thus it is recommended when subtracting objects to allow for this by creating subtraction objects larger than the desired domain (so that non parallel planes are avoided). For faster and more robust 3D geometry operations it is recommended to use an external and dedicated CAD software (for example FreeCAD) and import the CAD geometries in BERP, STEP, or IGES formats.
The examples in the tutorial sections give step by step guides how to create different geometries. For example the Thin Plate with Hole model shows how to make a rectangle with a circular corner and Shrink Fitting of an Assembly describes how to create a complex assembly with several subdomains.
Subdomains are defined by either touching but nonintersecting, or completely disconnected geometry objects. Different subdomains can be used to define separate parameters and equation coefficients in different material regions of the model (see for example the heat transfer model Shrink Fitting of an Assembly). One can also deactivate equations in different parts so that different physics modes are active in different regions (see for example the Multiphysics > Flow in Porous Media tutorial model).
Interaction between subdomains occur at the inner boundaries, which by default are prescribed with continuity conditions (homogeneous Neumann). To access boundary specification on inner boundaries, one equation in a subdomain needs to be deactivated (but can later be activated again). The normal for flux boundary conditions on inner boundaries is defined to point from the subdomain with higher number to lower.
Note that if more than one geometry object is present in the final geometry FEATool will split it along all intersecting boundaries which creates subdomains of the decomposed regions, as in the illustration below.
Import and export of CAD geometries is supported through the corresponding Import Geometry and Export Geometry menu options. Geometry import and export is supported for FEATool geometry struct variables from the main MATLAB workspace, IGES, OBJ, STL, and STEP CAD file formats, as well as Gmsh (geo) and 2D Triangle (poly) formats.
Care should be taken when preparing CAD models, as simulation and meshing requires very precise geometries. Although basic automatic CAD repair is builtin with the FEATool toolbox, it is recommended to prepare CAD files so that they are water tight, that is do not have disconnected holes, regions, or duplicated and overlapping facets and structures in them. It is also recommended to try to reduce the number of features and scale differences between them (as a large jump in scale between features may cause issues with meshing).
Import of BREP, IGES and STEP CAD geometries are supported through the corresponding menu options. In contrast to the STL format, the BREP, IGES and STEP formats contain boundary and surface feature information and are therefore the recommended CAD formats to use. Although, BREP/IGES/STEP geometries can be combined with other geometry objects or modified after import, it is recommended to have a finished geometry representation before importing. The Gmsh external mesh generator is also required to generate grid for these types of CAD geometries.
Both binary and ASCII Stereolithography STL and Wavefront OBJ file import is supported for both full 3D, and (planar) 2D geometries. An OBJ or STL file is considered planar if all coordinates of one of the axes are equal (typically the zcoordinates are set equal to zero). Note that 3D geometries can only be imported into 3D models, and 2D geometries into 2D models.
STL import and export supports multiple solid sections (limited to ASCII STL format) and STL input files. For 2D geometries each solid section is processed as a separate subdomain, while for 3D objects each solid section is per default processed into separate boundaries. Multiple 3D subdomains can optionally be processed by using multiple input files (each 3D STL input file corresponds to its own subdomain, while solid sections correspond to the boundary faces).
The STL Import Options dialog box, available in 3D, allows control over Automatic Boundary Detection and feature recognition, which reconstructs boundary surfaces from the imported STL data. The Sharp feature angle specifies the maximum dihedral angle between facet edges to be considered a sharp feature edge. This is typically in the range 2045 degrees, where a larger angle will detect more features. Nonsharp feature angle specifies the limit to define sharp needle, and flat cap triangles which can be used to detect inplane features, that is features where a surface region changes structure. Grow edges/regions toggles whether loose edges without connections at the end points should be grown and extended to form closed surface patches (or eliminated). If multiple STL files have been given as input, the option to try to Split multiple files into separate subdomains will be available. Facets of shared boundaries between subdomains must in this case align without overlap for internal boundaries to be identified correctly.
For 3D STL import best practice is to have the geometry preprocessed into separate boundaries and subdomains (by splitting the boundaries into solid sections and subdomains into files). It is also recommended that all facet edges are simply connected without overlaps. If the import process fails, try using CAD format repair in a dedicated external software prior to import. Correct and incorrect facet configurations is illustrated in the image below.
Examples utilizing CAD geometry import functionality are available as the Structural Mechanics > Deformation of a Spanner, and Multiphysics > Resistive Heating in a Tungsten Filament in the Model Examples and Tutorials menu. Manual command line interface CLI usage is also possible directly with the impexp_stl function allowing for fine tuning of import parameters. The mesh_analyze function can also be used manually to fine tune the detection of surface and boundary features.
The following functions can be used on the command line to programmatically generate and modify objects and geometries.
Function  Desription 

copy_geometry_object  Create copy of geometry object 
geom_add_gobj  Add geometry object to geom or fea struct 
geom_analyze  Analyze and decompose geometry 
geom_apply_formula  Apply formula to geometry objects 
geom_apply_transformation  Apply transformation to geometry objects 
geom2geo  Export geom struct to Gmsh GEO file 
geomcfg  Set geometry engine and configuration parameters 
geomtool  GEOMTool geometry kernel system call helper 
geo2geom  Import Gmsh GEO file to geom struct 
gobj_block  Create a 3D block 
gobj_circle  Create a circle in 2D 
gobj_cone  Create a (truncated) cone in 3D 
gobj_cylinder  Create a cylinder in 3D 
gobj_ellipse  Create an ellipse in 2D 
gobj_ellipsoid  Create an ellipsoid in 3D 
gobj_grid  Create a geometry object from grid 
gobj_line  Create a 1D line 
gobj_naca  Create a NACA 4series wing profile 
gobj_point  Create a point 
gobj_polygon  Create a 2D polygon 
gobj_polyhedron  Create a 3D polyhedron 
gobj_rectangle  Create a 2D rectangle 
gobj_sphere  Create a 3D sphere 
gobj_torus  Create a 3D torus 
impexp_cad  BREP/IGES/STEP CAD geometry import and export 
impexp_obj  OBJ CAD geometry import and export 
impexp_stl  STL CAD geometry import and export 
mesh_analyze  Surface mesh feature detection 
mesh_repair  Surface mesh repair 
plotgeom  Plot and visualize geometry 