Eigenvector aggregate is a method to impose eigenvector constraints used in topology optimization. The method is described in the following paper:
B. Li, and G. Kennedy. Topology Optimization for Buckling using an Eigenvector Aggregate. Computer Methods in Applied Mechanics and Engineering, 2024 (Submitted).
demo.py
contains the code for a demo to show exact eigenvector derivatives and approximate eigenvector derivatives described in paper section 3.topo_opt.py
is the main file for the topology optimization for the beam, column, and square plate.settings.py
contains the default parameters and input arguments for the topology optimization.domain.py
contains the beam, column, and square plate domain definitions.jobs.sbatch
is the SLURM script used to run the code on Georgia Tech's PACE cluster.run.sh
is the bash script used to run the code.output
folder used to save the output figures and log files.src
folder contains the source code rewritten using the Kokkos library for parallel computation. The code is written in C++ and can be compiled using the CMakeLists.txt file.other
folder contains the code for generating the figures in the paper, helper functions,
The code is written in Python 3. To run the code, you need to install the following packages:
- ParOpt (version 2.0.2 is recommended) is a parallel gradient-based optimizer that integrates the MMA method and the trust region method. The dependencies of ParOpt are listed MPI, BLAS, LAPACK, mpi4py, Cython, numpy, scipy
- scienceplots, matplotlib, numpy, scipy, mpmath, icecream
To run the code, simply run the bash script run.sh
:
./run.sh
by modifying the bash script run.sh
, the user can run the code with different parameters. The output figures and log files will be saved in the output
folder.
If you find this code useful in your research, please consider citing:
To be added
If you have any questions, please contact Bao Li, or Graeme J. Kennedy.