/BFM

Primary LanguageCBSD 2-Clause "Simplified" LicenseBSD-2-Clause

BFM

Big F'ing Matrix. Final assignment for LEPL1110 (Finite Element Method).

Results

Naive bridge desgin "Beehive" bridge design
naive alveole

Building

This repo is composed of two components; the backend libbfm, which implements all the routines BFM defines, and the frontend pybfm, which includes a thin Python wrapper above libbfm and visualisation facilities.

libbfm

This uses CMake:

mkdir -p libbfm/build
cd libbfm/build
cmake ..

To install the library and its headers, run this (as a superuser):

make install

pybfm

First, the FFI bindings to libbfm must be generated:

python pybfm/bfm/gen_libbfm.py

Then, you may install the bfm Python module itself:

pip install --user ./pybfm

Ubuntu 22.04, set the DEB_PYTHON_INSTALL_LAYOUT environment variable to deb_system when running the above command:

DEB_PYTHON_INSTALL_LAYOUT=deb_system pip install --user ./pybfm

(See this issue.)

Running

Assuming everything is built, you can run a simple example as such:

python3 examples/deformation.py

That's it ;)

To execute a specific LEPL1110 problem:

python3 lepl1110.py path/to/mesh path/to/problem

This will output U.txt and V.txt in the data directory.