FEATool Multiphysics
v1.11 Finite Element Analysis Toolbox |

Geometry

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 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

- To create rectangles and squares, left mouse click on a point in the main gui axes to represent one corner, then hold the mouse button and move the mouse pointer to the other corresponding corner. The resulting shape will be highlighted in red lines. Release the mouse button to finalize the geometry object.
- For circles and ellipses, left mouse click on a point in the main gui axes to represent the centroid, then hold the mouse button and move the mouse pointer to a desired shape (highlighted in red lines). Release the mouse button to finalize the geometry object (holding the shift button will restrict the shape to a circle).
- To create a polygon add new points with left mouse clicks. The polygon lines will be highlighted in red. Finish with right mouse click. Polygons can also be specified manually, or by importing a list of polygon points, using the
**Create Object...**>**Polygon**menu option. - Opens a dialog box where a NACA 4-series wing profile can be specified.

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

- Creates a block
- Creates an ellpsoid or sphere
- Creates a cone or cylinder
- Creates a polyhedron
- Creates a torus

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

- The join operation merges all selected geometry objects to a single composite object.

- Subtract objects from the largest of the selected geometry objects.

- Intersection of geometry objects.

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 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 (and in 3D the rotation axis must also be selected). Note that the default values will skip an operation (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 built-in computational solid geometry (CSG) engine, but also supports the 3D external geometry engines OpenCASCADE via the Gmsh v4 interface (Gmsh is automatically downloaded and installed when selected in the **Grid Settings** dialog box), and BRL-CAD (included for Windows systems). The 3D geometry engine can be selected using the **Geometry Engine...** option in the **Geometry** menu.

Note, that the built-in 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 currently recommended to use the OpenCASCADE/Gmsh engine.

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 non-intersecting, 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 export is supported for Gmsh (geo), STL, and Triangle (poly) formats.

ASCII Stereolithography STL file import is supported for both full 3D, and (planar) 2D geometries. A STL file is considered planar if all coordinates of one of the axes are equal (typically the z-coordinates are set equal to zero). Note that 3D geometries can only be imported into 3D models, and 2D geometries into 2D models.

The STL import and export supports multiple *solid* sections and STL input files. For 2D geometries each *solid* section is processed as a separate subdomain, while for 3D objects each *solid* section is processed into separate boundaries. Multiple subdomains in 3D can optionally be separated by using multiple input files (each 3D STL input file corresponds to its own subdomain, while *solid* sections correspond to boundary faces).

The *STL Import Options* dialog box allows control over *Geometry Repair* and *Automatic Boundary Detection*. The *Vertex tolerance* allows setting a lower tolerance under which vertices will be deduplicated and coalesced (and implicitly merge and join facets). This allows repairing CAD models which are not water tight, that is have disconnected holes or regions in them (making them unsuitable for meshing and simulation).

In 3D *Automatic Boundary Detection* allows for automatic splitting into boundaries as an alternative to manually defining *solid* boundary regions in the STL file. The *Facet grouping tolerance* specifies an upper limit for differences in the facet normals vectors to collect into groups. *Max facets to merge* is an integer specifying the maximum number of facets in groups for which to merge together to new boundaries (default 1 only merging ungrouped facets).

For 3D STL import best practice is to have the geometry pre-processed 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 tuning of import parameters.

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 |

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 4-series 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_stl | STL geometry import and export |

plotgeom | Plot and visualize geometry |