A FFT-based homogenization tool.
- FFT-based homogenization based on Lippmann-Schwinger equation with staggered grid approach (SchneiderOspaldKabel2015:1)
- homogenization for linear elasticity, large deformations, Stokes flow and heat equation
- C++, OpenMP multiprocessing, XML + Python scripting interface
- laminate mixing for interfaces (KabelMerkertSchneider2014, SchneiderOspaldKabel2015:2)
- mixed boundary conditions (Kabel2016)
- generation of fibers distributions
- use of tetrahedrical mesh geometries
- arbitrarily many materials
- reading of raw CT data (gzip compressed)
- identification of homogenized material parameters
The tool was developed and tested under Linux (Ubuntu). Other platforms such as Windows and MacOS might work but probably require adjustmest to the CMakeLists.txt file and some other small scripts.
The following libraries are required, which are likely already installed on your system:
- gcc compiler (might also work with other compilers)
- OpenMP for parallelization (optional)
- boost incl. boost.python 3 and boost-numeric-bindings
- FFTW3 library
- lapack library
- Python 3
- scipy incl. numpy headers
- PyQt5 incl. QtWebEngine (QtWebKit also works)
- zlib library
- libpng library (optional for PNG output)
If unsure, continue with the installation and check the error messages of CMake.
- download source
git clone https://github.com/fospald/fibergen.git
- run build.sh, on error probably a library is missing
sh build.sh [optional CMake parameters]
- after successful build update your envirnoment variables:
export PATH=$PATH:$FIBERGEN/bin export PYTHONPATH=$PYTHONPATH:$FIBERGEN/lib
where $FIBERGEN denotes your download directory.
Enter the following command to run the GUI (with an optional project file to load)
In order to run a project file from the command line run
You can also run some test routines using
in order to perform some internal tests of math and operators.
Further information on how to use fibergen, can be found in the tutorial.
There are known instances with QtWebKit which may result in a crash of the GUI. An re-installation of QtWebKit with an older version or use of the newer QtWebEngine (i.e. using the latest version of Qt) may resolve the issue. Alternatively you can run the GUI with the demo- and help- browser disabled by
All QtWebKit/QtWebEngine browser instances will then be replaced by simplified QTextBrowser instances.
Setting the Python version
If you get an error about "boost_python-pyXY" not found, try to figure out which Python version boost-python is compiled against byrunning
and then modify the CMakeLists.txt accordingly
SET(PYTHON_VERSION_MAJOR X) SET(PYTHON_VERSION_MINOR Y)
Only the header files are required. No configure/build needed.
cd install_dir git clone http://git.tiker.net/trees/boost-numeric-bindings.git export BOOSTNUMERICBINDINGS_DIR=$(pwd)/boost-numeric-bindings
Generating source code documentation
You can generate a Doxygen-based documentation by running
cd doc/doxygen make (or just doxygen) firefox html/index.html
If you have any question, idea or issue please create an new issue in the issue tracker. If you want to contribute anything (e.g. demos) please contact me.
Felix Ospald gratefully acknowledges financial support by the German Research Foundation (DFG), Federal Cluster of Excellence EXC 1075 "MERGE Technologies for Multifunctional Lightweight Structures". Many thanks to Matti Schneider for his helpful introduction to FFT-based homogenization and ideas regarding the ACG distribution.