Skip to main content
Log in

Efficient topology optimization in MATLAB using 88 lines of code

  • Educational Article
  • Published:
Structural and Multidisciplinary Optimization Aims and scope Submit manuscript

Abstract

The paper presents an efficient 88 line MATLAB code for topology optimization. It has been developed using the 99 line code presented by Sigmund (Struct Multidisc Optim 21(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 www.topopt.dtu.dk.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
EUR 32.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or Ebook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8

Notes

  1. The slight difference which can be observed between the 88-line and the 99-line code is due to the difference in the SIMP formulation.

References

  • Alberty J, Carstensen C, Funken S (1999) Remarks around 50 lines of Matlab: short finite element implementation. Numer Algorithms 20(2–3):117–137

    Article  MATH  MathSciNet  Google Scholar 

  • Alberty J, Carstensen C, Funken S, Klose R (2002) Matlab implementation of the finite element method in elasticity. Computing 69(3):239–263

    Article  MathSciNet  Google Scholar 

  • Allaire G (2009) Shape and topology optimization by the level set method. http://www.cmap.polytechnique.fr/~allaire

  • Bendsøe M (1989) Optimal shape design as a material distribution problem. Struct Optim 1:193–202

    Article  Google Scholar 

  • Bendsøe M, Sigmund O (2003) Topology optimization. Theory, methods and applications. Springer, Berlin

    Google Scholar 

  • Bourdin B (2001) Filters in topology optimization. Int J Numer Methods Eng 50(9):2143–2158

    Article  MATH  MathSciNet  Google Scholar 

  • 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

    Article  MATH  Google Scholar 

  • Challis VJ (2010) A discrete level-set topology optimization code written in Matlab. Struct Multidisc Optim 41(3):453–464

    Article  MathSciNet  Google Scholar 

  • 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

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

  • 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

  • Díaz A, Sigmund O (1995) Checkerboard patterns in layout optimization. Struct Optim 10(1):40–45

    Article  Google Scholar 

  • 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

    Article  MATH  MathSciNet  Google Scholar 

  • 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

    Article  MATH  MathSciNet  Google Scholar 

  • 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

  • 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

    Google Scholar 

  • Sigmund O (1994) Design of material structures using topology optimization. PhD thesis, DCAMM S-report S69, Department of Solid Mechanics, Technical University of Denmark

  • Sigmund O (1997) On the design of compliant mechanisms using topology optimization. Mech Struct Mach 25(4):493–524

    Article  Google Scholar 

  • Sigmund O (2001) A 99 line topology optimization code written in Matlab. Struct Multidisc Optim 21(2):120–127

    Article  Google Scholar 

  • Sigmund O (2007) Morphology-based black and white filters for topology optimization. Struct Multidisc Optim 33(4–5):401–424

    Article  Google Scholar 

  • Sigmund O (2009) Manufacturing tolerant topology optimization. Acta Mech Sin 25(2):227–239

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Svanberg K (1987) Method of moving asymptotes—a new method for structural optimization. Int J Numer Methods Eng 24(2):359–373

    Article  MATH  MathSciNet  Google Scholar 

  • The MathWorks (2010) MATLAB programming fundamentals

  • Wang F, Lazarov B, Sigmund O (2010) On projection methods, convergence and robust formulations in topology optimization (submitted)

  • 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

    Article  Google Scholar 

Download references

Acknowledgements

This work was financially supported by the Eurohorcs/ESF European Young Investigator Award (EURYI), by a Center of Advanced User Support (CAUS) grant from the Danish Center of Scientific Computing (DCSC), and by an Elite Research Prize from the Danish Minister of Research. The third author is a postdoctoral fellow of the Research Foundation—Flanders and a member of K.U.Leuven-BOF PFV/10/002 OPTEC-Optimization in Engineering Center.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ole Sigmund.

Appendix: MATLAB code

Appendix: MATLAB code

Rights and permissions

Reprints and permissions

About this article

Cite this article

Andreassen, E., Clausen, A., Schevenels, M. et al. Efficient topology optimization in MATLAB using 88 lines of code. Struct Multidisc Optim 43, 1–16 (2011). https://doi.org/10.1007/s00158-010-0594-7

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00158-010-0594-7

Keywords

Navigation