1 Introduction

In the past decades, the development of topology optimization has been rapidly progressing. Structures with high performance and minimum material utilization can be achieved by using topology optimization. Most of the early works on topology optimization focused on maximizing structural stiffness (Bendsøe and Kikuchi 1988; Rozvany et al. 1992; Xie and Steven 1993). Later, other effects have also been considered by researchers, such as natural frequencies (Huang et al. 2010), multiple materials (Huang and Xie 2009; Li and Xie 2021), structural complexity (He et al. 2020, 2022), additive manufacturability (Bi et al. 2020, 2022), and principal stress (Amir 2017; Chen et al. 2021). In addition, topology optimization under buckling constraints is regarded as a challenging and important topic. The neglect of the buckling effect in topology optimization may lead to poor stability and unexpected failure of a structure with optimum stiffness.

At present, the solid isotropic material with penalization (SIMP) method has been commonly used in buckling-constrained topology optimization. A typical issue of the SIMP material model is the appearance of pseudo buckling modes in low-density regions, which would generate incorrect sensitivities and poor convergence in the optimization process (Bruyneel et al. 2008). Many researchers have attempted to alleviate the difficulties in the eigenvalue-related optimization caused by the pseudo-buckling modes. For example, Neves et al. (1995) proposed to ignore the stress stiffness of the low-density elements. However, Kemmler et al. (2005) pointed out that such a cut-off method could lead to non-differentiable functions. Bendsøe and Sigmund (2004) suggested a smooth version of this approach by employing two different material interpolation schemes for stiffness and stress stiffness matrices. This approach has been proven to be effective in eliminating pseudo buckling modes in many studies (Munk et al. 2017; Yi et al. 2019; Dalklint et al. 2021; Ferrari et al. 2021). Besides, Gao and Ma (2015) proposed a method that combined the eigenvalue shift and pseudo mode identification to avoid the influence of pseudo buckling modes.

Another challenge in buckling-constrained topology optimization is the complexity in sensitivity analysis of buckling load factors (BLFs). Buckling analysis based on a non-linear equilibrium equation was adopted in a few studies for topology optimization (Rahmatalla and Swan 2003; Lindgaard and Lund 2010; Lindgaard and Dahl 2013). Despite the fact that non-linear analysis provides an accurate description of the buckling phenomenon, the high computational cost hinders its widespread utilization in topology optimization. To improve the computational efficiency of nonlinear analysis, Pedersen and Pedersen (2018) suggested the use of non-incremental analysis and proposed a simple sensitivity analysis along with recursive redesign. In contrast, linear buckling analysis has been commonly employed in topology optimization due to its ease of implementation and acceptable computational cost (Ferrari and Sigmund 2019). The stress stiffness matrix in the buckling sensitivity is a function of design variables and displacement through the stress field (Rodrigues et al. 1995). To reduce computational costs, Bruyneel et al. (2008) proposed to carry out the sensitivity analysis in a simplified way by neglecting the stress state variations. However, Luo and Tong (2015) indicated that by doing so, the sensitivity analysis of buckling constraints was treated in the same way as that of natural frequencies, which could cause errors in the optimization process. To avoid this issue, sensitivity analysis including the stress variations was used in more recent studies (Gao and Ma 2015; Ferrari and Sigmund 2019; Gao et al. 2020; Zhang et al. 2022). To overcome the difficulties in setting up buckling analysis, Ferrari et al. (2021) presented a 250-line MATLAB code that significantly reduced computational costs. Besides, BLFs may be non-differentiable when mode switching and repeat eigenvalues exist in the optimization process (Seyranian et al. 1994). Thus, a large number of buckling modes need to be considered in the optimization problem (Bruyneel et al. 2008). To reduce the multiple constraints into a single and differentiable one, Huang et al. (2010) took the average of the sensitivities of the multiple eigenvalues with similar values. In addition, the Kreisselmeier-Steinhauser (KS) aggregation function (Kreisselmeier and Steinhauser 1979) was employed in many studies to approximate the maximum buckling constraint (Gao et al. 2020; Ferrari et al. 2021; Zhang et al. 2022).

The method of moving asymptotes (MMA) algorithm has been commonly used to solve buckling-constrained problems (Lindgaard and Dahl 2013; Gao and Ma 2015). Besides, Ferrari et al. (2021) employed an optimizer called ‘ocUpdate’ in which the buckling constraints were incorporated into the objective function using a Lagrangian multiplier determined by the bisection method. Alternatively, the augmented Lagrange multiplier has an additional penalty term, that is, the augmentation, which can be adjusted to control the contribution of the constraints to the overall sensitivity (Otomori et al. 2015; Wei et al. 2018). To the best of the authors’ knowledge, no augmented Lagrangian multipliers have been developed for buckling-constrained topology optimization.

This study proposes a novel methodology based on bi-directional evolutionary structural optimization (BESO) for buckling-constrained topology optimization to alleviate the impact of pseudo buckling modes. The BESO method benefits from using two statuses (void and solid) for the design variables, thus avoiding the numerical problems associated with intermediate densities in buckling-constrained optimization. The KS function is employed to aggregate multiple buckling constraints into a single one. Furthermore, an augmented Lagrangian multiplier is developed for the consideration of convergence. Besides, one obstacle to the BESO method is that there is no control over the evolutionary rate once the volume fraction is reached. Therefore, a modified design variable update scheme is proposed to solve this problem.

The remainder of the paper is structured as follows. Formulas and procedures of the buckling-constrained BESO method are introduced in Sect. 2, followed by four numerical examples in Sect. 3 to demonstrate the effectiveness of the proposed approach. Concluding remarks are given in Sect. 4.

2 Buckling-constrained BESO method

