TopOpt

Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.

Actions Status

Documentation

TopOpt is a topology optimization package written in Julia. To learn more and see some examples, visit the documentation.

Installation

To install TopOpt.jl, run:

using Pkg
pkg"add TopOpt"

To additionally load the visualization submodule of TopOpt, you will need to install Makie.jl using:

pkg"add Makie"

To load the package, use:

using TopOpt

and to optionally load the visualization sub-module as part of TopOpt, use:

using TopOpt, Makie

Features available

All the following features are available in TopOpt.jl but the documentation is currently lacking! Feel free to open an issue to ask about how to use specific features.

  • 2D and 3D truss topology optimization
  • 2D and 3D continuum topology optimization
  • Unstructured ground mesh
  • Linear and quadratic triangle, quadrilateral, tetrahedron and hexahedron elements in ground mesh
  • Fixed and non-design domain support
  • Concentrated and distributed loads
  • SIMP, RAMP, continuation SIMP/RAMP and BESO
  • Compliance, volume and stress functions
  • Buckling constrained truss optimization
  • End-to-end topology optimization from INP file to VTK file
  • Interactive visualization of designs and deformation
  • Automatic differentiation of arbitrary Julia functions
  • Method of moving asymptotes, NLopt, Ipopt and augmented Lagrangian algorithm for optimization
  • Density and sensitivity filters
  • Heaviside projection
  • Handling load uncertainty in compliance-based topology optimization
  • Neural network representation of designs
  • Integer nonlinear topology optimization for truss and continuum problems (design variables guaranteed to be integer)

gif1 gif2 gif3

Citation

To cite this package, you can cite the following 2 conference publications.

  • TopOpt.jl: An efficient and high-performance package for topology optimization of continuum structures in the Julia programming language
@inproceedings{tarek2019topoptjl,
  title={TopOpt.jl: An efficient and high-performance package for topology optimization of continuum structures in the Julia programming language},
  author={Tarek, Mohamed},
  booktitle={Proceedings of the 13th World Congress of Structural and Multidisciplinary Optimization},
  year={2019}
}
@inproceedings{huang2021topoptjl,
  title={TopOpt.jl: Truss and Continuum Topology Optimization, Interactive Visualization, Automatic Differentiation and More},
  author={Huang, Yijiang and Tarek, Mohamed},
  booktitle={Proceedings of the 14th World Congress of Structural and Multidisciplinary Optimization},
  year={2021}
}

Contribute

We always welcome new contributors! Feel free to open an issue or reach out to us via email if you want to collaborate. There are plenty of things to do including beginner friendly tasks and research-oriented tasks. You can help us create the best topology optimization ecosystem in the world! Some beginner-friendly ideas you could be working on include:

  1. Multi-material design parameterisation
  2. Level set design parameterization
  3. Lattice design parameterization
  4. Neural network based design parameterization
  5. Local volume constraints
  6. Supporting rectilinear grids
  7. Wrapping OpenLSTO_jll which is the precompiled binary for M2DOLab/OpenLSTO
  8. Wrapping TopOpt_in_PETSc_jll which is the precompiled binary for topopt/TopOpt_in_PETSc
  9. Reliability-based design optimization
  10. Robust optimization
  11. Stochastic optimization

Questions?

If you have any questions, join us on on the #topopt channel in the Julia slack, open an issue or shoot us an email.