# zbMATH — the first resource for mathematics

Efficient topology optimization in MATLAB using 88 lines of code. (English) Zbl 1274.74310
Summary: The paper presents an efficient 88 line MATLAB code for topology optimization. It has been developed using the 99 line code presented by O. Sigmund [ibid. 21, No. 2, 120–127 (2001)] as a starting point. The original code has been extended by a density filter, and a considerable improvement in efficiency has been achieved, mainly by preallocating arrays and vectorizing loops. A speed improvement with a factor of 100 is obtained for a benchmark example with 7,500 elements. Moreover, the length of the code has been reduced to a mere 88 lines. These improvements have been accomplished without sacrificing the readability of the code. The 88 line code can therefore be considered as a valuable successor to the 99 line code, providing a practical instrument that may help to ease the learning curve for those entering the field of topology optimization. The paper also discusses simple extensions of the basic code to include recent PDE-based and black-and-white projection filtering methods. The complete 88 line code is included as an appendix and can be downloaded from the web site http://www.topopt.dtu.dk.

##### MSC:
 74P15 Topological methods for optimization problems in solid mechanics
##### Software:
CHOLMOD; Matlab; MILAMIN; na14; top88.m; top.m
Full Text:
##### References:
 [1] Alberty J, Carstensen C, Funken S (1999) Remarks around 50 lines of Matlab: short finite element implementation. Numer Algorithms 20(2–3):117–137 · Zbl 0938.65129 · doi:10.1023/A:1019155918070 [2] Alberty J, Carstensen C, Funken S, Klose R (2002) Matlab implementation of the finite element method in elasticity. Computing 69(3):239–263 · Zbl 1239.74092 · doi:10.1007/s00607-002-1459-8 [3] Allaire G (2009) Shape and topology optimization by the level set method. http://www.cmap.polytechnique.fr/$$\sim$$allaire [4] Bendsøe M (1989) Optimal shape design as a material distribution problem. Struct Optim 1:193–202 · doi:10.1007/BF01650949 [5] Bendsøe M, Sigmund O (2003) Topology optimization. Theory, methods and applications. Springer, Berlin · Zbl 1059.74001 [6] Bourdin B (2001) Filters in topology optimization. Int J Numer Methods Eng 50(9):2143–2158 · Zbl 0971.74062 · doi:10.1002/nme.116 [7] Bruns TE, Tortorelli DA (2001) Topology optimization of non-linear elastic structures and compliant mechanisms. Comput Methods Appl Mech Eng 190(26–27):3443–3459 · Zbl 1014.74057 · doi:10.1016/S0045-7825(00)00278-4 [8] Challis VJ (2010) A discrete level-set topology optimization code written in Matlab. Struct Multidisc Optim 41(3):453–464 · Zbl 1274.74322 · doi:10.1007/s00158-009-0430-0 [9] Dabrowski M, Krotkiewski M, Schmid D (2008) MILAMIN: MATLAB-based finite element method solver for large problems. Geochemistry Geophysics Geosystems 9(4). doi: 10.1029/2007GC001719 [10] Davis T (2007) Creating sparse finite-element matrices in MATLAB. Guest blog in Loren on the art of MATLAB. http://blogs.mathworks.com/loren/2007/03/01/creating-sparse-finite-element-matrices-in-matlab/ ; http://blogs.mathworks.com/loren/ [11] Davis T (2008) User guide for CHOLMOD: a sparse Cholesky factorization and modification package. Department of Computer and Information Science and Engineering, University of Florida, Gainesville, FL, USA [12] Díaz A, Sigmund O (1995) Checkerboard patterns in layout optimization. Struct Optim 10(1):40–45 · doi:10.1007/BF01743693 [13] Guest J, Prevost J, Belytschko T (2004) Achieving minimum length scale in topology optimization using nodal design variables and projection functions. Int J Numer Methods Eng 61(2):238–254 · Zbl 1079.74599 · doi:10.1002/nme.1064 [14] Jog C, Haber R (1996) Stability of finite element models for distributed-parameter optimization and topology design. Comput Methods Appl Mech Eng 130(3–4):203–226 · Zbl 0861.73072 · doi:10.1016/0045-7825(95)00928-0 [15] Lazarov B, Sigmund O (2009) Sensitivity filters in topology optimisation as a solution to helmholtz type differential equation. In: Proc. of the 8th world congress on structural and multidisciplinary optimization [16] Lazarov B, Sigmund O (2010) Filters in topology optimization based on Helmholtz type differential equations. Int J Numer Methods Eng. doi: 10.1002/nme.3072 · Zbl 1235.74258 [17] Sigmund O (1994) Design of material structures using topology optimization. PhD thesis, DCAMM S-report S69, Department of Solid Mechanics, Technical University of Denmark [18] Sigmund O (1997) On the design of compliant mechanisms using topology optimization. Mech Struct Mach 25(4):493–524 · doi:10.1080/08905459708945415 [19] Sigmund O (2001) A 99 line topology optimization code written in Matlab. Struct Multidisc Optim 21(2):120–127 · doi:10.1007/s001580050176 [20] Sigmund O (2007) Morphology-based black and white filters for topology optimization. Struct Multidisc Optim 33(4–5):401–424 · doi:10.1007/s00158-006-0087-x [21] Sigmund O (2009) Manufacturing tolerant topology optimization. Acta Mech Sin 25(2):227–239 · Zbl 1270.74165 · doi:10.1007/s10409-009-0240-z [22] Sigmund O, Petersson J (1998) Numerical instabilities in topology optimization: a survey on procedures dealing with checkerboards, mesh-dependencies and local minima. Struct Optim 16(1):68–75 · doi:10.1007/BF01214002 [23] Suresh K (2010) A 199-line Matlab code for Pareto-optimal tracing in topology optimization. Struct Multidisc Optim 42(5):665–679. doi: 10.1007/s00158-010-0534-6 · Zbl 1274.74005 · doi:10.1007/s00158-010-0534-6 [24] Svanberg K (1987) Method of moving asymptotes–a new method for structural optimization. Int J Numer Methods Eng 24(2):359–373 · Zbl 0602.73091 · doi:10.1002/nme.1620240207 [25] The MathWorks (2010) MATLAB programming fundamentals [26] Wang F, Lazarov B, Sigmund O (2010) On projection methods, convergence and robust formulations in topology optimization (submitted) · Zbl 1274.74409 [27] Zhou M, Rozvany G (1991) The COC algorithm. Part II: topological, geometrical and generalized shape optimization. Comput Methods Appl Mech Eng 89(1–3):309–336 · doi:10.1016/0045-7825(91)90046-9
This reference list is based on information provided by the publisher or from digital mathematics libraries. Its items are heuristically matched to zbMATH identifiers and may contain data conversion errors. It attempts to reflect the references listed in the original paper as accurately as possible without claiming the completeness or perfect precision of the matching.