In this section, the proposed buckling-constrained BESO method is introduced. In this method, an augmented Lagrangian multiplier is developed to combine the objective function and buckling constraints. The KS aggregation function is used to approximate the maximum buckling constraint so as to reduce multiple buckling constraints into a single one. Besides, a modified design variable update scheme is proposed to control the evolutionary rate after the volume fraction is reached.

2.1 Problem statement

The mathematical model for minimizing compliance subjected to buckling constraints is stated as

$$ \begin{array}{*{20}c} {\left\{ {\begin{array}{*{20}c} {Min:~C~ = ~\frac{1}{2}\varvec{u}^{T}\varvec{ Ku}} \\ {Subject~to:~\varvec{Ku} = \varvec{F}} \\ {V\left( x \right) = \sum x_{i} v_{i} - V^{*} = 0} \\ {x_{i} = x_{{\min }} ~or~1,~i = 1,~2,~...,~N.} \\ {\lambda _{1} \ge \underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda } } \\ \end{array} } \right.} \\ \end{array} $$
(1)

where \(C\) is the mean compliance, \({\varvec{K}}\) and \({\varvec{u}}\) are the global stiffness matrix and the displacement vector, respectively. \({\varvec{F}}\) is the load applied to the structure. \({v}_{i}\) is the volume of the corresponding element and \({V}^{*}\) is the predefined volume fraction. \({\lambda }_{1}\) is the lowest BLF and \(\underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }\) is the prescribed buckling constraint. \({x}_{i}\) is the binary design variable of an individual element, which equals to either \({x}_{min}\) (void) or 1 (solid).

2.2 Sensitivity analysis

In this study, two distinct material interpolation schemes are employed for stiffness and stress stiffness matrices to restrain pseudo-buckling modes (Bendsøe and Sigmund 2007; Huang et al. 2010), which are given by Eq. (2).

