Stress-Constrained Topology Optimization for Commercial Software: A Python Implementation for ABAQUS®
Stress-Constrained Topology Optimization for Commercial Software: A Python Implementation for ABAQUS®
sciences
Review
Stress-Constrained Topology Optimization for Commercial
Software: A Python Implementation for ABAQUS®
Pedro Fernandes 1, * , Àlex Ferrer 2 , Paulo Gonçalves 1 , Marco Parente 1,3 , Ricardo Pinto 1
and Nuno Correia 1
Abstract: Topology optimization has evidenced its capacity to provide new optimal designs in many
different disciplines. However, most novel methods are difficult to apply in commercial software,
limiting their use in the academic field and hindering their application in the industry. This article
presents a new open methodology for solving geometrically complex non-self-adjoint topology
optimization problems, including stress-constrained and stress minimization formulations, using
validated FEM commercial software. The methodology was validated by comparing the sensitivity
analysis with the results obtained through finite differences and solving two benchmark problems
with the following optimizers: Optimality Criteria, Method of Moving Asymptotes, Sequential
Least-Squares Quadratic Programming (SLSQP), and Trust-constr optimization algorithms. The
SLSQP and Trust-constr optimization algorithms obtained better results in stress-minimization
problem statements than the methodology available in ABAQUS® . A Python implementation of this
methodology is proposed, working in conjunction with the commercial software ABAQUS® 2023 to
allow a straightforward application to new problems while benefiting from a graphic user interface
and validated finite element solver.
Citation: Fernandes, P.; Ferrer, À.;
Gonçalves, P.; Parente, M.; Pinto, R.;
Keywords: topology optimization; stress constraints; Python; ABAQUS; educational
Correia, N. Stress-Constrained
Topology Optimization for
Commercial Software: A Python
Implementation for ABAQUS® . Appl.
Sci. 2023, 13, 12916. https://doi.org/ 1. Introduction
10.3390/app132312916 Originally described by Bendsøe and Kikuchi in 1988 [1], topology optimization is
one of the three sub-fields of structural optimization, amongst size and shape optimization.
Academic Editors: Aniello Riccio and
Angela Russo
Usually applied in the early stage of structural design, its purpose is to find the optimal
distribution of material when certain load conditions are applied [2,3]. The design region
Received: 27 October 2023 is usually represented with density based or level-set functions, which are optimized
Revised: 26 November 2023 according to a certain objective function and constraints, defining which regions should
Accepted: 29 November 2023 have material and which should not [4].
Published: 2 December 2023
The popularity of topology optimization has led to the publishing of several educa-
tional articles [5]. These include the MATLAB codes written by Ole Sigmund [6], later
revisited by Andreassen et al. [7], and an equivalent implementation for 3D problems by
Copyright: © 2023 by the authors.
Liu [8], all of them using the Solid Isotropic Material with Penalization (SIMP) method [9,10]
Licensee MDPI, Basel, Switzerland. to define the material properties and the Optimality Criteria (OCs) [11] to determine the
This article is an open access article optimal design variables. Other publications include the MATLAB implementation of
distributed under the terms and the level-set method [12,13] by Challis [14] and the implementations of the Bi-directional
conditions of the Creative Commons Evolutionary Structural Optimization (BESO) method [15] in MATLAB and Python by
Attribution (CC BY) license (https:// Huang and Xie [16] and Zuo and Xie [17], respectively. Table 1 compiles the publications
creativecommons.org/licenses/by/ on the development and implementation of topology optimization methods, sorted by the
4.0/). problem statement addressed, highlighting:
Table 1. Literature review summary table, including scientific articles referred to in the ABAQUS® and ANSYS® documentation, sorted by scope. The black dots
indicate an affirmative answer to the questions posed in each column.
Sigmund [18] -
Zhu et al. [19] -
Review article or complementary method Sigmund and Maute [20] OC •
Wang et al. [5] -
Harzheim and Graf [21] -
Sigmund [6] OC •
Andreassen et al. [7] OC •
Challis [14] Level-set method •
Zuo and Xie [17] OC • •
Literature Suresh [22] Pareto-optimal tracing •
Talischi et al. [23] OC •
Compliance minimization Smith and Norato [24] MMA and fmincon •
Sanders et al. [25] Modified OC •
Otomori et al. [26] Level-set method •
Gao et al. [27] OC •
Xia and Breitkopf [28] OC •
Liu and Tovar [8] OC, SLSQP, and MMA •
Aage et al. [29] MMA • •
Liang and Cheng [30] OC •
Appl. Sci. 2023, 13, 12916 4 of 39
Table 1. Cont.
Table 1. Cont.
Table 1. Cont.
subject to:
ρmin ≤ ρ ≤ 1 (2)
Z
ρ dx ≤ V ∗ (3)
Ω
where Ω is the domain of the topology optimization problem, L∞ (Ω) is the space of
bounded functions, and the density ρ represents the design variables, whichR can vary within
the interval [ρmin , 1]. J represents a generic objective or cost function; ρ dx represents
a generic volume constraint function, where V ∗ is its maximum allowable value; u(ρ)
are the displacement solutions of the standard equilibrium equation presented as finding
u ∈ H01 (Ω) such that:
where a(ρ, u, v) is the constitutive function of the equilibrium equation, l (ρ, v) are the
external forces, and H01 (Ω) is the space of functions with square integrable derivatives and
homogeneous values on the boundary and domain Ω ∈ R D , with D ∈ [2, 3]. The bilinear
form is:
Z
a(ρ, u, v) = 5s uC(ρ) 5s v dx (5)
Ω
Here, 5s represents a symmetric gradient and C(ρ) is the constitutive tensor, and
thus, the strains ξ (u) = 5s u are in accordance with linear elasticity. v is the corresponding
test function; f (ρ) is a generic volumetric load function; t indicates the applied boundary
forces, if they exist; n is the normal direction pointing outwards of the boundary ∂Ω of v.
It is important to note that this material constraint can be applied to either the volume or
mass of the structure, following the same expressions. The volume constraint is preferred
and used in this article to conform with the most-used term in the literature.
When considering a maximum stress constraint, the problem statement is also sub-
ject to:
Z
σaV M (ρ, u(ρ)) dx ≤ σ∗ (7)
Ω
where Ω σaV M (ρ, u(ρ)) dx represents the stress constraint with a maximum allowable value σ∗ .
R
In particular, σaV M is the penalized von Mises stress, as described in the following subsection.
C(ρ) = ρ P C0 (8)
where C0 is the material stiffness of a fully solid element. Note that C0 (ρ) = Pρ P−1 C0 for
this type of stiffness penalization.
The stress is also penalized according to a factor equal to ρ β , with β = 12 , as adopted
in [53], following the initial proposal by Bruggi et al. [95] with the exponent suggested
in [96]. This penalization leads to a non-physical stress for intermediate design densities, but
not for black-and-white solutions, and tends towards 0 when the design density decreases,
avoiding singularity problems [53]. Thus, σa is defined as the amplified stress, described by
the following expression:
σa (ρ) = ρ β σ̂ (ρ) (9)
with:
σ̂(ρ) = C0 5s u(ρ) (10)
where σ̂ (ρ) is the stress vector, written in Voigt notation. Therefore, the von Mises amplified
1
stress norm is σaV M = (σa Mσa ) 2 , with M being the von Mises matrix operator.
The second consideration is the use of a regularization approach, where removed or
void elements will maintain a minimum design density, ρmin = 0.01 by default, which
contrasts with the complete element removal. In the literature, these regularization tech-
niques may be referred to as “soft-kill” and “hard-kill” approaches [17]. The regularization
approach was introduced in the code implementation to avoid the stiffness matrix becom-
ing singular, as well as allowing a constant mesh in the finite-element model during the
topology optimization loop [17,53].
Taking the derivative in the equilibrium equation, in order to find Du J (ρ, u(ρ)) Dρ u(ρ)ρ̃,
leads to:
Solving Equation (14) for all values of ρ̃ would be too expensive. For this reason, the
use of the adjoint method is preferred. To do so, the adjoint variable λ is defined, the
solution of:
where the self-adjoint property of a(ρ, λ, w) and Equation (12) are applied.
The generic optimization process, which can be defined in four main steps, is proposed
as follows:
• Find u(ρ) ∈ H01 (Ω), the solution of: a(ρ, u, v) = l (ρ, v), ∀ v ∈ H01 (Ω);
• Find λ, the solution of: a(ρ, λ, w) = − Du J (ρ, u(ρ))w, ∀ w;
• Compute the derivative as DJ (ρ, u(ρ))ρ̃ = [ Dρ J (ρ, u(ρ)) + aρ (ρ, u(ρ), λ) − lρ (ρ, λ)]ρ̃;
• Update the design variables using the gradient information.
The first two steps correspond to solving the state and adjoint problems, respectively.
The third step is the gradient calculation, which is defined in terms of the state and
adjoint variables. The fourth and final step consists of using the gradient to determine the
next value of the design variables, which can be performed by any suitable optimization
algorithm (such as the algorithms described in Section 5).
In this particular case, the adjoint variable leads to the same expression shown in
Equation (15), and introducing Equation (4), it is implied that:
Note that Equation (20), which describes the adjoint problem of the compliance-
minimization problem statement, returns the definition of the state problem, setting them
equal to each other. Functionals that are “self-adjoint” lead to clear computational benefits
since Equations (4) and (15) can be solved with the same computation, a single FEA in the
case of the code provided.
Since l (v) and l (w) do not depend on ρ, the terms Dρ J (ρ, u(ρ))ρ̃ = Dρ l (w)ρ̃ =
Dρ l (v)ρ̃ = 0, and thus, the derivative is just:
Following the definition of the compliance, the derivative of the bilinear form is:
Z
Dρ a(ρ, u(ρ), v) = 5s vC0 (ρ) 5s uρ̃ dx (22)
Ω
Appl. Sci. 2023, 13, 12916 11 of 39
Finally, considering the stiffness penalization used, Equation (22) can be introduced
into (21), obtaining:
Z Z
DJ (ρ, u(ρ))ρ̃ = 5s u( Pρ P−1 C0 ) 5s uρ̃ dx = gρ̃ dx (23)
Ω Ω
1
where q is the exponential factor, and the von Mises amplified stress norm is σaV M = (σa Mσa ) 2 ,
with M being the von Mises matrix operator. Note that, although unconventional, this
manuscript adopted q as the exponential factor of the p-norm approximation to improve
the readability of the equation and to avoid confusion with the design density symbol ρ and
the SIMP exponential factor P. Furthermore, it is relevant to highlight that, by adopting
the use of this approximation, a global approach is selected, instead of local enforcement
at each integration point. This option was preferred for providing better scaling with the
mesh refinement, reducing the computational cost, and for its simplicity. However, the use
of augmented Lagrangian methods could be seen as an alternative [57].
The term Dρ J (ρ, u(ρ))(ρ̃) is defined as:
Dρ J (ρ, u(ρ))(ρ̃) =
Z q 1q −1 Z (25)
= σaV M (ρ, u(ρ)) dx ×q σaV M (ρ, u(ρ))q−1 Dσa σaV M ( Dρ σa (ρ̃)) dx
Ω Ω
where:
The derivative in the direction w, which allows us to define the adjoint problem, is:
Du J (ρ, u(ρ))(w) =
Z q 1q −1 Z (27)
= σaV M (ρ, u(ρ)) dx × σaV M (ρ, u(ρ))q−1 Dσa σaV M ( Du σa (w)) dx
Ω Ω
where:
1
Dσa σaV M ( Du σa (w)) = (σa Mσa )− 2 σa MDu σa (w) (28)
Appl. Sci. 2023, 13, 12916 12 of 39
with:
Du σa (w) = ρ β C0 5s w. (29)
Finally, before determining the value of DJ (ρ, u(ρ))ρ̃, it is required to find Dρ a(ρ, u(ρ), λ)
as follows:
Z
Dρ a(ρ, u(ρ), λ)ρ̃ = 5s λC0 (ρ) 5s uρ̃. (30)
Ω
As stated previously, note that 5s λ and 5s u represent the strains of the adjoint and
state problems, respectively. Therefore, in the provided code implementation, these terms
are obtained directly from the ABAQUS® FEA. Also, note that, for the stress functional,
Dρ l (λ) = 0. Finally, the first three optimization steps can then be rewritten as:
• Find u, the solution of a(ρ, u(ρ)v) = l (ρ, v);
• Using Equation (27), find λ such that a(ρ, λ, w) = − Du J (ρ, u(ρ))w, ∀ w. Note that
this functional is not self-adjoint, leading to a different procedure than the one shown
in the previous section;
• Compute: DJ (ρ, u(ρ))ρ̃ = [ Dρ J (ρ, u(ρ)) + Dρ a(ρ, u(ρ), λ)]ρ̃.
subject to:
ρmin ≤ ρe ≤ 1 ∀ e = 1, . . . , N (32)
V (ρ) = ∑ ρe ve ≤ V ∗ (33)
ρ
where, as previously defined, J (ρ) is the cost function, the density ρ represents the design
variables, which can vary within the interval [ρmin , 1], V (ρ) is the total volume, with ve rep-
resenting the volume of element e when the design density ρ = 1, V ∗ is the maximum value
of the volume constraint, and u(ρ) is the solution displacement vector of the state problem:
F = K (ρ)u. (34)
The stiffness matrix K (ρ) and force vector F are defined as, respectively:
Z
K (ρ) = BaT C Ba dx (35)
Ω
Z Z
F= N f dx + N t · n ds (36)
Ω ∂Ω
where Ba is the strain–displacement matrix in the evaluation point a, N a linear shape
function, and f a generic load function, while t indicates the applied boundary forces, if
they exist, and n is the normal direction pointing outwards of the boundary ∂Ω.
Appl. Sci. 2023, 13, 12916 13 of 39
When considering a maximum stress constraint, the problem statement is also sub-
ject to:
σ PN (ρ) ≤ σ∗ (37)
where σ PN (ρ) represents the maximum stress and σ∗ its the maximum allowable value.
Note that the penalization factors and regularization process described in Section 2.2
are not changed.
∂J ∂J ∂u
5ρ J = + . (38)
∂ρ ∂u ∂ρ
∂J
In order to find ∂u , it is possible to reorganize the state equation, multiply it for a
generic vector v, and derive the expression, leading to:
∂K (ρ) ∂F (ρ) ∂u(ρ)
vT u(ρ) − + K (ρ) = 0; (39)
∂ρ ∂ρ ∂ρ
therefore:
T
∂u(ρ) ∂K (ρ) ∂F (ρ)
− K T (ρ) v = vt u− . (40)
∂ρ ∂ρ ∂ρ
As stated in Section 2, solving Equation (40) for all values of ρ would be too expensive,
motivating the use of the adjoint method. Defining the adjoint variable as λ = v such that
K T (ρ)λ = − ∂u
∂J
leads to:
T T
∂u(ρ) ∂u ∂J ∂K (ρ) ∂F (ρ)
− K T (ρ)λ = = λT u− . (41)
∂ρ ∂ρ ∂u ∂ρ ∂ρ
With this information, the equivalent three-step process described in Section 2.3 can
be rewritten as:
• Find u such that: K (ρ)u = F (ρ);
∂J
• Find λ such that: K (ρ)λ = − ∂u ;
h i
∂J T ∂F (ρ) ∂K (ρ)
• Compute: 5ρ J = ∂ρ + λ ∂ρ − ∂ρ u .
∂C ∂K −1 ∂K
= − FK −1 K F = −u u. (44)
∂ρe ∂ρe ∂ρ
Appl. Sci. 2023, 13, 12916 14 of 39
P T P
Z Z Z
∂K
= BaT C0 Ba dx = BaT Pρ P−1 C0 Ba dx = Ba C Ba dx = K. (45)
∂ρ Ωe Ωe Ωe ρ ρ
∂C P Ee
= − ρ P ueT K0 ue = − P (46)
∂ρe ρ ρ
where ue and K0 are the elemental displacement vector and stiffness matrix of a fully solid
element (i.e., ρ = 1.0). The term ρ P ueT K0 ue is the strain energy ( Ee ), missing only the 12
constant. However, because this constant is applied to all elements, it can be neglected, and
set the term ρ P ueT K0 ue equal to the strain energy (Ee ) automatically calculated in ABAQUS® .
In this particular case, the first three steps of the generic optimization process can be
simplified and rewritten as follows:
• Find u such that: K (ρ)u = F (ρ). This procedure can be performed using an ABAQUS®
FEA;
• Take λ = −u, since the problem is self-adjoint;
• Compute: ∂ρ ∂C
e
= − P Eρe . Note that Ee can be obtained from the ABAQUS® FEA
executed in the first step.
This information is included to allow an easier understanding of the code implemen-
tation and its correlation with the formal mathematical formulation.
where q is the exponential factor, Ω is the set of stress evaluation points in the topology
optimization problem, and σavM is the value of the amplified von Mises stress in point a.
Note that, although unconventional, this manuscript adopted q as the exponential factor of
the p-norm approximation to improve the readability of the equation and avoid confusion
with the design density symbol ρ and the SIMP exponential factor P. Furthermore, it is
relevant to highlight that, by adopting the use of this approximation, a global approach is
selected, instead of local enforcement at each integration point. This option was preferred
for providing better scaling with the mesh refinement, reducing the computational cost,
and for its simplicity. However, the use of augmented Lagrangian methods could be seen
as an alternative [57].
The derivative of the p-norm approximation with respect to the design density of
an element can be obtained by the chain-rule, multiplying three intermediate terms. The
first term is the derivative of the p-norm approximation with respect to the amplified von
Mises stress:
! 1 −1
q
∂σ PN (ρ) 1 q 1 vM q−1
∂σavM
=
Ni ∑ σavM (ρ) × σ (ρ)
Ni a
. (48)
α∈Ω
Appl. Sci. 2023, 13, 12916 15 of 39
The second term is the derivative of σavM with respect to the stress vector in point a.
1
Since σavM can be written in matrix form as σavM = (σa Mσa ) 2 , its derivative becomes:
The third and last terms are the derivative of the stress vector σa with respect to the
design density. Considering Equations (9) and (10):
∂u(ρ)
The term ∂ρ is obtained from the state Equation (34):
∂F (ρ)
Note that it was assumed that ∂ρ = 0. This assumption is valid for static-load-driven
problems, where the load is considered to be constant and independent of the material
distribution. For displacement-driven problems, this assumption is not valid, as the forces
resulting from the displacement applied will change depending on the material distribution.
With Equations (48) through (51) and applying the chain rule, it is possible to define
∂σ PN (ρ)
∂ρ as:
The term ∂σuPN (ρ), on the other hand, requires the explicit definition of the matrices Ba ,
∂K (ρ)
K −1 (ρ), and ∂ρ , which are dependent on the element formulation used in the numerical
model. Furthermore, for topology optimization problems where the number of design
variables is larger than the number of constraints, the most-efficient way to determine
∂σuPN (ρ) is using an adjoint model, defining the adjoint variable as:
Therefore, the adjoint variable can be extracted from a finite element analysis, where
∂σ PN (ρ) ∂σvM (ρ)
a
the load applied on each node is equal to ∂σvM
a ∂σa C0 Ba , and λ is equal to the node
displacement. Introducing the adjoint variable in Equation (54) then leads to:
Finally, since K can be defined as K = ABaT C(ρ) Ba , since Ba λ and Ba u are equal to the
deformation vectors of the adjoint and state models (ξ adj and ξ s , respectively), Equation (57)
can be simplified to:
∂σ PN ∂σavM 1 T 0
∂σuPN (ρ) = − ρ 2ξ
adj ( ρ )C ( ρ ) ξ s ( ρ ) . (58)
∂σavM ∂σa
With this information, the first three steps of the generic optimization process can be
rewritten as follows:
• Find u such that: K (ρ)u = F (ρ). This procedure can be performed through an
ABAQUS® FEA;
∂σ PN (ρ) ∂σavM (ρ)
• Find λ such that: K (ρ)λ = ∂σvM ∂σa C0 Ba ;
a
PN ∂σ vM 1
• Compute: ∂σuPN (ρ) = ∂σvM ∂σa a −ρ 2 ξ adj
∂σ T ( ρ )C0 ( ρ ) ξ ( ρ ) .
s
a
where the value of w(rej ) is equal to the difference between the maximum range of the
filter (rmax ) and the actual distance between the central element e and the j elements in its
neighborhood (rej ), defined as follows:
This parameter can be interpreted as a pondered measurement of how close the two
elements are. Note that the code implementation provided allows the user to select if
the blurring filter should be applied to the sensitivities (excluding the volume constraint
sensitivities, or equivalent), the design densities, or both.
It is relevant to note that, although not implemented in the methodology herein
proposed, it is common to couple filtering techniques with projection methods [103] in
order to obtain a better geometry definition in the final solution. Doing so may eliminate
residual grey areas, which is particularly relevant in stress-constrained problems, where a
smoother geometry may avoid the creation of stress concentration points.
5. Optimization Algorithms
5.1. Optimality Criteria
The OC method implemented in this article follows the approach proposed by Bend-
søe [99] and implemented by Sigmund in [6]. It is usually applied to problems of compliance
minimization with a volume constraint. According to this procedure, the design variables
can be updated according to the following expression:
η
ρlower , if ρBe ≤ ρlower
η η
ρ = ρBe , if ρlower ≤ ρBe ≤ ρupper (62)
η
ρupper , if ρupper ≤ ρBe
The Lagrangian multiplier ψ can be found using a bisection method, updating its
value until the volume of the solution meets the imposed constraint.
This method can also be simplified in order to obtain an equivalent version suitable
for discrete design variables. This simplification corresponds to the approach used by
Zuo and Xie in [17]. For the current iteration, the code determines the sensitivities of all
elements. Then, a bisection method is used to determine a threshold sensitivity. All
elements with a sensitivity greater than the threshold become solid (i.e., ρ = 1.0), while the
other elements are removed according to the “soft-kill” approach (i.e., ρ = ρmin ). Similar to
Appl. Sci. 2023, 13, 12916 18 of 39
the continuous version, the value of the sensitivity threshold is updated until the mass or
volume of the structure meets the volume constraint imposed.
When using the OC method, especially the discrete version, it is usual to consider
a fully solid design for the initial iteration and gradually reduce the volume constraint
in each iteration until the target value is reached. This procedure is adopted to obtain a
convergent solution and can be defined through the following equation:
where k is the number of the current iteration and evol is the ratio at which the volume
constraint decreases in each iteration, until the target volume constraint (V ∗ ) is reached.
Nonetheless, it is important to understand that this discrete version should be regarded
as a heuristic, which was observed to work well when solving compliance-minimization
problems. However, this procedure can be criticized from an optimization perspective,
as there is no mathematical guarantee that the objective function will decrease during
each iteration.
5.4. Trust-Constr
Trust-constr is a trust region algorithm for constrained optimization, available in the
SciPy module [108]. Both line search methods and trust region methods generate steps
with the help of a quadratic model of the objective function. However, while line search
Appl. Sci. 2023, 13, 12916 19 of 39
methods use a step length along a given search direction, trust region methods define a
region around the current iteration, within which they trust that the quadratic model is an
accurate approximation [109].
This algorithm utilizes the trust region interior point method described in [110] to solve
the inequality constraints imposed in the topology optimization problem statement. The
strategy behind this interior point method [110] consists of solving inequality constraints
by introducing slack variables. Then, the process is repeated for a sequence of equality-
constrained barrier problems with progressively smaller values of the barrier parameter.
This code can be called in ABAQUS® using the Run Script command in the File
tab or by copying it into the command line. Note that the Run Script command loads
the code faster, but automatically assumes that the user intends to solve the topology
optimization in its totality. Copying it into the command line leads to a slower input, but
allows a line-by-line execution, which may be useful for understanding the functioning of
the code implementation.
The PEP8 [111] Python style guide was followed as closely as possible. However, the
interested reader is warned that some exceptions exist, caused by compatibility constraints
with the data structures and pre-defined variables existing in ABAQUS® . An example of
these exceptions includes the naming of constant material properties without all capital
letters, since these names are already used by ABAQUS® in a different data structure.
∂C p
= Eee + Ee . (67)
∂ρ
The submission of the FEA simulations for the state and adjoint models is managed by
the classes ABAQUSFEA and AdjointModel, respectively. ABAQUSFEA is also responsible
for determining the sensitivity of the compliance objective function ∂C
∂ρ , which is stored
as the class attribute “ae”. On the other hand, the AdjointModel classalso applies the
∂σ PN (ρ)
adjoint loads and determines the stress sensitivity. The stress sensitivity ∂ρ , and its
most-relevant intermediate terms PN ( ρ )
(∂σsp and ∂σuPN (ρ))are stored as attributes of this
f
class, along with the stress and strain vectors. In particular:
∂σ PN (ρ)
• “elmt_stress_sensitivity_continuous” stores the values of ∂ρ in a mesh-independent
and mesh-independent form, making the comparison of the value of this derivative
more suitable for the results obtained through finite differences.
Appl. Sci. 2023, 13, 12916 21 of 39
∂σ PN (ρ)
• “elmt_stress_sensitivity_discrete” stores the values of ∂ρ in a mesh-dependent
form, which is more suitable to be used as an input to the optimization algorithms,
since they generally do not have access to the information of the mesh used in the FEA
model. The difference between discrete and continuous element stress sensitivity is
the multiplication by the determinant of the Jacobian matrix.
• “d_pnorm_spf” stores the values of ∂σsp PN ( ρ ).
f
• “d_pnorm_displacement” stores the values of ∂σuPN (ρ).
• “stress_vector” and “stress_vector_int” store the stress vectors determined at the
element nodes and integration points.
• “deformation_vector” and “deformation_vector_int” store the strain vectors deter-
mined at the element nodes and integration points.
The sensitivity of the material constraint is determined by the material_constraint_sensitivity
function, accounting for the possibility of having a non-uniform mesh with elements of
different sizes and the use of either a volume or mass constraint.
6.9. Parameter Input Request, Domain Definition, and Variable Generation (Lines 7284–8854)
The ParameterInput class generates the prompt boxes that appear when running the
code. The information introduced by the user is then used to create the global variables
required for the code. A detailed list of these variables and their purpose can be found in
Lines 8366–8461.
This information is then used by the EditableDomain class, to define the design space of
the topology optimization problem, and by the VariableGenerator class, to create the lists and
dictionaries that record the relevant data gathered during the topology optimization process.
For a detailed description of these variables, please refer to the code Lines 8721–8827.
considering a material with a 70.000 MPa Young’s modulus, a 0.33 Poisson’s ratio, and a
material density of 2.7 × 10−9 t/mm3 .
Figure 2. Dimensions and boundary conditions of the Cantilever beam numerical model.
The ABAQUS® models necessary to reproduce all the results described in this work
are available in the Dataset [94].
7.2. L-Bracket
The L-bracket was chosen as a more-challenging benchmark problem [53,113,114],
characterized by its initial geometry containing a stress-concentration point in the internal
corner. Unconstrained compliance-minimization problems tend to ignore the stress con-
centration point, leading to an angular shape. On the other hand, stress-minimization or
stress-constrained compliance-minimization problems tend to create rounded shapes that
avoid the stress concentration. For these reasons, the L-bracket problem will be used in
this research to validate and demonstrate the functioning of the code implemented when
solving stress-dependent topology optimization problems. Furthermore, the strain and
stress state generated by this L-bracket geometry is used in Section 8 to validate the correct
implementation of the element formulations and maximum stress differentiation process.
The dimensions and boundary conditions considered are represented in Figure 3.
Unless stated otherwise, this problem was modeled using a regular mesh with an element
size of 3.0 mm and the element type CPS4. The load F was equal to 1500.0 N, with this
value being distributed over the nodes included in the 12.0 × 12.0 corner represented in
Figure 3. The elements within the 12.0 × 12.0 corner are not editable during the optimization
process. The problem was solved using an implicit analysis and considering a material
with a 70.000 MPa Young’s modulus, a 0.33 Poisson’s ratio, and a material density of
2.7 × 10−9 ton/mm3 .
The design space was modeled using an irregular mesh with an average element size
of 1.25 mm and hexahedral C3D10, leading to an approximate total of 370.000 elements.
A unit load was applied at a reference point attached to the connection region of the
structure, while the surface of the adhesive joint was considered fixed. To minimize the
computational cost, two planes of symmetry were considered along the XY and YZ planes,
reducing the total number of elements. The problem was solved using an implicit analysis
considering a material with: a 70.000 MPa Young’s modulus, a 0.33 Poisson’s ratio, and
a material density of 2.7 × 10−9 ton/mm3 . The problem also considered a simplified
representation of an adhesive bond, accounting only for the elastic properties (a 1.500 MPa
Young’s modulus and a 0.3 Poisson’s ratio). Due to the complexity of the design, the
interested reader is referred to the Mendeley Dataset [94] for the complete description of
the geometry considered in this case study and shown in Figure 4.
The material elements representing the adhesive bond are identified as “frozen ele-
ments”. This excludes the possibility of editing the material distribution in this region,
which would influence the resistance of the joint due to the reduction of the bonded area
and excludes the contribution of these elements during the use of the blurring filter, which
would be physically unreasonable as the adhesive and substrate are made of different
materials. On the other hand, the first layer of elements of the support in contact with the
adhesive was identified as a “neighboring region”, which does not allow changes in the
material distribution of these elements, but allows the consideration of their influence in
the determination of the gradients. However, unlike the previous case, the elements in this
region were considered during the filtering process, as the material is the same as the one
assigned to the editable region of the topology optimization process. The “frozen elements”
and “neighboring region” are shown in Figure 4 in red and blue, respectively.
The ABAQUS® models necessary to reproduce all the results described in this work
are available in the Dataset [94].
Appl. Sci. 2023, 13, 12916 26 of 39
Figure 4. Complete three-dimensional representation of the geometry considered for the bonded
support and its boundary conditions. The exterior surface of the region shown in red is considered
fixed. The complete geometry is provided in the Mendeley Dataset [94]. (a) Detailed view of the
bonded region. (b) Detailed view of the loads applied in the lower surface.
8. Code Validation
The data necessary to solve compliance-minimization problems can be directly ob-
tained from ABAQUS® , which is a commercially certified software. However, stress-
dependent problems require the explicit programming of the element formulation and
of the derivation process of the maximum stress function. The purpose of the following
subsections is to present a brief validation of the code implementation. Section 8.1 validates
the element formulations implemented, comparing the strains and stresses determined
by the code and by ABAQUS® at each integration point. Section 8.2 compares the deriva-
tive of the maximum stress determined by the code with the derivative obtained through
finite differences.
In this section, the L-bracket benchmark problem described in Section 7.2 is used. The
reason behind this choice is that the L-bracket problem leads to a complex strain and stress
state, allowing a more-challenging and -generic testing of elements over a wider variety of
loading conditions than the Cantilever beam problem.
and δγi is the difference between the component determined by ABAQUS® and its code
i is determined as the product of δγ by the ratio between the component γ
counterpart. Err i i
and the magnitude of the vector γ.
This metric is preferred over the direct comparison of δγi , since the latter is highly
influenced by floating point errors. One of the reasons for this influence is that, while
ABAQUS® operates internally with double-precision, the output received by the code is in
a single-precision format. This difference reduces the number of decimal places considered
in each value and could lead to disproportional artificial errors in the vector components
that contribute the least to the magnitude of the vector or in vectors whose magnitude
tends towards zero. The second reason is that δγi tends to estimate large error values for
Appl. Sci. 2023, 13, 12916 27 of 39
vector components that have a significantly smaller magnitude when compared to the
magnitude of the vector.
Table 2 summarizes the average pondered error observed for each integration point
of four variants of the L-bracket numerical model described in Section 7.2, each with a
different element type. For the particular case of using a 3D element (element type C3D8
in ABAQUS® ), a thickness of 1.0 mm was considered for the L-bracket geometry. Since
the largest average pondered error observed is equal to 2.0%, it can be concluded that the
element formulations included in the code provided were implemented successfully for
the case selected. Furthermore, for each element type, the table indicates the percentage of
integration points with a pondered error less than 1.0%.
Table 2. Average pondered error between the elements implemented in the code and the ABAQUS®
output. The dimensions are represented in millimeters.
Although not included in the present work due to its extension, the interested reader is
informed that the Dataset [94] associated with this research includes a detailed comparison
of every integration point, considering both the pondered and regular error measurements.
Table 3. Analysis of the continuous maximum stress derivative determined by the Python code and
the derivative obtained through finite differences.
Mesh Number of p-Norm (MPa) Element Element p-Norm (MPa) Finite Continuous
∆ρ
Size Elements @ ρ = 1.0 Location Label @ ρ = 1 − ∆ρ Differences Derivative
0.1 335.12679 −208.4939
A 69,184 −129.6819
0.01 315.23590 −95.8493
0.1 314.27740 0.0000
0.5 102,400 314.27741 B 102,332 0.0001
0.01 314.27741 0.0000
0.1 314.28104 −0.0363
C 63,841 −0.0301
0.01 314.27784 −0.0438
0.1 272.87736 0.8519
A 17,269 0.4426
0.01 272.95502 0.7534
0.1 272.96249 0.0006
1 25,600 272.96255 B 25,560 0.0004
0.01 272.96255 0.0000
0.1 272.97007 −0.0752
C 23,901 −0.0685
0.01 272.96326 −0.0713
0.1 232.36352 −112.7404
A 1953 −65.2413
0.01 221.48312 −39.3637
0.1 221.08923 0.0025
3 2889 221.08948 B 2875 0.0029
0.01 221.08941 0.0066
0.1 221.13180 −0.4232
C 2683 −0.4054
0.01 221.09332 −0.3842
Table 4. Average value of the stress derivative, and its components, observed in the L-bracket model
at different design density values, considering three different mesh sizes.
evol = 0.05, while the remaining cases considered an initial density equal to 0.5. The
maximum move limit was equal to 0.2 for the OC or MMA algorithms and 1.0 for the
SciPy algorithms SLSQP or Trust-constr, corresponding to their pre-default values. The
blurring filter was applied to both the sensitivity and design densities with a maximum
search radius of 8.0 mm for the L-bracket, 12.0 mm for the Cantilever beam, and 3.5 mm
for the bonded support, except for the discrete version of the OC, which only applied the
blurring filter to the sensitivity. The influence of the frozen elements was also considered
during the application of the blurring filter. For stress-dependent problem statements, a
p-norm exponential factor Qi = 8.0 was used.
Overall, the Trust-constr and SLSQP algorithms tended to require a larger number of
iterations to reach convergence. The reason for this difference was justified by their internal
convergence criteria, as described in Section 6.11.
In the results shown, the existence of few elements with intermediate design densities
is, generally, to be expected for two reasons. First, applying a blurring filter will cause a
gradual transition between the solid and void regions, avoiding a full “black-and-white”
solution. Second, as described in Section 6.11, the convergence criterion depends only on
the values of the objective function and does not impose a strict restriction on the final
solution being constituted only by solid elements. These two factors justify the apparent
better performance of the discrete version of the OC algorithm, since it only uses solid
elements and does not have a blurring filter applied to the element densities. However, it is
most likely that this optimization method converged to a better local minimum.
It is also relevant to note that the mesh size had an influence on the use of elements
with intermediate design densities. To completely avoid the existence of residual grey areas,
it is recommended to implement projection methods [103], to define the final contour of the
geometry, or to apply a final threshold filter to the design densities of each element. How-
ever, despite the potential influence of internal parameters, such as the filtering approach,
mesh refinement, and the choice of the optimization algorithm and its hyperparameters, the
results presented in both case studies are in line with the information reported in previous
publications [53].
Regarding the computational efficiency of the implementation proposed here, it was
seen that it requires an average of 50 s per iteration when executed with an Intel® CoreTM
i7-8750H CPU @ 2.20 GHz. However, the use of external packages, to apply the SLSQP and
Trust-constr algorithms available in Python, led to an increase of this value to an average of
380 s per iteration. These values include the whole process required to perform an iteration,
including: the update of the material properties, the preparation of the ABAQUS® input
file, model execution, data extraction from the FEA solution, the calculation of gradients,
the application of the optimization process to update the design densities, and the plot of
the new material distribution.
Finally, the Cantilever beam and L-bracket problems solved in these sections could also
be replicated in 3D space. This is possible as the code provided includes the implementation
of a 3D element (C3D8 in ABAQUS® ) and as the problem solving process does not require
any particular adaptation when being converted to 3D space.
The interested reader is informed that the Dataset [94] contains all the solutions
obtained by each optimization algorithm, at each iteration. Due to its large extension, the
information presented in this section is limited to the most-relevant solutions.
Figure 5. Graphic representation of the objective function and volume constraint obtained for the
compliance minimization of the Cantilever beam. The geometry displayed represents the final
solution obtained by the MMA algorithm.
Appl. Sci. 2023, 13, 12916 31 of 39
Figure 6. Graphic representation of the objective function obtained for each optimization algorithm
and problem statement. The geometries displayed represent the final solution obtained by the
algorithms: (A) OC—Continuous, (B) MMA, (C) SciPy SLSQP.
This observation is also in line with the volume constraint graphic, which shows a
gradual decrease until the value 0.5 is reached. On the other hand, the remaining algorithms
maintained the volume constraint within a feasible domain.
The final Cantilever geometry obtained was similar across all cases considered and
illustrated, in Figure 5, with the solution found by the MMA. In this particular case, the
elements with intermediate densities may also be the result of using a coarser mesh.
Figure 7. Graphic representation of the topology optimized geometry, objective function, and
material constraint obtained during the compliance minimization of the bonded support. The
geometry displayed represents the final solution obtained by the OC—Continuous algorithm. The
image shown only includes elements with a design density ρ = 1.0 to improve the readability and
comprehension of the solution obtained.
Appl. Sci. 2023, 13, 12916 33 of 39
10. Conclusions
This paper addressed the difficulties of applying novel topology optimization methods
in the industry, where the black-box system common to most commercial software limits
the access to relevant information. Therefore, a new open methodology for solving non-
self-adjoint topology optimization problems in ABAQUS® was presented.
The functioning of this method was validated through two procedures: first, by
comparing the results of the sensitivity analysis with finite differences, which indicated
a good correlation between both; then, by solving two benchmark problems with the
following algorithms: Optimality Criteria, Method of Moving Asymptotes, Sequential
Least-Squares Quadratic Programming, and Trust-constr algorithm. The results obtained,
convergence, and influence of the problem statement chosen were in agreement with other
state-of-the-art results. In the stress-minimization case study, having access to optimization
algorithms unavailable in commercial software allowed the methodology herein presented
a maximum stress reduction of 35% when compared to the solution obtained in ABAQUS® .
An implementation of this method is provided in Python, working in conjunction
with ABAQUS® , in order to allow a direct application to new problems. The code imple-
mentation, as well as the ABAQUS® models necessary to recreate the work reported in
this paper are available as Supplementary Material and can also be downloaded in digital
format from the following Dataset [94] or repository: https://github.com/pnfernandes/
Python-Code-for-Stress-Constrained-Topology-Optimization-in-ABAQUS.
Therefore, this article promotes the advance of the state-of-the-art by providing the tools
required to solve stress-dependent geometrically complex problems, as well as a modular
path that opens the possibility of implementing novel methods in an industrial environment.
Supplementary Materials: The following supporting information can be downloaded at: https:
//www.mdpi.com/article/10.3390/app132312916/s1 and Dataset [94] or repository: https://github.
com/pnfernandes/Python-Code-for-Stress-Constrained-Topology-Optimization-in-ABAQUS. The
Python code implementation, the ABAQUS® numerical models, and the complete raw data used in
this work.
Author Contributions: Conceptualization, P.F. and A.F.; methodology, A.F.; software, P.F. and M.P.;
validation, P.F. and A.F.; formal analysis, P.F., A.F. and P.G.; investigation, P.F.; resources, N.C.;
data curation, P.F.; writing—original draft preparation, P.F.; writing—review and editing, A.F.;
visualization, P.F.; supervision, A.F., R.P. and N.C.; project administration, R.P. and N.C.; funding
acquisition, N.C. All authors have read and agreed to the published version of the manuscript.
Funding: P. Fernandes gratefully acknowledges the financial support from FCT—Fundação para a
Ciência e a Tecnologia, I.P., under the scope of the Ph.D. Grant SFRH/BD/145425/2019. A. Ferrer
gratefully acknowledges the partial support of Serra Húnter Research Program (Spain).
Data Availability Statement: Not applicable.
Conflicts of Interest: The authors declare no conflict of interest.
Abbreviations
The following abbreviations, acronyms, and symbols are used in this manuscript:
References
1. Bendsøe, M.P.; Kikuchi, N. Generating optimal topologies in structural design using a homogenization method. Comput. Methods
Appl. Mech. Eng. 1988, 71, 197–224. [CrossRef]
2. Alderliesten, R.C. Designing for damage tolerance in aerospace: A hybrid material technology. Mater. Des. 2015, 66, 421–428.
[CrossRef]
3. Meng, L.; Zhang, W.; Quan, D.; Shi, G.; Tang, L.; Hou, Y.; Breitkopf, P.; Zhu, J.; Gao, T. From Topology Optimization Design to
Additive Manufacturing: Today’s Success and Tomorrow’s Roadmap. Arch. Comput. Methods Eng. 2020, 27, 805–830. [CrossRef]
4. Zhang, W.; Yang, J.; Xu, Y.; Gao, T. Topology optimization of thermoelastic structures: Mean compliance minimization or elastic
strain energy minimization. Struct. Multidiscip. Optim. 2014, 49, 417–429. [CrossRef]
5. Wang, C.; Zhao, Z.; Zhou, M.; Sigmund, O.; Zhang, X.S. A comprehensive review of educational articles on structural and
multidisciplinary optimization. Struct. Multidiscip. Optim. 2021, 64, 2827–2880. [CrossRef]
6. Sigmund, O. A 99 line topology optimization code written in matlab. Struct. Multidiscip. Optim. 2001, 21, 120–127. [CrossRef]
Appl. Sci. 2023, 13, 12916 36 of 39
7. Andreassen, E.; Clausen, A.; Schevenels, M.; Lazarov, B.S.; Sigmund, O. Efficient topology optimization in MATLAB using
88 lines of code. Struct. Multidiscip. Optim. 2011, 43, 1–16. [CrossRef]
8. Liu, K.; Tovar, A. An efficient 3D topology optimization code written in Matlab. Struct. Multidiscip. Optim. 2014, 50, 1175–1196.
[CrossRef]
9. Bendsøe, M.P. Optimal shape design as a material distribution problem. Struct. Optim. 1989, 1, 193–202. [CrossRef]
10. Zhou, M.; Rozvany, G.I. The COC algorithm, Part II: Topological, geometrical and generalized shape optimization. Comput.
Methods Appl. Mech. Eng. 1991, 89, 309–336. [CrossRef]
11. Rozvany, G.I.N.; Sobieszczanski-Sobieski, J. New optimality criteria methods: Forcing uniqueness of the adjoint strains by
corner-rounding at constraint intersections. Struct. Optim. 1992, 4, 244–246. [CrossRef]
12. Osher, S.; Sethian, J.A. Fronts propagating with curvature-dependent speed: Algorithms based on Hamilton-Jacobi formulations.
J. Comput. Phys. 1988, 79, 12–49. [CrossRef]
13. Wang, M.Y.; Wang, X.; Guo, D. A level set method for structural topology optimization. Comput. Methods Appl. Mech. Eng. 2003,
192, 227–246. [CrossRef]
14. Challis, V.J. A discrete level-set topology optimization code written in Matlab. Struct. Multidiscip. Optim. 2010, 41, 453–464.
[CrossRef]
15. Young, V.; Querin, O.M.; Steven, G.P.; Xie, Y.M. 3D and multiple load case bi-directional evolutionary structural optimization
(BESO). Struct. Optim. 1999, 18, 183–192. [CrossRef]
16. Huang, X.; Xie, Y.M. A further review of ESO type methods for topology optimization. Struct. Multidiscip. Optim. 2010,
41, 671–683. [CrossRef]
17. Zuo, Z.H.; Xie, Y.M. A simple and compact Python code for complex 3D topology optimization. Adv. Eng. Softw. 2015, 85, 1–11.
[CrossRef]
18. Sigmund, O. On the usefulness of non-gradient approaches in topology optimization. Struct. Multidiscip. Optim. 2011, 43, 589–596.
[CrossRef]
19. Zhu, B.; Zhang, X.; Zhang, H.; Liang, J.; Zang, H.; Li, H.; Wang, R. Design of compliant mechanisms using continuum topology
optimization: A review. Mech. Mach. Theory 2020, 143, 103622. [CrossRef]
20. Sigmund, O.; Maute, K. Topology optimization approaches: A comparative review. Struct. Multidiscip. Optim. 2013, 48, 1031–1055.
[CrossRef]
21. Harzheim, L.; Graf, G. A review of optimization of cast parts using topology optimization: II-Topology optimization with
manufacturing constraints. Struct. Multidiscip. Optim. 2006, 31, 388–399. [CrossRef]
22. Suresh, K. A 199-line Matlab code for Pareto-optimal tracing in topology optimization. Struct. Multidiscip. Optim. 2010,
42, 665–679. [CrossRef]
23. Talischi, C.; Paulino, G.H.; Pereira, A.; Menezes, I.F.M. PolyTop: A Matlab implementation of a general topology optimization
framework using unstructured polygonal finite element meshes. Struct. Multidiscip. Optim. 2012, 45, 329–357. [CrossRef]
24. Smith, H.; Norato, J.A. A MATLAB code for topology optimization using the geometry projection method. Struct. Multidiscip.
Optim. 2020, 62, 1579–1594. [CrossRef]
25. Sanders, E.D.; Pereira, A.; Aguiló, M.A.; Paulino, G.H. PolyMat: An efficient Matlab code for multi-material topology optimization.
Struct. Multidiscip. Optim. 2018, 58, 2727–2759. [CrossRef]
26. Otomori, M.; Yamada, T.; Izui, K.; Nishiwaki, S. Matlab code for a level set-based topology optimization method using a reaction
diffusion equation. Struct. Multidiscip. Optim. 2015, 51, 1159–1172. [CrossRef]
27. Gao, J.; Luo, Z.; Xia, L.; Gao, L. Concurrent topology optimization of multiscale composite structures in Matlab. Struct. Multidiscip.
Optim. 2019, 60, 2621–2651. [CrossRef]
28. Xia, L.; Breitkopf, P. Design of materials using topology optimization and energy-based homogenization approach in Matlab.
Struct. Multidiscip. Optim. 2015, 52, 1229–1241. [CrossRef]
29. Aage, N.; Andreassen, E.; Lazarov, B.S. Topology optimization using PETSc: An easy-to-use, fully parallel, open source topology
optimization framework. Struct. Multidiscip. Optim. 2015, 51, 565–572. [CrossRef]
30. Liang, Y.; Cheng, G. Further elaborations on topology optimization via sequential integer programming and Canonical relaxation
algorithm and 128-line MATLAB code. Struct. Multidiscip. Optim. 2020, 61, 411–431. [CrossRef]
31. Picelli, R.; Sivapuram, R.; Xie, Y.M. A 101-line MATLAB code for topology optimization using binary variables and integer
programming. Struct. Multidiscip. Optim. 2021, 63, 935–954. [CrossRef]
32. Ferrari, F.; Sigmund, O. A new generation 99 line Matlab code for compliance topology optimization and its extension to 3D.
Struct. Multidiscip. Optim. 2020, 62, 2211–2228. [CrossRef]
33. Du, Z.; Cui, T.; Liu, C.; Zhang, W.; Guo, Y.; Guo, X. An efficient and easy-to-extend Matlab code of the Moving Morphable
Component (MMC) method for three-dimensional topology optimization. Struct. Multidiscip. Optim. 2022, 65, 158. [CrossRef]
34. Chen, Q.; Zhang, X.; Zhu, B. A 213-line topology optimization code for geometrically nonlinear structures. Struct. Multidiscip.
Optim. 2019, 59, 1863–1879. [CrossRef]
35. Sotiropoulos, S.; Kazakis, G.; Lagaros, N.D. Conceptual design of structural systems based on topology optimization and
prefabricated components. Comput. Struct. 2020, 226, 106136. [CrossRef]
36. Giraldo-Londoño, O.; Paulino, G.H. PolyStress: A Matlab implementation for local stress-constrained topology optimization
using the augmented Lagrangian method. Struct. Multidiscip. Optim. 2021, 63, 2065–2097. [CrossRef]
Appl. Sci. 2023, 13, 12916 37 of 39
37. Yang, D.; Liu, H.; Zhang, W.; Li, S. Stress-constrained topology optimization based on maximum stress measures. Comput. Struct.
2018, 198, 23–39. [CrossRef]
38. Bruggi, M.; Venini, P. A mixed FEM approach to stress-constrained topology optimization. Int. J. Numer. Methods Eng. 2008,
73, 1693–1714. [CrossRef]
39. Lee, E.; James, K.A.; Martins, J.R.R.A. Stress-constrained topology optimization with design-dependent loading. Struct.
Multidiscip. Optim. 2012, 46, 647–661. [CrossRef]
40. Cai, S.; Zhang, W. Stress-constrained topology optimization with free-form design domains. Comput. Methods Appl. Mech. Eng.
2015, 289, 267–290. [CrossRef]
41. Salazar de Troya, M.A.; Tortorelli, D.A. Adaptive mesh refinement in stress-constrained topology optimization. Struct. Multidiscip.
Optim. 2018, 58, 2369–2386. [CrossRef]
42. Suresh, K.; Takalloozadeh, M. Stress-constrained topology optimization: A topological level-set approach. Struct. Multidiscip.
Optim. 2013, 48, 295–309. [CrossRef]
43. Chu, S.; Gao, L.; Xiao, M.; Luo, Z.; Li, H.; Gui, X. A new method based on adaptive volume constraint and stress penalty for
stress-constrained topology optimization. Struct. Multidiscip. Optim. 2018, 57, 1163–1185. [CrossRef]
44. Oh, M.K.; Lee, D.S.; Yoo, J. Stress-constrained topology optimization simultaneously considering the uncertainty of load positions.
Int. J. Numer. Methods Eng. 2022, 123, 339–365. [CrossRef]
45. Luo, Y.; Wang, M.Y.; Kang, Z. An enhanced aggregation method for topology optimization with local stress constraints. Comput.
Methods Appl. Mech. Eng. 2013, 254, 31–41. [CrossRef]
46. Biyikli, E.; To, A.C. Proportional topology optimization: A new non-sensitivity method for solving stress-constrained and
minimum compliance problems and its implementation in MATLAB. PLoS ONE 2015, 10, e0145041. [CrossRef] [PubMed]
47. Amir, O. Efficient stress-constrained topology optimization using inexact design sensitivities. Int. J. Numer. Methods Eng. 2021,
122, 3241–3272. [CrossRef]
48. Paris, J.; Navarrina, F.; Colominas, I.; Casteleiro, M. Stress constraints sensitivity analysis in structural topology optimization.
Comput. Methods Appl. Mech. Eng. 2010, 199, 2110–2122. [CrossRef]
49. Holmberg, E.; Torstenfelt, B.; Klarbring, A. Global and clustered approaches for stress-constrained topology optimization and
deactivation of design variables. In Proceedings of the 10th World Congress on Structural and Multidisciplinary Optimization,
Orlando, FL, USA, 19–24 May 2013; pp. 1–10.
50. Norato, J.A.; Smith, H.A.; Deaton, J.D.; Kolonay, R.M. A maximum-rectifier-function approach to stress-constrained topology
optimization. Struct. Multidiscip. Optim. 2022, 65, 286. [CrossRef]
51. Burger, M.; Stainko, R. Phase-field relaxation of topology optimization with local stress constraints. SIAM J. Control Optim. 2006,
45, 1447–1466. [CrossRef]
52. De Leon, D.M.; Alexandersen, J.; O. Fonseca, J.S.; Sigmund, O. Stress-constrained topology optimization for compliant mechanism
design. Struct. Multidiscip. Optim. 2015, 52, 929–943. [CrossRef]
53. Holmberg, E.; Torstenfelt, B.; Klarbring, A. Stress-constrained topology optimization. Struct. Multidiscip. Optim. 2013, 48, 33–47.
[CrossRef]
54. Pastore, T.; Mercuri, V.; Menna, C.; Asprone, D.; Festa, P.; Auricchio, F. Topology optimization of stress-constrained structural
elements using risk-factor approach. Comput. Struct. 2019, 224, 106104. [CrossRef]
55. Paris, J.; Colominas, I.; Navarrina, F.; Casteleiro, M. Parallel computing in topology optimization of structures with stress
constraints. Comput. Struct. 2013, 125, 62–73. [CrossRef]
56. Deng, S.; Suresh, K. Multi-constrained topology optimization via the topological sensitivity. Struct. Multidiscip. Optim. 2015,
51, 987–1001. [CrossRef]
57. Senhora, F.V.; Giraldo-Londoño, O.; Menezes, I.F.M.; Paulino, G.H. Topology optimization with local stress constraints: A stress
aggregation-free approach. Struct. Multidiscip. Optim. 2020, 62, 1639–1668. [CrossRef]
58. Saadlaoui, Y.; Milan, J.L.; Rossi, J.M.; Chabrand, P. Topology optimization and additive manufacturing: Comparison of conception
methods using industrial codes. J. Manuf. Syst. 2017, 43, 178–186. [CrossRef]
59. Holmberg, E.; Torstenfelt, B.; Klarbring, A. Fatigue constrained topology optimization. Struct. Multidiscip. Optim. 2014,
50, 207–219. [CrossRef]
60. Amir, O.; Lazarov, B.S. Achieving stress-constrained topological design via length scale control. Struct. Multidiscip. Optim. 2018,
58, 2053–2071. [CrossRef]
61. Granlund, G.; Wallin, M.; Tortorelli, D.; Watts, S. Stress-constrained topology optimization of structures subjected to nonpropor-
tional loading. Int. J. Numer. Methods Eng. 2023, 124, 2818–2836. [CrossRef]
62. Amstutz, S.; Novotny, A.A.; de Souza Neto, E.A. Topological derivative-based topology optimization of structures subject to
Drucker–Prager stress constraints. Comput. Methods Appl. Mech. Eng. 2012, 233, 123–136. [CrossRef]
63. Cheng, L.; Bai, J.; To, A.C. Functionally graded lattice structure topology optimization for the design of additive manufactured
components with stress constraints. Comput. Methods Appl. Mech. Eng. 2019, 344, 334–359. [CrossRef]
64. Deng, H.; Vulimiri, P.S.; To, A.C. An efficient 146-line 3D sensitivity analysis code of stress-based topology optimization written
in MATLAB. Optim. Eng. 2021, 23, 1733–1757. [CrossRef]
65. Mirzendehdel, A.M.; Suresh, K. Support structure constrained topology optimization for additive manufacturing. Comput.-Aided
Des. 2016, 81, 1–13. [CrossRef]
Appl. Sci. 2023, 13, 12916 38 of 39
66. Collet, M.; Bruggi, M.; Duysinx, P. Topology optimization for minimum weight with compliance and simplified nominal stress
constraints for fatigue resistance. Struct. Multidiscip. Optim. 2017, 55, 839–855. [CrossRef]
67. Bruggi, M.; Duysinx, P. Topology optimization for minimum weight with compliance and stress constraints. Struct. Multidiscip.
Optim. 2012, 46, 369–384. [CrossRef]
68. Giraldo-Londoño, O.; Aguiló, M.A.; Paulino, G.H. Local stress constraints in topology optimization of structures subjected to
arbitrary dynamic loads: A stress aggregation-free approach. Struct. Multidiscip. Optim. 2021, 64, 3287–3309. [CrossRef]
69. París, J.; Navarrina, F.; Colominas, I.; Casteleiro, M. Topology optimization of continuum structures with local and global stress
constraints. Struct. Multidiscip. Optim. 2009, 39, 419–437. [CrossRef]
70. Long, K.; Wang, X.; Liu, H. Stress-constrained topology optimization of continuum structures subjected to harmonic force
excitation using sequential quadratic programming. Struct. Multidiscip. Optim. 2019, 59, 1747–1759. [CrossRef]
71. Duysinx, P. Topology optimization with different stress limit in tension and compression. In Proceedings of the Third World
Congress of Structural and Multidisciplinary Optimization (WCSMO3), Buffalo, NY, USA, 17–21 May 1999.
72. da Silva, A.L.F.; Salas, R.A.; Nelli Silva, E.C.; Reddy, J.N. Topology optimization of fibers orientation in hyperelastic composite
material. Compos. Struct. 2020, 231, 111488. [CrossRef]
73. Miyajima, K.; Noguchi, Y.; Yamada, T. Optimal design of compliant displacement magnification mechanisms using stress-
constrained topology optimization based on effective energy. Finite Elem. Anal. Des. 2023, 216, 103892. [CrossRef]
74. Emmendoerfer Jr, H.; Fancello, E.A.; Silva, E.C.N. Stress-constrained level set topology optimization for compliant mechanisms.
Comput. Methods Appl. Mech. Eng. 2020, 362, 112777. [CrossRef]
75. Bendsoe, M.P.; Sigmund, O. Topology Optimization: Theory, Methods, and Applications; Springer Science & Business Media:
Berlin/Heidelberg, Germany, 2003.
76. Bakhtiary, N.; Allinger, P.; Friedrich, M.; Mulfinger, F.; Sauter, J.; Müller, O.; Puchinger, M. A new approach for sizing, shape and
topology optimization. SAE Trans. 1996, 105, 745–761.
77. Mlejnek, H.P. Some aspects of the genesis of structures. Struct. Optim. 1992, 5, 64–69. [CrossRef]
78. Stolpe, M.; Svanberg, K. An alternative interpolation scheme for minimum compliance topology optimization. Struct. Multidiscip.
Optim. 2001, 22, 116–124. [CrossRef]
79. Pedersen, C.B.W.; Allinger, P. Industrial implementation and applications of topology optimization and future needs. In
IUTAM Symposium on Topological Design Optimization of Structures, Machines and Materials: Status and Perspectives; Springer:
Berlin/Heidelberg, Germany, 2006; pp. 229–238.
80. Bendsøe, M.P.; Sigmund, O. Material interpolation schemes in topology optimization. Arch. Appl. Mech. 1999, 69, 635–654.
[CrossRef]
81. Clausen, P.M.; Pedersen, C.B.W. Non-parametric large scale structural optimization for industrial applications. In III Euro-
pean Conference on Computational Mechanics: Solids, Structures and Coupled Problems in Engineering: Book of Abstracts; Springer:
Berlin/Heidelberg, Germany, 2006; p. 482.
82. Svanberg, K. The method of moving asymptotes—a new method for structural optimization. Int. J. Numer. Methods Eng. 1987,
24, 359–373. [CrossRef]
83. Kabus, S.; Pedersen, C.B.W. Optimal bearing housing designing using topology optimization. J. Tribol. 2012, 134, 021102.
[CrossRef]
84. Søndergaard, M.B.; Pedersen, C.B.W. Applied topology optimization of vibro-acoustic hearing instrument models. J. Sound Vib.
2014, 333, 683–692. [CrossRef]
85. Hansen, L.V. Topology optimization of free vibrations of fiber laser packages. Struct. Multidiscip. Optim. 2005, 29, 341–348.
[CrossRef]
86. Olhoff, N.; Du, J. Topology optimization of vibrating bi-material structures with respect to sound radiation. In IUTAM Symposium
on Topological Design Optimization of Structures, Machines and Materials: Status and Perspectives; Springer: Berlin/Heidelberg,
Germany, 2006; pp. 43–52.
87. JOG, C.S. Topology design of structures subjected to periodic loading. J. Sound Vib. 2002, 253, 687–709. [CrossRef]
88. Sigmund, O.; Søndergaard Jensen, J. Systematic design of phononic band–gap materials and structures by topology optimization.
Philos. Trans. R. Soc. London. Ser. A Math. Phys. Eng. Sci. 2003, 361, 1001–1019. [CrossRef]
89. Tcherniak, D. Topology optimization of resonating structures using SIMP method. Int. J. Numer. Methods Eng. 2002, 54, 1605–1622.
[CrossRef]
90. Guo, L.; Wang, X.; Meng, Z.; Yu, B. Reliability-based topology optimization of continuum structure under buckling and
compliance constraints. Int. J. Numer. Methods Eng. 2022, 123, 4032–4053. [CrossRef]
91. Meng, Z.; Pang, Y.; Pu, Y.; Wang, X. New hybrid reliability-based topology optimization method combining fuzzy and probabilistic
models for handling epistemic and aleatory uncertainties. Comput. Methods Appl. Mech. Eng. 2020, 363, 112886. [CrossRef]
92. Meng, Z.; Keshtegar, B. Adaptive conjugate single-loop method for efficient reliability-based design and topology optimization.
Comput. Methods Appl. Mech. Eng. 2019, 344, 95–119. [CrossRef]
93. Meng, Z.; Wu, Y.; Wang, X.; Ren, S.; Yu, B. Robust topology optimization methodology for continuum structures under
probabilistic and fuzzy uncertainties. Int. J. Numer. Methods Eng. 2021, 122, 2095–2111. [CrossRef]
94. Fernandes, P.; Ferrer, A.; Teixeira, P.; Parente, M.; Pinto, R.; Correia, N. Python Code for Stress Constrained Topology Optimization
in ABAQUS. 2023. [CrossRef]
Appl. Sci. 2023, 13, 12916 39 of 39
95. Bruggi, M. On an alternative approach to stress constraints relaxation in topology optimization. Struct. Multidiscip. Optim. 2008,
36, 125–141. [CrossRef]
96. Le, C.; Norato, J.; Bruns, T.; Ha, C.; Tortorelli, D. Stress-based topology optimization for continua. Struct. Multidiscip. Optim. 2010,
41, 605–620. [CrossRef]
97. Yang, L.; Lavrinenko, A.V.; Hvam, J.M.; Sigmund, O. Design of one-dimensional optical pulse-shaping filters by time-domain
topology optimization. Appl. Phys. Lett. 2009, 95, 261101. [CrossRef]
98. Huang, X.; Xie, Y.M. Bi-directional evolutionary topology optimization of continuum structures with one or multiple materials.
Comput. Mech. 2009, 43, 393–401. [CrossRef]
99. Bendsøe, M.P. Optimization of Structural Topology, Shape, and Material; Springer: Berlin/Heidelberg, Germany, 1995. [CrossRef]
100. Ferraro, S. Topology Optimization and Failure Analysis of Deployable Thin Shells with Cutouts; California Institute of Technology:
Pasadena, CA, USA, 2020.
101. Sigmund, O.; Petersson, J. Numerical instabilities in topology optimization: A survey on procedures dealing with checkerboards,
mesh-dependencies and local minima. Struct. Optim. 1998, 16, 68–75. [CrossRef]
102. Huang, X.; Xie, Y.M. Convergent and mesh-independent solutions for the bi-directional evolutionary structural optimization
method. Finite Elem. Anal. Des. 2007, 43, 1039–1049. [CrossRef]
103. Wang, F.; Lazarov, B.S.; Sigmund, O. On projection methods, convergence and robust formulations in topology optimization.
Struct. Multidiscip. Optim. 2011, 43, 767–784. [CrossRef]
104. Svanberg, K. Algorithm for Optimum Structural Design Using Duality. In Mathematical Programming Study; Number 20; Springer:
Berlin/Heidelberg, Germany, 1982; pp. 161–177. [CrossRef]
105. Fleury, C. Structural weight optimization by dual methods of convex programming. Int. J. Numer. Methods Eng. 1979,
14, 1761–1783. [CrossRef]
106. Deetman, A. GCMMA-MMA-Python Home Page. Available online: https://github.com/arjendeetman/GCMMA-MMA-Python
(accessed on 26 October 2023).
107. Svanberg, K. MMA and GCMMA Matlab Code Home Page. Available online: https://www.smoptit.se/ (accessed on
1 December 2023).
108. Virtanen, P.; Gommers, R.; Oliphant, T.; Haberland, M.; Reddy, T.; Cournapeau, D. SciPy 1.2.1: Fundamental Algorithms for
Scientific Computing in Python. Nat. Methods 2020, 17, 261–272. [CrossRef] [PubMed]
109. Nocedal, J.; Wright, S.J. Numerical Optimization; Springer Science & Business Media: Berlin/Heidelberg, Germany, 2006; pp. 1–664.
[CrossRef]
110. Byrd, R.H.; Hribar, M.E.; Nocedal, J. An interior point algorithm for large-scale nonlinear programming. SIAM J. Optim. 1999,
9, 877–900. [CrossRef]
111. development team van Rossum, P. The Python Language Reference Release 3.6.0; Network Theory Ltd.: Godalming, UK, 2017.
112. Buhl, T.; Pedersen, C.B.; Sigmund, O. Stiffness design of geometrically nonlinear structures using topology optimization. Struct.
Multidiscip. Optim. 2000, 19, 93–104. [CrossRef]
113. Duysinx, P.; Sigmund, O. New developments in handling stress constraints in optimal material distribution. In Proceedings
of the 7th AIAA/USAF/NASA/ISSMO Symposium on Multidisciplinary Analysis and Optimization, St. Louis, MO, USA,
2–4 September 1998; pp. 1501–1509. [CrossRef]
114. Bendsøe, M.P.; Díaz, A.R. A method for treating damage related criteria in optimal topology design of continuum structures.
Struct. Optim. 1998, 16, 108–115. [CrossRef]
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual
author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to
people or property resulting from any ideas, methods, instructions or products referred to in the content.