This repository contains the code I developed as part of my PhD thesis, "Topology optimization and lattice Boltzmann methods".
The code is not in a "plug and play" state to use as a library, as it was developed with myself as the sole user. Similarly, it contains bits of code that were never finished. However, bits and pieces of the code might be useful for others to incorporate into their own research projects.
The following bits of code might be of interest to others:
- The topOpt folder contains a low overhead implementation of a memory efficient checkpointing algorithm for adjoint computations. See original paper by Wang et al for theoretical details.
- MPISplit.cc contains the implementation of a helper class used to solve multiple systems in parallel in separate MPI communicators, useful for robust topology optimization.
These can both be used in another context than lattice Boltzmann, e.g. for topology optimization for other kinds of physics or for other kinds of optimization problems.
The code depends on PETSc, and optionally on CoDiPack for differentiation of arbitrary lattice Boltzmann models using automatic differentiation.
- Topology optimization for unsteady flow problems using the lattice Boltzmann method
- Applications of automatic differentiation in topology optimization
In case any of the above is potentially useful to you, feel free to open an issue in case you need help.