$$\begin{array}{c}\left\{\begin{array}{c}{E}_{K}\left({x}_{i}\right)=\left[\frac{{x}_{min}-{x}_{min}^{p}}{1-{x}_{min}^{p}}\left(1-{x}_{i}^{p}\right)+{x}_{i}^{p}\right]E\qquad \left(0<{x}_{min}\le {x}_{i}\le {1}\right)\\ {E}_{G}\left({x}_{i}\right)={x}_{i}^{p}E\end{array}\right.\end{array}$$
(2)

where \(p\) is the penalty exponent, and \(E\) is the Young’s modulus of the solid element. The sensitivity of the compliance with respect to the change in the design variable can be expressed as

$$\begin{array}{c}\frac{\partial C}{\partial {x}_{i}}=-\frac{1}{2}{{\varvec{u}}}^{T}\frac{\partial {\varvec{K}}}{\partial {x}_{i}}\varvec{u}\end{array}$$
(3)

Linear buckling analysis is defined as

$$\begin{array}{c}\left({\varvec{K}}+{\lambda }_{j}{\varvec{G}}\right){\boldsymbol{\varvec{\varphi }}}_{j}=0\end{array}$$
(4)

where \({\varvec{K}}\) and \({\varvec{G}}\) are the stiffness and stress stiffness matrices, respectively, and \({\lambda }_{j}\) and \({\boldsymbol{\varvec{\varphi }}}_{j}\) are the jth BLF and the corresponding buckling mode vector, respectively. To maximize the BLF \({\lambda }_{j}\), its inverse value \({\mu }_{j}\) shall be minimized, thus Eq. (4) can be restated as

$$\begin{array}{c}\left({\varvec{G}}+{\mu }_{j}{\varvec{K}}\right){\boldsymbol{\varvec{\varphi }}}_{j}=0\end{array}$$
(5)

\({\mu }_{j}\) is the eigenvalue of the above equation, therefore, the minimum BLF \({\lambda }_{1}\) is equal to \({\text{1/max}\ \mu }_{j}=\text{1/}{\mu }_{1}\), where

$$\begin{array}{c}{\mu }_{j}=-\frac{{\boldsymbol{\varvec{\varphi }}}_{j}^{T}{\varvec{G}}{\boldsymbol{\varvec{\varphi }}}_{j}}{{\boldsymbol{\varvec{\varphi }}}_{j}^{T}{\varvec{K}}{\boldsymbol{\varvec{\varphi }}}_{j}}\end{array}$$
(6)

The eigenvectors \({\boldsymbol{\varvec{\varphi }}}_{j}\) fulfil the orthonormalization condition:

$$\begin{array}{c}{\boldsymbol{\varvec{\varphi }}}_{j}^{{\varvec{T}}}\varvec{K}{\boldsymbol{\varvec{\varphi }}}_{k}={\delta }_{jk}\end{array}$$
(7)

where \({\delta }_{jk}\) is Kronecker delta. Then the maximum buckling constraint is approximated by the KS aggregation function (Kreisselmeier and Steinhauser 1979)

$$\begin{array}{c}{\mu }^{KS}={\mu }_{1}+\frac{1}{\rho }{\text{l}}{\text{n}}\left(\sum\limits_{i=1}^{q}{e}^{\rho \left({\mu }_{j}-{\mu }_{1}\right)}\right)\end{array}$$
(8)

where \(q\) is the number of computed eigenvalues. The number of buckling modes to be considered is dependent on the tendency to eigenvalue coalescing of each case. In this study, the lowest 12 buckling modes are computed, which seem to be sufficient for the problems considered. \(\rho\) is the aggregation factor. In this paper, \(\rho\) is set to 160, which has been shown to be appropriate for buckling optimization problems considered by Ferrari et al. (2021). To be specific, the numerical stability of the KS function is not negatively influenced by such a high \(\rho\) value, and a good approximation of constrained aggregations can be achieved.

The approximated buckling load factor sensitivity, i.e., the derivative form of Eq. (8), is written as (Raspanti et al. 2000)

$$\begin{array}{c}\frac{\partial {\mu }^{KS}}{\partial {x}_{i}}=\frac{{\sum }_{i=1}^{q}{e}^{\rho \left({\mu }_{j}-{\mu }_{1}\right)}\frac{\partial {\mu }_{j}}{\partial {x}_{i}}}{{\sum }_{i=1}^{q}{e}^{\rho \left({\mu }_{j}-{\mu }_{1}\right)}}\end{array}$$
(9)

where the buckling load factor sensitivity is calculated as

$$\begin{array}{c}\frac{\partial {\mu }_{j}}{\partial {x}_{i}}=-\left[{\varvec{{\varphi }}}_{j}^{T}\left(\frac{\partial {\varvec{G}}}{\partial {x}_{i}}+{\mu }_{j}\frac{\partial {\varvec{K}}}{\partial {x}_{i}}\right){\varvec{\varphi }}_{j}- {{{\varvec{\upsilon}}}_{j}}^{T}\frac{\partial {\varvec{K}}}{\partial {x}_{i}}{\varvec{u}}\right]\end{array}$$
(10)

The second term on the right side is the so-called adjoint term, and \({{\varvec{\upsilon}}}_{j}\) is the jth adjoint vector, which can be solved by

$$\begin{array}{c}\varvec{K}{{\varvec{\upsilon}}}_{j}={\varvec{\varphi }}_{j}^{T}\frac{\partial {\varvec{G}}}{\partial {\varvec{u}}}{\varvec{\varphi }}_{j}\end{array}$$
(11)

The sensitivity of buckling constraints [Eq. (9)] is added to the sensitivity of compliance [Eq. (3)] via an augmented Lagrangian multiplier \(\Lambda\). Thus, the overall sensitivity can be found as

$$\begin{array}{c}\frac{\partial f}{\partial {x}_{i}}=\frac{\partial C}{\partial {x}_{i}}+\Lambda \frac{\partial {\mu }^{KS}}{\partial {x}_{i}}=-\frac{1}{2}{{\varvec{u}}}^{T}\frac{\partial {\varvec{K}}}{\partial {x}_{i}}\varvec{u}-\Lambda \frac{{\sum }_{i=1}^{q}{e}^{\rho \left({\mu }_{j}-{\mu }_{1}\right)}\left[{\varvec{\varphi }}_{j}^{T}\left(\frac{\partial {\varvec{G}}}{\partial {x}_{i}}+{\mu }_{j}\frac{\partial {\varvec{K}}}{\partial {x}_{i}}\right){\varvec{\varphi }}_{j}- {{{\varvec{\upsilon}}}_{j}}^{T}\frac{\partial {\varvec{K}}}{\partial {x}_{i}}{\varvec{u}}\right]}{{\sum }_{i=1}^{q}{e}^{\rho \left({\mu }_{j}-{\mu }_{1}\right)}}\end{array}$$
(12)

Therefore, the sensitivity of element \(i\) in the BESO technique can be written as

$$\begin{array}{c}{\alpha }_{i}=-\frac{\partial f}{\partial {x}_{i}}=\frac{1}{2}{{\varvec{u}}}^{T}\frac{\partial {\varvec{K}}}{\partial {x}_{i}}\varvec{u}+\Lambda \frac{{\sum }_{i=1}^{q}{e}^{\rho \left({\mu }_{j}-{\mu }_{1}\right)}\left[{\varvec{\varphi }}_{j}^{T}\left(\frac{\partial {\varvec{G}}}{\partial {x}_{i}}+{\mu }_{j}\frac{\partial {\varvec{K}}}{\partial {x}_{i}}\right){\varvec{\varphi }}_{j}- {{{\varvec{\upsilon}}}_{j}}^{T}\frac{\partial {\varvec{K}}}{\partial {x}_{i}}{\varvec{u}}\right]}{{\sum }_{i=1}^{q}{e}^{\rho \left({\mu }_{j}-{\mu }_{1}\right)}}\end{array}$$
(13)

The augmented Lagrangian multiplier \(\Lambda\) is determined as

$$\begin{array}{c}\Lambda = \left\{\begin{array}{ll}0 &{ \lambda }_{1} > \underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }\, {\text{a}}{\text{n}}{\text{d}}\, \varpi =0\\ \frac{{\gamma }^{k}\times \underset{\raise0.2em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }-{\lambda }_{1}}{\underset{\raise0.2em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }} &{ \lambda }_{1} \le \underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }\, {\text{o}}{\text{r}} \,\varpi =1\end{array}\right.\end{array}$$
(14)

where \({\gamma }^{k}\) is the additional penalty term (the augmentation) of the Lagrangian multiplier in the \(k\) th iteration of the optimization. \(\varpi\) is the status of buckling constraints. Specifically, \(\varpi =0\) indicates that the buckling constraints have never been activated; otherwise, \(\varpi\) is switched to 1 once buckling constraints have been activated during the optimization process. In this way, the continuity of the multiplier can be ensured. \({\gamma }^{k}\) is updated using the following scheme.

$$\begin{array}{c}{\gamma }^{k+1}=\left\{\begin{array}{c}\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!{\gamma }^{k}\times \eta\ \ \,\,\,\Delta {\lambda }_{1}\le \xi\, {\text{w}}{\text{h}}{\text{e}}{\text{n}}\,\,\frac{\left|\underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }-{\lambda }_{1}\right|}{\underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }}>{5}\%\\ {\gamma }^{k}+{\delta }_{\eta } \ \ \Delta {\lambda }_{1}\le \xi \,and\, {\text{e}}{\text{r}}{\text{r}}{\text{o}}{\text{r}}\,\le \tau\, {\text{w}}{\text{h}}{\text{e}}{\text{n}}\,\frac{\left|\underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }-{\lambda }_{1}\right|}{\underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }}\le {5}\%\\ \!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!{\gamma }^{k} \,\,\,\,\, \,\,\,\ \ {\text{others}}\end{array}\right.\end{array}$$
(15)

