The code solves topology optimization problems with arbitrary design domains in either 2D or 3D. By default, it solves a 2D compliance minimization problem as shown in the below picture:
Moreover, it can solve 3D problems as well as other two problems: compliant design and heat conduction problems:
This code is based on the version 2017 of the TopOpt_in_PETSc code. The original code can be found here: https://github.com/topopt/TopOpt_in_PETSc (Aage, N., Andreassen, E., & Lazarov, B. S. (2015). Topology optimization using PETSc: An easy-to-use, fully parallel, open source topology optimization framework. Structural and Multidisciplinary Optimization, 51(3), 565–572. https://doi.org/10.1007/s00158-014-1157-0)
The green are new added files and modules.
Compile following rules in makefile
To compile, e.g.:make topopt
To run, e.g.: mpiexec -np 4 ./topopt
To visulize, using Paraview
NOTE: The code works with PETSc version 3.9.0
The optimized parts can be directly printed without any post-processing: