Finite Element Analysis (FEA) in TechEditor

Finite Element Analysis (FEA) in TechEditor

We’ve previously written about the mathematical capabilities, plotting features, and even the use of artificial intelligence in TechEditor. This time, we'll explore an equally powerful technology in the program — its engine based on the Finite Element Method.

What is the Finite Element Method and where is it applied?

The Finite Element Method (FEM) is a fundamental numerical method for solving various engineering and physics problems. In modern engineering, it has become the gold standard for analyzing structures for strength, stability, and deformability.

Its essence lies in dividing a complex object (like a truss, frame, or mechanism part) into a finite number of simple elements — such as beams, plates, or solid bodies. This allows a complex system of differential equations describing real physical processes (deformation of elastic systems, heat transfer, electromagnetism, etc.) to be reduced to a system of simplified algebraic equations that can be solved using known numerical methods.

Typically, engineers use powerful, specialized CAE (Computer-Aided Engineering) packages with advanced graphical interfaces for FEA. Some of the most well-known software products in this class include Ansys, Nastran, COMSOL, RFEM, ETABS, SAP2000, Midas Civil, SOFiSTiK, and others. For relatively simple tasks, Dystlab suggests using TechEditor — it also includes an engine based on the Finite Element Method.

Let's see how it works.

Finite Element Analysis in TechEditor: What Engineers Should [and Shouldn't] Expect

First and foremost, it’s important to remember that TechEditor is designed for developing textual engineering documentation — reports, calculation sheets, flowcharts, and so on.

TechEditor's mathematical engine operates on variables and functions in analytical form, allowing for the creation of maximally understandable and transparent engineering calculations. This editor is not a classic finite element analysis system, so you should not expect the functionality present in existing commercial CAE packages.

Instead, TechEditor offers a "lightweight" version of an FEM engine. It doesn’t visualize the model on-screen; it operates via text-based commands. However, don't be quick to dismiss it: the entire modeling process — from defining structural nodes to obtaining internal forces — happens directly within your report, which provides an unprecedented level of automation!

What does this mean?

The Parametric Approach to Modeling

In TechEditor, all commands for working with an FEM model are part of the built-in MathSIV physics and mathematics engine. Each command is a separate function (like sine or cosine), meaning we don't just form a script for analysis; we flexibly and naturally "bind" the necessary parameters at a mathematical level.

We are talking about a purely parametric calculation model, where all characteristics (node coordinates, material properties, loads, etc.) are described by variables or (less commonly) functions. This might seem overly complicated at first glance, but the advantages of this approach speak for themselves:

  1. Need to create an arch of a specific shape? Describe the relationship y=f(x) and get the exact coordinates of the arch nodes automatically.
  2. Need to strengthen a beam's cross-section? Add the analytical formula for the area and moment of inertia and find the optimal dimensions.
  3. Loads depend on design codes? Create a resource document and use the required factors directly in the load expression.

There are countless examples of the effective use of the parametric approach. But that's not all.

Since all characteristics of the finite element model in TechEditor are described parametrically, you can control them using automation objects like sliders, checkboxes, or selectors. This "fine-tuning" allows you to optimize the model much faster and more effectively than in many industrial CAE packages.

So, here’s what we have:

Advantages of the TechEditor Parametric Model

  • Control over every parameter of the model.
  • Ability to use built-in and custom mathematical functions.
  • Full support for units of measurement.
  • When working with vectors and matrices, the dimensions of all model parameters adjust automatically — paving the way for calculating systems of any size.
  • The FOR loop can be used for repetitive operations.
  • Input data, main calculation, and code checks — everything is in your document and 100% controlled by you (the "white box" principle).

Limitations of the TechEditor Parametric Model

  • The calculation model is not visualized on-screen.
  • A graphics editor might be needed (to prepare images).
  • Requires knowledge of scripting commands.

Brief Overview of the Engine's Capabilities

Let's list the main features of TechEditor in the context of finite element analysis:

  • Model Dimensionality: 2D or 3D (planar or spatial)
  • Element Types: 2-node beam (bending in two planes, tension/compression, torsion) or 2-node truss/rod (tension/compression)
  • Loads: Concentrated (nodal), uniformly distributed (element)
  • Load Combinations: Supported
  • Analysis: Linear statics
  • Postprocessor: Nodal displacements, nodal reactions, internal forces in members
  • Automation: Finding extreme displacements or forces

Coordinate Systems and Sign Convention

The TechEditor calculation model uses a right-handed Cartesian coordinate system.

The Global Coordinate System (GCS) is used to position the model's nodes. Consequently, nodal reactions and displacements are calculated in this global system.

The Local Coordinate System (LCS) is associated with its respective member. The "x" axis is directed along the member, coincides with its central axis, and characterizes compression, tension, or torsion. The "y" and "z" axes of the LCS complete the "x" axis to form a trihedron and characterize the member's bending. Internal forces in the cross-sections of a beam finite element are calculated in its LCS.

Sign Convention for Forces:

  • Compressive force is positive, tensile force is negative (Compression "+", Tension "–").
  • Shear force is positive if its direction coincides with the direction of the LCS axis.
  • Moment is positive if it rotates the cross-section counter-clockwise around the corresponding axis (when looking at the axis from its positive end).

Note: The orientation of coordinate systems and the signs of internal forces in TechEditor are consistent with Autodesk Robot Structural Analysis Professional.

Example: Finite Element Calculation of a Beam in TechEditor

Let's show how to calculate a structure in TechEditor. The example will include all the main design stages — model preparation (preprocessor), calculation (processor), and analysis of results (postprocessor).

Scope of work

We will consider a simply supported beam with a cantilever overhang, loaded by a uniformly distributed load on the main span and a concentrated force at the end of the cantilever.

We are working in a TechEditor Report, so the output will be a finished text document with an integrated and fully automated calculation.

TechEditor launches with one empty report — let's use it. We'll add an image of the beam to our document, which we prepared earlier in a graphics editor:

 

FEM model | TechEditor

Geometric and Physical Characteristics of the Beam

First, let's automate the calculation of the cross-section's geometric properties. These will become parameters for the corresponding finite elements.

The beam has a rectangular hollow section (RHS). We'll introduce the variables “b”, “h”, and “t” into the report, representing the width, height, and thickness of the section, respectively. We use a Math Object (from the Automation tab) for this.

We calculate the area analytically: subtract the area of the inner contour from the area of the outer contour, and add the required units. We determine the moment of inertia similarly, in analytical form.

Math Object | FEM in TechEditor

We also introduce the beam length “L” and cantilever length “c” into the calculation. The beam's physical and mechanical properties are described by the modulus of elasticity “E” and the shear modulus “G”. We specify the distributed load “w” and the concentrated force “F” in kN/m and kN, respectively:

Commands from this block (Copy/Paste)

b=100 mm
h=100 mm
t=5 mm
A1=b*h
A0=(b-2*t)*(h-2*t)
A=(A1-A0)•{mm²}
J1=b*h^3/12
J0=(b-2*t)*(h-2*t)^3/12
Jy=(J1-J0)•{mm⁴}
Jx=0 mm⁴
Jz=0 mm⁴
E=200 GPa
G=78 GPa
w=8.5 kN/m
F=28 kN

Creating the Finite Element Model (Preprocessor)

The beam is divided into 3 finite elements, sequentially connected at 4 nodes.

FEM model | TechEditor

Initializing the program

The femreset() function clears any previous model and prepares the engine for work. In this case, it's not mandatory since we are working with only one structural model. However, starting with it is recommended practice — if your document contains 2, 3, or more models, femreset() must be called before creating each new model (to restart the engine). This function returns "0" if the engine is ready.

Nodes

Nodes of the finite element mesh are added with the command femnode(x y z), where x, y, and z can be physical quantities (dimensionality — length, any units) or real numbers (interpreted as meters). Each femnode function returns the number of the node it creates, starting from 1.

We can find the total number of nodes with the femnodes() command.

Note: Variables and functions with the necessary units of measurement can be used as arguments for the femnode function (and other engine commands).

Supports

Boundary conditions for nodes are applied using the command fembcond{i}(x y z rx ry rz), where i is the node number; x, y, z are flags for linear supports relative to the corresponding GCS axes; and rx, ry, rz are flags for rotational supports.

Each flag can be "1" (if the support exists) or "0" (if it is absent). Thus, the arguments for the fembcond function are six components (zeros or ones). A node completely free of supports has the code "0 0 0 0 0 0", and a fixed support has the code "1 1 1 1 1 1".

In our case, the beam has two hinged supports — a roller and a pinned support. The pinned support prevents all nodal displacements except rotation around the "y" axis. The roller support does the same but additionally allows longitudinal displacement:

  • Code for a planar pinned support: 1 1 1 1 0 1
  • Code for a planar roller support: 0 1 1 1 0 1

Commands from this block (Copy/Paste)

y=0 m
z=0 m
femnode(0 0 0)
femnode(L/2 y z)
femnode(L y z)
femnode(L+c y z)
femnodes()
fembcond{1}(1 1 1 1 0 1)
fembcond{3}(0 1 1 1 0 1)

Elements

We add finite elements with the command fembeam{i j}(E G A Jx Jy Jz), where i, j are the numbers of the nodes connected by the member; E, G are the modulus of elasticity and shear modulus of the material (Pa); A, Jx, Jy, Jz are the area, torsional moment of inertia, and bending moments of inertia about the LCS axes x, y, and z, respectively (m², m⁴). The fembeam function returns the number of the element it creates, starting from 1.

We can find the total number of elements with the femelements() command.

Commands from this block (Copy/Paste)

fembeam{1 2}(E G A Jx Jy Jz)
fembeam{2 3}(E G A Jx Jy Jz)
fembeam{3 4}(E G A Jx Jy Jz)
femelements()

Loads

A uniformly distributed load in TechEditor is set using the command femudload{i}(qx qy qz mx my mz), where qx, qy, qz are the intensities of the force distributed along the corresponding LCS axis of the member; mx, my, mz are the intensities of the moments distributed around those same axes.

FEM model | TechEditor

A concentrated force is modeled with the command femnodload{i}(Fx Fy Fz Mx My Mz), where i is the node number; Fx, Fy, Fz are the components of the concentrated force in the GCS; Mx, My, Mz are the components of the concentrated moment, respectively. In our model, we are dealing with planar loads, so it makes sense to introduce constants w₀=0 kN/m, m₀=0 kN m/m, F₀=0 kN, M₀=0 kN m, which simplify working with zero components.

Note: Since the "z" axis of the global coordinate system is oriented "upward", dead loads typically have a "minus" sign.

Commands from this block (Copy/Paste)

w₀=0 kN/m
m₀=0 kN m/m
femudload{1}(w₀ w₀ -w m₀ m₀ m₀)
femudload{2}(w₀ w₀ -w m₀ m₀ m₀)
F₀=0 kN
M₀=0 kN m
femnodload{4}(F₀ F₀ -F M₀ M₀ M₀)

Calculating the Model via FEM (Processor)

The femcalc() command initiates the linear static analysis of the system. It returns 0 if the model contains no errors and the calculation is successful:

FEM model | TechEditor

Once the finite element calculation is complete, we can analyze:

  • Nodal reactions and displacements
  • Internal forces and moments in the members

The femnoddisp(i) function is responsible for nodal displacements, where i is the node number. The function returns a vector with 6 components: the first three are the linear displacements of the node along the "x", "y", "z" axes (in meters), and the other three are the rotation angles around these same axes (in radians). These displacements are considered in the node's coordinate system, which is oriented like the GCS but with its origin at the center of the node in the undeformed model.

To get the internal forces in the model's elements, we use the femintfm{p}(i) function, where i is the member number, and p is the start (1) or end (2) of the member. Each such function returns a vector with six components: three forces (axial and two shears, in Newtons) and three moments (torsional and two bending, in N*m). Internal forces are considered in the member's LCS.

Commands from this block (Copy/Paste)

femcalc()
femnoddisp(1)
femnoddisp(2)
femnoddisp(3)
femnoddisp(4)
femintfm{1}(1)
femintfm{1}(2)
femintfm{1}(3)
femintfm{2}(1)
femintfm{2}(2)
femintfm{2}(3)

Verifying Results against Analytical Formulas

Let's check the results we obtained using the finite element method. As a comparison criterion, we'll use the deflection at the center of the beam.

The analytical expression for deflection (let's call it the "exact solution") consists of the beam's deflection from the uniformly distributed load and the concentrated force on the overhang. We'll use formulas from the PDF "Beam Design Formulas with Shear and Moment Diagrams" (Design Aid No. 6, AFPA, AWS, 2007).

Deflection from distributed load:

Beam with uniformly distributed load | TechEditor

Deflection from concentrated force:

Beam with concentrated load | TechEditor

Let's implement these formulas in the TechEditor environment. Note that the deflections have opposite signs (be careful, the guide doesn't mention this!):

FEM model | TechEditor

As we can see, the deflections in the center of the beam from the finite element method and the exact analytical solution are practically identical — the error is within machine precision and can be considered zero.

Note that here we used a synonym for the femnoddisp function, which returns a specific displacement (linear or angular) with units of measurement. The format of this function is: femnoddisp{i}(dof), where i is the node number; dof is the target degree of freedom, which can have a value from 1 to 6:

  • 1 (linear displacement along the GCS "x" axis); 
  • 2 (linear displacement along the GCS "y" axis); 
  • 3 (linear displacement along the GCS "z" axis); 
  • 4 (rotation angle about the GCS "x" axis); 
  • 5 (rotation angle about the GCS "y" axis); 
  • 6 (rotation angle about the GCS "z" axis).

Commands from this block (Copy/Paste)

d1=5*w*L^4/(384*E*Jy)
d2=F*c*(L/2)*(L^2-(L/2)^2)/(6*E*Jy*L)
d=d2-d1
|femnoddisp{3}(2)-d|

Automation

Cross-Section Checks according to Design Codes (Postprocessor)

Most industrial CAE packages already have integrated tools for checking structures against design codes. This stage is often called the "postprocessor."

But even with automation, the built-in postprocessor is not always convenient. Here are a few situations designers periodically face:

  • The program lacks the required codes, standards, or specifications.
  • The supported codes are outdated.
  • Your task is too "simple" to use CAE (this isn't a flaw, but a question of expediency and efficiency).
  • The algorithm needs clarification or editing (e.g., changing factors).
  • and more.

In almost all these cases, the commercial CAE acts as a "black box," to whose algorithms we have no access. Consequently, we cannot intervene and change anything at this stage — we must first get a text report and then "tweak" it in an office editor, spreadsheets, or with other programs. We have written about the dangers of this approach repeatedly, for example, here and here.

The "black box" works well for mathematically rigorous problems with a closed solution, which do not change for years and do not depend on external factors. This includes the finite element method itself (or rather, its physical-mathematical implementation). But not design code checks!

TechEditor provides an alternative, operating on the "white box" principle. Here, we can create the necessary checks ourselves with full control over every parameter.

Let's look at how to check the beam's cross-section for bending moment in TechEditor after we've calculated it using FEM.

FEM model | TechEditor

 

First, let's determine the extreme values of the moments that arise in the cross-sections. The femintfmext{dof}() function will help us with this, where dof can range from 1 to 6:

  • 1 — axial force (N); 
  • 2 — shear force in the "y" direction of the member's LCS (N); 
  • 3 — shear force in the "z" direction of the member's LCS (N); 
  • 4 — torsional moment (N*m); 
  • 5 — bending moment about the "y" axis of the member's LCS (N*m); 
  • 6 — bending moment about the "z" axis of the member's LCS (N*m).

The femintfmext function returns a vector with two components — the minimum and maximum value of the force or moment (in our case, bending moment). You can work with these values as a vector, but I recommend "splitting" them into separate variables Mmin and Mmax, assigning them the desired units (kN*m).

Since we are interested in the absolute maximum moment, it is logical to use the Max function, passing it the positive moment Mmax and the absolute value of the negative moment Mmin.

Next, we determine the design moment resistance Mr, using coefficients γn and γc, the steel yield strength Ry, and the section modulus Wn (in analytical form).

As we can see, the ULS condition in this case is not satisfied — the design bending moment Mf exceeds the design moment resistance Mr by more than 2.5 times. It is necessary to increase the cross-section and repeat the calculations.

Commands from this block (Copy/Paste)

M=femintfmext{5}()
Mmax=Max(M)•{N m}•{kN m}
Mmin=Min(M)•{N m}•{kN m}
Mf=Max(Mmax |Mmin|)
γn=1.1
γc=1
Ry=250 MPa
Wn=Jy/(0.5*h)•{mm^3}
Mr=Wn*Ry*γc/γn•{kN m}
Mf/Mr

Optimizing Section Dimensions

We entered the cross-section dimensions at the beginning of the project. Like other parameters, they were implemented using a Math Object. This automation object is ideal for working with variables or expressions whose values rarely change. But in cases where the parameter's value is changed repeatedly (iterated) by the user, a Slider is more effective.

Let's return to the beginning of the report and delete the section height h that was modeled via the Math Object. On the Automation tab, we'll take the Slider object and configure it as follows:

Slider automation object | TechEditor

What's happening? Here we are re-introducing the same section height h into the calculation, but now its value can be varied from 100 to 250 mm with a step of 10 mm.

Let's go to the last sheet of the report and, by moving the slider with the mouse or arrow keys, we'll find a section height that meets the strength condition:

FEM model | TechEditor

Now the slider window can be closed. Note that the height h is saved in the report with its current value. To adjust it with the slider again, just double-click on it in the document.

We have selected the optimal beam height — 200 mm. But thanks to the full automation of calculations, TechEditor allows you to apply this approach to any parameter of the model.

Conclusions

In this article, we reviewed an example of an automated calculation of a beam structure using the finite element method in TechEditor. It is also available in our online example repository. To use it, double-click the corresponding item in the Project Explorer — the report will be added to your project:

Download example | TechEditor

As we have demonstrated, the key advantage of the FEM engine in TechEditor is not to compete with heavy CAE systems, but rather its deep integration into the documentation creation process.

The parametric approach, where every node, load, or cross-section is described by a variable, transforms a static report into a live, interactive calculator. The ability to instantly optimize the section using a slider, as we did with the beam height, clearly demonstrates the value of the "white box" principle, where the engineer has 100% control over every step of the verification.

As a result, you get not just a calculation, but a finished, automated, and transparent report that complies with codes and is ready for multiple reuses. This is the ideal solution for daily engineering tasks where speed, accuracy, and documentation automation are crucial.

Try this functionality in action! Download TechEditor and run your own calculations. And if you have any questions — we're waiting for you in our Discord community for discussion!

F.A.Q.

  1. Q: Can TechEditor replace ANSYS or RFEM?
    A: No, TechEditor is not a classic CAE system. It is designed to integrate parametric calculations, in particular FEM analysis of beam systems, directly into text reports. So if your task is to calculate a beam, truss, or frame, you can do it in TechEditor.
  2. Q: What element types does the TechEditor FEM engine support?
    A: It currently supports 2D/3D models using a 2-node beam (bending, tension/compression, torsion) and a 2-node truss/rod (tension/compression).
  3. Q: Does the free version of TechEditor have limitations regarding finite element analysis?
    A: There are no restrictions. The free version has the same FEA functionality as the professional version.
Image

Vitalii Artomov

"I am working to make «Made in Ukraine» a global symbol of quality and style"

CEO, co-founder of Dystlab, developer of TechEditor. Engineer, scientist, Ph.D. with over 20 years of experience in structural analysis and automation of engineering calculations. I advise engineering companies in Ukraine, Europe, and North America.

Discuss business solutions: This email address is being protected from spambots. You need JavaScript enabled to view it. | +380504576819 (WhatsApp)

dystlab-logo4-bg-white1920.png
dystlab-logo4-bg-white1920.png

Technology center Dystlab

We develop digital solutions for engineering companies and design businesses. We advise, research, and help with the automation of calculations, design, and systematization of technical documentation.

innot needed textfoanother not needed text@dystlabdummy text.com

Visa MasterCard | DS.Store

© Copyright 2019-2026 Dystlab™, Ukraine. All rights reserved.
We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.