where \(\eta\) is a predefined update coefficient. \({\gamma }^{0}={1}\) and \(\eta =\text{1.03}\) are set as default values, which have been numerically tested as suitable for most cases. A smalle r or larger value of \(\eta\) can be selected to decrease or increase the update step. \({\delta }_{\eta }\) is calculated as \({\delta }_{\eta }=\eta -{1}\). \(\Delta {\lambda }_{1}\) is defined as the normalized value of the change of \({\lambda }_{1}\) over the last two iterations, i.e., \(\Delta {\lambda }_{1}=\left|{\lambda }_{1}^{k}-{\lambda }_{1}^{k-1}\right|/{\lambda }_{1}^{k}\). \(\xi\) is an update threshold and typically \(\xi ={10}^{-3}\) is adopted. \({\text{error}}\le \tau\) is the convergence criterion that is introduced in Sect. 2.4. To improve computational efficiency and achieve convergence, two criteria and schemes are devised in this study for updating \({\gamma }^{k}\). When the difference between \({\lambda }_{1}\) and \(\underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }\) is large (\(\left|\underline{\lambda }-{\lambda }_{1}\right|/\underline{\lambda }>{5}\%\)), the update criterion is relaxed (\(\Delta {\lambda }_{1}\le \xi\)) and the increment of \({\gamma }^{k}\) is larger; when \({\lambda }_{1}\) is close to \(\underline{\lambda }\) (\(\left|\underline{\lambda }-{\lambda }_{1}\right|/\underline{\lambda }\le {5}\%\)), the update criterion is tightened (\(\Delta {\lambda }_{1}\le \xi\) and \({\text{error}}\le \tau\)), and the increment of \({\gamma }^{k}\) becomes smaller.

The aforementioned sensitivity members shall be averaged by a filter scheme to enforce a mesh-independent solution (Sigmund and Petersson 1998). The filter scheme is determined by generating a circular sub-domain \({\Omega }_{i}\) centred at the centroid of the ith element with a radius of \({r}_{min}\). Nodes and elements inside the sub-domain \({\Omega }_{i}\) are used to calculate the averaged sensitivity number of the jth element \({\widetilde{\alpha }}_{j}\), as given by Eq. (16). The same method was also used by (Huang and Xie 2007).

$$\begin{array}{c}{\widetilde{\alpha }}_{j}=\frac{{\sum }_{i=1}^{N}{\omega }_{ij}{\alpha }_{i}}{{\sum }_{i=1}^{N}{\omega }_{ij}}\end{array}$$
(16)

where \(N\) denotes the number of the neighbouring elements. \({\omega }_{ij}\) is the linear weight factor related to the distance (\({r}_{ij}\)) between the centroids of the centred element j and its neighbouring elements i

$$\omega_{ij} = r_{\min } - r_{ij}\quad (j = 1, 2, \ldots , N)$$
(17)

where \({r}_{min}\) is the filter radius. The sensitivity number is averaged by the previous three historical information for stability and convergence concerns. This process is expressed by

$$\begin{array}{c}{\widetilde{\alpha }}_{j}^{k}=\frac{{\widetilde{\alpha }}_{j}^{k}+{\widetilde{\alpha }}_{j}^{k-1}+{\widetilde{\alpha }}_{j}^{k-2}}{3}\end{array}$$
(18)

where k is the current iteration number. Compared to the conventional BESO method, where the sensitivity number is averaged by the previous two historical information (Huang and Xie 2010), the use of previous three historical sensitivity values in this study could enhance the stability during the optimization process. A further study of the dependence of the optimization history on the number of averaged steps can be systematically investigated in future research.

2.3 Design variable update scheme

The target volume for the next iteration can be determined by adding or deleting elements as

$$\begin{array}{c}{V}_{k+1}={V}_{k}\left(1-ER\right)\end{array}$$
(19)

where \(ER\) is named the evolutionary volume ratio. Once the volume constraint is satisfied, the volume will be kept constant for the subsequent iterations as

$$\begin{array}{c}{V}_{k+1}={V}^{*}\end{array}$$
(20)

Then solid elements are switched from 1 to \({x}_{min}\) if the following criterion is met

$$\begin{array}{c}{\widetilde{\alpha }}_{j}\le {\alpha }_{th}\end{array}$$
(21)

Void elements are switched from \({x}_{min}\) to 1 if the following criterion is met

$$\begin{array}{c}{\widetilde{\alpha }}_{j}>{\alpha }_{th}\end{array}$$
(22)

where \({\alpha }_{th}\) is the threshold of the sensitivity number that can be determined by the bisection algorithm (Huang and Xie 2010). However, it should be noted that there is no control over \(ER\) once the volume fraction is reached. This issue can lead to problematic designs in constrained optimization problems when starting from a design domain that has already reached the volume fraction. Therefore, a modified scheme is proposed in this study for determining the update threshold, which includes three steps as follows.

  1. 1.

    Calculate the percentage of the solid elements (\({\delta }_{s}\)) that have been changed to voids by using the bisection algorithm (Huang and Xie 2010).

  2. 2.

    If the volume does not reach the target volume, or \({\delta }_{s}\le ER\), skip step 3. Otherwise, the threshold sensitivity numbers for removing (\({\alpha }_{th}^{del}\)) and adding (\({\alpha }_{th}^{add}\)) elements are recalculated in step 3.

  3. 3.

    Sort the sensitivity numbers of solid elements from low to high. \({\alpha }_{th}^{del}\) is the sensitivity number of the mth element ranked in the sorted array, where m is calculated by multiplying \(ER\) and the number of solid elements. Similarly, \({\alpha }_{th}^{add}\) is the sensitivity number of the mth element ranked in the sorted sensitivity numbers of void elements (from high to low). For example, there are 1000 solid elements and 1000 void elements in the design domain, and it is assumed that \(ER=1\%\). The sensitivity numbers of solid elements are sorted as \({\alpha }_{1}^{s}<{\alpha }_{2}^{s}\dots <{\alpha }_{1000}^{s}\), then \({\alpha }_{th}^{del}={\alpha }_{10}^{s}\). The sensitivity numbers of void elements are sorted as \({\alpha }_{1}^{v}>{\alpha }_{2}^{v}\dots >{\alpha }_{1000}^{v}\), then \({\alpha }_{th}^{add}={\alpha }_{10}^{v}\). Finally, the solid elements with sensitivity numbers \(\le {\alpha }_{th}^{del}\) are switched from 1 to \({x}_{min}\), and the void elements with sensitivity numbers \(\ge {\alpha }_{th}^{add}\) are switched from \({x}_{min}\) to 1.

2.4 Convergence criterion

The optimization process stops when buckling constraints, volume constraint and convergence criterion are all satisfied. The convergence criterion is defined in terms of the change in the objective function as

$$\begin{array}{c}\frac{\left|{\sum }_{i=1}^{M}{C}_{k-i+1}-{\sum }_{i=1}^{M}{C}_{k-M-i+1}\right|}{{\sum }_{i=1}^{M}{C}_{k-i+1}}\le \tau \end{array}$$
(23)

where \(k\) is the current iteration number, \(\tau\) is an allowable convergence tolerance, and \(M\) is an integer number. In this study, \(M={5}\) is employed, denoting that the change in the mean compliance over the last 10 iterations is sufficiently small, e.g., \(\tau ={10}^{-3}\) to \({10}^{-5}\).

2.5 Overall procedure

The evolutionary iteration procedure of the presented buckling-constrained BESO method is given as follows.

  1. Step 1.

    Discretise the design domain, define boundary conditions and assign initial parameters, including volume fraction \({V}^{*}\), evolutionary ratio \(ER\), material penalty exponent \(p\), filter radius \({r}_{min}\), buckling constraint \(\underline{\lambda }\), and update coefficient \(\eta\);

  2. Step 2.

    Obtain displacement \({\varvec{U}}\) and compliance \(C\) by static analysis;

  3. Step 3.

    Obtain the BLFs \({\lambda }_{j}\) and buckling mode vector \({\varvec{\varphi }}_{j}\) by linear buckling analysis;

  4. Step 4.

    Determine the augmented Lagrangian multiplier;

  5. Step 5.

    Calculate the sensitivity numbers of all elements;

  6. Step 6.

    Improve the sensitivity numbers using the filter scheme;

  7. Step 7.

    Stabilize the evolutionary process by averaging the sensitivity numbers of the past three iterations;

  8. Step 8.

    Update design variables by using the proposed update scheme;

  9. Step 9.

    Return to Step 2 if the volume constraint, buckling constraints, or the convergence criterion is not satisfied.

3 Numerical examples

In this section, four numerical examples are investigated to illustrate the effectiveness of the proposed algorithm. In all examples, the parameters are set as \({E}_{1}={1}\), \(\nu =\text{0.3}\), \(p={3}\), and \({x}_{\mathrm{min}}={10}^{-{6}}\).

3.1 Compressed column

This example aims to maximize the buckling resistance of a compressed column. As shown in Fig. 1a, the rectangular design domain is discretized by 240 × 480 elements. Plane stress elements are employed, and the thickness is set as unity. A downward force \(F={1}\times {10}^{-3}\) is evenly distributed over a length of \(l=b/{15}\) at the top. The bottom of the design domain is fixed.

Fig. 1
figure 1

Compressed column example: a boundary conditions; b stiffness design; c evolutionary histories of the first four BLFs and modal strain energy ratios; di structural topologies at different iterations; and j the optimized topology obtained by Ferrari et al. (2021)

The stiffness optimization is conducted with \(b=1\), \(V^{*} = 25{\%}\), \(ER=1{\%}\) and \({r}_{min}={4}\) × the element side length. The optimized design is shown in Fig. 1b, which appears to be a simple column and has the smallest BLF \({\lambda }_{1}=\text{0.89}\), meaning the stiffness design would buckle under the applied load.

Therefore, the buckling resistance is improved by maximizing the lowest BLF \({\lambda }_{1}\). In this case, the sensitivity of the BLFs [Eq. (9)] is the only term in the overall sensitivity, and the convergence criterion [Eq. (23)] applies to the KS aggregation of the BLFs. Figure 1c shows the evolutionary histories of the first four BLFs and the corresponding modal strain energy ratios \({r}_{j}^{v}\) (j = 1—4) proposed by Gao and Ma (2015) for identifying pseudo buckling modes. \({r}_{j}^{v}\) is defined as the contribution of the modal strain energy (in the jth buckling mode) of the element nodes in the void region to the total modal strain energy. It can be seen that the modal strain energy ratios are very close to zero throughout the optimization process, meaning the nodes in the void region contribute little to the total modal strain energy, and no pseudo-buckling modes occur in the first four buckling modes (Gao and Ma 2015). \({\lambda }_{1}\) (the blue curve) increases from 0.89 to 9.21 with compliance increased by 44.4% from \(\text{8.52}\times {10}^{-6}\) to \(\text{1.23}\times {10}^{-5}\). The structural topologies at different iterations are shown in Fig. 1d–i. The initial column is separated into two bars connected by thin cross-like bars, and the distance between the separated bars is gradually increased in later iterations. It can be noticed that a sudden drop of \({\lambda }_{1}\) occurs at iteration 200 (Fig. 1c), which is due to the elimination of thin bars in the upper structure (see the bars highlighted by red circles in Fig. 1f). Afterwards, \({\lambda }_{1}\) gradually recovers as the remaining upper bars become thicker (see the bars highlighted by the red circle in Fig. 1g). The BLF maximization design of the compressed column obtained by Ferrari et al. (2021) using the SIMP method is shown in Fig. 1. As can be seen, the geometry of the present structure (Fig. 1) is similar to the design of the SIMP method (Fig. 1).

