fibergen

Logo

A FFT-based homogenization tool.

View the Project on GitHub fospald/fibergen

DOI

fibergen

A FFT-based homogenization tool.

Target Platform

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.

Requirements

The following libraries are required, which are likely already installed on your system:

If unsure, continue with the installation and check the error messages of CMake.

Docker Installation

  1. Make sure you have Docker and Docker compose installed.
  2. Build and run the container with GUI support in the background
    cd docker
    docker compose -f docker-compose-gui.yml up --detach
    
  3. Run shell inside the container
    sudo docker compose exec fibergen bash
    
  4. Start fibergen as described in the Run section

Manual Installation

  1. download source
    git clone https://github.com/fospald/fibergen.git
    
  2. run build.sh, on error probably a library is missing
    sh build.sh [optional CMake parameters]
    
  3. after successful build update your envirnoment variables:
    export PATH=$PATH:$FIBERGEN/bin
    export PYTHONPATH=$PYTHONPATH:$FIBERGEN/lib
    

    where $FIBERGEN denotes your download directory.

Run

Enter the following command to run the GUI (with an optional project file to load)

fibergen-gui [project.xml]

In order to run a project file from the command line run

fibergen project.xml

You can also run some test routines using

fibergen --test

in order to perform some internal tests of math and operators.

Generating source code documentation

You can generate a Doxygen-based documentation by running

cd doc/doxygen
make
firefox html/index.html

Tutorial

Further information on how to use fibergen, can be found in the tutorial (also included in the doxygen documentation).

Troubleshooting

GUI Crash

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

fibergen-gui --disable-browser

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 by running

locate boost_python-py

and then modify the CMakeLists.txt accordingly

SET(PYTHON_VERSION_MAJOR X)
SET(PYTHON_VERSION_MINOR Y)

Installing boost-numeric-bindings

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

install_dir is the installation directory for boost-numeric-bindings. You should remove the build directory (rm -r build) before running build.sh again in order to clear the CMake cache.

Contributing

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.

Citing

You can use the following publication for citing fibergen:

@article{Ospald2019,
        author = {F. Ospald},
        title = {fibergen: An introductory tool for {FFT}-based material homogenization},
        year  = {2019},
        publisher = {The Open Journal},
        journal = {Journal of Open Source Software},
        volume = {4},
        number = {34},
        pages = {1027},
        doi = {10.21105/joss.01027}
}

Acknowledgements

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.