DeflAted Barrier method (DAB)
The deflated-barrier library implements the deflated barrier method of Papadopoulos, Farrell and Surowiec. The objective is to compute multiple solutions of topology optimization problems which are nonconvex, PDE & box-constrained optimization problems.
I. P. A. Papadopoulos, P. E. Farrell, T. M. Surowiec, Computing multiple solutions of topology optimization problems, SIAM Journal on Scientific Computing, 2021, https://doi.org/10.1137/20M1326209.
The code is written in Python using FEniCS: a finite element solver platform. Instructions for set up can be found at http://fenicsproject.org/download (version 2019.1.0, compiled with PETSc, petsc4py and HDF5 support).
The deflated-barrier library also depends on
petsc4py (https://bitbucket.org/petsc/petsc4py)
h5py (http://www.h5py.org/)
matplotlib (http://matplotlib.org, for rendering iteration tables)
LaTeX (https://www.latex-project.org/, for rendering iteration tables)
slepc4py (https://bitbucket.org/slepc/slepc4py, for computing stabilities)
Tested with dolfin version 2019.1.0 compiled with either petsc4py version 3.7.0 or petsc4py version 3.10.1
The easiest way to learn how to use the deflated-barrier package is to examine the examples in examples/. Start with examples/double-pipe.
Iteration tables for the double-pipe, roller-type pump and neumann-outlet double-pipe examples can be generated by the command
make iterationtables
The outputs are pdf documents found in the relevant subdirectories in the examples directory.
The cantilever and mbb-beam examples (with continuation and grid-sequencing) can be generated by the command
make compliance
The convergence plots found in "Numerical analysis of a topology optimization problem for Stokes flow", I. P. A. Papadopoulos, E. Suli, 2021 can be generated by running
make convergence-plots
The outputs are pdf documents found in the figures/ subdirectory within examples/convergence-plots/double-pipe/unstructured-mesh and examples/convergence-plots/discontinuous-forcing/material-distribution-DG0
Install the package with the following command in the parent directory
pip3 install .
Ioannis P. A. Papadopoulos ([email protected])
Patrick E. Farrell ([email protected])
GNU LGPL, version 3.