3.2 Two-bar frame

The second example shows the geometrical characteristics of the compression and tension members in optimal designs obtained with different buckling constraints.

Figure 2a shows the boundary condition and the design domain, which is discretized by 90 × 210. Plane stress elements are employed, and the thickness is set as unity. A downward force \(F={2}\times {10}^{-2}\) is spread over a length of \(l=b/{10}\) at the middle of the right side. The left side of the domain is fixed near the upper and lower ends with a length of \(l\). \(b=1\), \({V}^{*}=\text20{\%}\), \(ER=\text1{\%}\) and \({r}_{min}={2}\) × the element side length are employed in this example. The stiffness design is shown in Fig. 2b, consisting of upper and lower bars. The first three buckling modes of the two-bar frame are illustrated in Fig. 2c, coloured from blue to red, which corresponds to the logarithm of the normalized strain energy density from low to high. It can be seen that the lower bar has a higher level of strain energy as a compressed member. On the contrary, the upper bar is under tension and has lower strain energy. The lowest BLF \({\lambda }_{1}=\text{0.89}\), which means that the buckling occurs on the lower bar at the critical load \({F}_{cr}={\lambda }_{1}\times F=\text{1.78}\times {10}^{-{2}}\).

Fig. 2
figure 2

Two-bar frame example: a design domain and boundary conditions; b stiffness design; and c first three buckling modes. Buckling modes are coloured from blue to red, corresponding to the logarithm of the normalized strain energy density from low to high

The buckling-constrained optimization is then carried out based on the stiffness design (Fig. 2b). \(ER\) is reduced to 0.4% for stabilization consideration. The optimized designs with increasing buckling constraints \(\underline{\lambda}\) are shown in Fig. 3. It can be seen that the material is relocated from the upper bar to the lower bar, which is divided into two bars connected by thin members to resist buckling. Besides, a bar connecting the upper bar and the lower bar appears, and it becomes thicker and longer with the increase of \(\underline{\lambda}\) (see the bars highlighted by red circles in Fig. 3b–f). This bar increases the moment of inertia of the global structure and prevents the structure from rotating at the junction of the upper and lower bars (near the force).

Fig. 3
figure 3

Optimized designs of the two-bar frame with various buckling constraints

With the increment of BLFs, the compliance of the buckling-reinforced design is higher than that of the stiffness design. The increment of the compliance compared to the stiffness design is \(\Delta C=\text{2.6}{\%}\) when \(\underline {\lambda}\) = 1.50, while \(\Delta C\) can be 43.1% when \(\underline{\lambda}\) = 4.00. The stiffness reduction is mainly due to the thinner upper bar as well as the separated and bent lower bar in the buckling-reinforced design.

Figure 4 shows the evolutionary history of the compliance and the first four BLFs when \(\underline {\lambda}\) = 4.00 (Fig. 3f). Generally speaking, \({\lambda }_{1}\) smoothly increases and the other BLFs gradually get close to \({\lambda }_{1}\). It is noticed that the curves of \({\lambda }_{1}\) and \({\lambda }_{2}\) almost overlap at later stage, which is referred to as a multimodal case. As mentioned in Sect. 1, the sensitivity of the multiple BLFs is not unique, so that the non-differentiable sensitivity may be obtained due to repeat eigenvalues and mode switching. Thus, the KS aggregation function is employed to approximate the maximum buckling constraint.

Fig. 4
figure 4

Evolutionary histories of compliance and first four BLFs when \(\underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }=\text{4.00}\)

The first twelve buckling modes of the buckling design with \(\underline{\lambda}\) = 4.00 (Fig. 3f) are shown in Fig. 5. It can be seen that these buckling modes are all real buckling modes, and no pseudo buckling modes are observed.

Fig. 5
figure 5

First twelve buckling modes of buckling design with \(\underset{\raise0.3em\hbox{$\smash{\scriptscriptstyle-}$}}{\lambda }=\text{4.00}\). Buckling modes are coloured from blue to red, corresponding to the logarithm of the normalized strain energy density from low to high

Table 1 shows the effect of the predefined update coefficient \(\eta\) on compliance and required optimization iterations. When \(\underline\lambda=\text{2.0}\), by defining \(\eta =\text{1.03}\), 29.7% fewer iterations with only 0.1% extra compliance increment can be achieved compared to the case with \(\eta =\text{1.01}\). When \(\underline\lambda=\text{3.0}\), \(\eta =\text{1.04}\) results in 0.7% extra compliance increment but 11.8% fewer iterations than \(\eta =\text{1.02}\). Larger \(\eta\) leads to a larger \({\gamma }^{k}\) when it is updated, and it means a larger update step of the multiplier \(\Lambda\). As shown in Eq. (12), the overall sensitivity is equal to the compliance sensitivity plus the buckling sensitivity multiplied by \(\Lambda\). Thus, a larger update step of the multiplier \(\Lambda\) leads to a larger contribution of the buckling sensitivity to the overall sensitivity. In the design variable update process, the criterion of adding/deleting elements is determined by the sensitivity value (as shown in Sect. 2.3), which is more dependent on the buckling sensitivity when the multiplier \(\Lambda\) is larger.

Table 1 Impact of predefined update coefficient \(\eta\) on compliance and computational cost

3.3 Hollow square tube

This case shows a hollow square tube under external pressure, as illustrated in Fig. 6a. The width of the cross-section \(b=\text{1.9}\), and the thickness of the tube \(t=b/{10}\). The tube length is much larger than the dimension of the cross-section, hence plane strain elements are employed. Each side of the tube is under a pressure load \(P=\text{1.05}\times {10}^{-{3}}\) per unit area. The cross-section is optimized using the proposed algorithm. As the cross-section of the tube is symmetrical, to save computational costs, a quarter of the cross-section (shaded blue area in Fig. 6a) is used, and the corresponding boundary conditions are shown in Fig. 6b. The width of the quarter section is \(b/{2}\), which is divided into 250 elements. As a quarter model, the vertical degrees of freedom of the left edge and the horizontal degrees of freedom of the bottom edge are fixed. The cross-section is designed as a sandwich structure, i.e., the inner and outer layers are non-design domains, each of which has a thickness of \(t/{10}\) (discretized using 5 elements), and the core area is the design domain.

Fig. 6
figure 6

Boundary conditions of hollow square tube: a full model and b a quarter of cross-section

Set \({V}^{*}=\text{50}{\%}\), \(ER=\text{1}{\%}\), and \({r}_{min}={6}\) × the element side length for stiffness optimization. The stiffness design and the recovered full model are shown in the first row of Fig. 7a and b. It can be seen that the optimum designs are oblique symmetric due to the even-distributed pressure. The principal stress distribution (first row of Fig. 7c and d) also shows the symmetric properties of the optimum designs. The lowest BLF \({\lambda }_{1}\) of the stiffness design is 0.54, corresponding to the critical load \({P}_{cr}={\lambda }_{1}\times P=\text{5.67}\times {10}^{-{4}}\) per unit area.

Fig. 7
figure 7

Results of stiffness design (first row) and buckling-constrained optimization (second row): a a quarter of cross-section; b recovered full model; c maximum principal stress (\({\sigma }_{1}\)); d minimum principal stress (\({\sigma }_{2}\)); e evolutionary histories of compliance and the first four BLFs

Buckling-constrained optimization is then conducted based on the stiffness design with \(ER=\text{0.2}{\%}\), \({r}_{min}={3}\) × the element side length, and \(\underline \lambda={1}\text{.00}\). The optimization results are shown in the second row of Fig. 7a and b. As can be seen, the material is relocated from the corners of the tube to the middle of each side (second row of Fig. 7b) and from tension members to the compression members (Fig. 7c and d). The lowest BLF \({\lambda }_{1}\) and the compliance increase from 0.54 to 1.00 and \(\text{7.47}\times {10}^{-{5}}\) to \(\text{8.12}\times {10}^{-{5}}\), respectively (Fig. 7e).

Figure 8 presents the buckling analysis of stiffness and buckling designs. It can be seen that the middle part at each side of the stiffness design (first row of Fig. 8) has a higher level of strain energy density. However, in the buckling-reinforced design (second row of Fig. 8), as the material is relocated to the middle of each side, the strain energy density distribution is more uniform, and the buckling phenomenon can be well suppressed.

Fig. 8
figure 8

First four buckling modes of stiffness design (first row) and buckling-constrained optimization (second row). Buckling modes are coloured from blue to red, corresponding to the logarithm of the normalized strain energy density from low to high

Furthermore, in the fundamental buckling mode of the 3D model, only in-plane buckling occurs, and no buckling is observed in the longitudinal direction. Therefore, an optimized design for preventing buckling in the cross-section is also of great significance.

Figure 9 shows the buckling-constrained optimization when starting from the stiffness design obtained with \({r}_{min}={3}\) × the element side length (other parameters remain the same). The stiffness design (first row of Fig. 9) possesses a better mechanical performance compared to that of Fig. 7, i.e., a higher fundamental BLF \({\lambda }_{1}\) of 0.85 and a lower compliance of \(\text{7.07}\times {10}^{-{5}}\). The buckling-constrained optimization design (second row of Fig. 9) has a compliance of \(\text{7.27}\times {10}^{-{5}}\) and the geometry is slightly different from that obtained when starting from the stiffness design with \({r}_{min}={6}\) × the element side length (the second row of Fig. 7a and b). The most distinct differences are the extra bars in the middle of each side, highlighted by red circles in Fig. 9b.

Fig. 9
figure 9

Results of the stiffness design obtained with \({r}_{min}={3}\) × the element side length (first row) and buckling-constrained optimization (second row): a a quarter of cross-section; b recovered full model; and c evolutionary histories of compliance and first two BLFs

Oscillations can be observed in the history of \({\lambda }_{1}\), indicated by red circles in Fig. 9c. While no oscillation occurs when starting from the stiffness design obtained with \({r}_{min}={6}\) × the element side (Fig. 7e). The use of the stiffness design obtained with a larger rmin as the initial design domain for buckling-constrained optimization can enhance structural redundancy. A higher level of structural redundancy may help prevent the BLF oscillations caused by the elimination of structural components during the optimization process.

Figure 10 shows the buckling-constrained optimization design obtained by starting from a full design domain with \({V}^{*}=\text{50}{\%}\), \(ER=\text{1}{\%}\), \({r}_{min}={3}\) × the element side length, and \(\underline\lambda={1}\text{.00}\). The final design has a compliance of \(\text{7.43}\times {10}^{-{5}}\) and the geometry (Fig. 10a and b) is similar to that shown in Fig. 9. The evolutionary histories of compliance and the first two BLFs are shown in Fig. 10c. The volume fraction is reached at the 69th iteration and therefore the compliance changes little in the subsequent optimization process. The buckling constraints are activated at the 42nd iteration when \({\lambda }_{1}<\underline{\lambda }\) and satisfied at the last (116th) iteration. Slight oscillations can be observed in the evolutionary history of \({\lambda }_{2}\) in Figs. 7e, 9c and 10c (and \({\lambda }_{3}\) in 7e). The amplitude between two consecutive iterations is within 0.2, and such small amplitudes have no harm to the KS aggregation of BLFs and the stability of the optimization process. Besides, it can be seen that the result of the buckling-constrained optimization is dependent on the structural property of the initial design. In this case, the buckling-constrained design has the lowest compliance when starting from the stiffness design obtained with \({r}_{min}={3}\) × the element side length.

Fig. 10
figure 10

Buckling-constrained optimization of the square tube when starting from a full design domain: a a quarter of cross-section; b recovered full model; and c evolutionary histories of compliance and first two BLFs

3.4 L-Shape beam

This case shows the buckling-constrained topology optimization of a long L-shape beam subjected to a linear load on the edge. As shown in Fig. 11a, the height of the section shape \(h={1}\), and the thickness \(t=\text{0.4}\times h\). The length of column is much larger than the height, and the plane strain elements are used. The top surface of the column is fixed, and a linear load \(q={3}\times {10}^{-{3}}\) per unit length is applied to the edge. As shown in Fig. 11b, the section shape is used as the design domain, and the height and the width are discretized using 300 elements, respectively. The force is spread on a length of \(h/{20}\) on the right edge to avoid stress concentration near the load point.

Fig. 11
figure 11

Boundary conditions of the L-shape beam: a full model and b cross-section

The first row of Fig. 12a shows the stiffness design, which is obtained by using \({V}^{*}=\text{40}{\%}\), \({ER}={1}{\%}\), and \({r}_{min}={10}\) × the element side length. The maximum and the minimum principal stress distributions (Fig. 12b and c) show the tension and compression members of the structure. It can be seen that the members on the left and bottom are in compression, while those in the middle and on the top right side are in tension. The lowest BLF of the stiffness design is only 0.30, and the critical load \({q}_{cr}={\lambda }_{1}\times q={9}\times {10}^{-{4}}\) per unit length.

Fig. 12
figure 12

Results of stiffness design (first row) and buckling-constrained optimization (second row): a final solution; b maximum principal stress (\({\sigma }_{1}\)); and c minimum principal stress (\({\sigma }_{2}\))

To obtain a design with higher buckling resistance, the buckling-constrained optimization is carried out using \(ER=\text{0.2}{\%}\), \({r}_{min}={3}\) × the element side length, and \({\underline\lambda}=\text{1.00}\). The obtained results are shown in the second row of Fig. 12. It can be seen that the material is transferred from the tension members to the compression members, and the moments of inertia of compression members are larger, leading to better buckling resistance.

Figure 13 shows the first four buckling modes of the stiffness design (first row) and the buckling-reinforced design (second row). The buckling phenomenon is observed in the compression members from both designs. The stiffness design exhibits a more localized buckling effect, whereas the buckling design exhibits a more global buckling effect. For instance, buckling occurs on multiple bars simultaneously in the first buckling mode (\({\varphi }_{1}\)), and the strain energy density distributes more evenly in buckling design. Compared to the stiffness design, the compliance of the buckling design increases by 4.2%.

Fig. 13
figure 13

First four buckling modes of stiffness design (first row) and buckling-constrained optimization (second row). Buckling modes are coloured from blue to red, corresponding to the logarithm of the normalized strain energy density from low to high

The numerical examples show that stiffness designs may exhibit poor stability in practical applications. In comparison, the proposed topology optimization with the consideration of buckling constraints can greatly improve the buckling resistance of a structure with only a small increase in compliance.

4 Conclusions

In this study, a novel buckling-constrained topology optimization algorithm is developed based on the BESO method. An augmented Lagrangian multiplier is proposed to integrate buckling constraints into the objective function. A design variable update scheme is developed to control the evolutionary rate when the volume fraction is reached. Four topology optimization designs are presented to show the validity and effectiveness of the proposed algorithm. Based on the numerical results, the main conclusions are summarized as follows.

  1. (1)

    By using the proposed augmented Lagrangian multiplier, the contribution of the buckling sensitivity to the overall sensitivity can be controlled by the augmentation \(\gamma\), which is adjusted based on a user-defined coefficient \(\eta\). A larger \(\eta\) can save the required number of iterations but slightly increase the compliance.

  2. (2)

    With the implementation of the augmented Lagrangian multiplier, the modified design variable update scheme and the enhanced stabilization scheme, excellent stability and convergence can be obtained from the proposed optimization process.

  3. (3)

    The lowest BLF \({\lambda }_{1}\) of the hollow square tube is improved from 0.54 to 1.00 with a small increment of compliance (8.7%). \({\lambda }_{1}\) of the L-shape beam is increased from 0.30 to 1.00 while the compliance is increased by only 4.2%.

This study contributes to the knowledge of buckling-constrained topology optimization by providing a novel algorithm and a series of numerical examples. As most current studies associated with buckling-constrained optimization focus on 2D examples, further research should extend the algorithm into 3D to solve more practical engineering problems. Experimental investigations on the buckling and post-buckling behaviour of structural components are needed to confirm the effectiveness of the algorithm in real engineering applications.