10000 GitHub - Pero-ISt/bembel: The BEM-based engineering library
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Pero-ISt/bembel

 
 

Repository files navigation

Bembel

License: GPL v3 GitHub release (latest by date) DOI Documentation coverage report

Table of contents

  1. Introduction
  2. What is a Bembel?
  3. Features
  4. Known Bugs and Upcoming Features
  5. Contributing to Bembel
  6. How to use the OpenCascade libary
  7. How to cite

1. Introduction

Bembel is the Boundary Element Method Based Engineering Library written in C++ library featuring higher order isogeometric Galerkin boundary element methods for Laplace, Helmholtz, and Maxwell problems. Bembel is compatible with geometries from the Octave NURBS package, and provides an interface to the Eigen template library for linear algebra operations. For computational efficiency, it applies an embedded fast multipole method tailored to the isogeometric analysis framework and a parallel matrix assembly based on OpenMP.

A good place to start is the introduction here: Getting Started. Furthermore, examples are provided in the examples/ folder, where details can be found in the publication [1]. Apart from that, a Doxygen documentation is available.

2. What is a Bembel?

A traditional Hessian ceramic, as depicted in our logo. Quoting Wikipedia:

Most establishments also serve Apfelwein by the Bembel (a specific Apfelwein jug), much like how beer can be purchased by the pitcher in many countries. The paunchy Bembel (made from salt-glazed stoneware) usually has a basic grey colour with blue-painted detailing.

3. Features

Current key features include

  • Header-only implementation,
  • Already implemented Laplace, Helmholtz and Maxwell single layer operator, easily expendable to other operators,
  • Arbitrary parametric mappings for the geometry representation, by default realized as NURBS-mappings from files generated by the NURBS package,
  • Arbitrary-order B-Spline functions as Ansatz spaces, as in the framework of isogeometric analysis for electromagnetics,
  • An embedded interpolation-based fast multipole method for compression, equivalent to the H2 matrix format,
  • openMP parallelized matrix assembly,
  • Full compatibility with the Eigen linear algebra library.
  • Import and export methods for STEP files according to ISO standard 10303 to simulate your own geometries.

4. Known Bugs and Upcoming Features

Please send bug reports and feature requests via issue tracker on GitHub.

5. Contributing to Bembel

Any contribution to this project in fixing a bug or implementing a feature is welcome. Create a fork of this repository and create a pull request. To successfully merge your pull request you should follow our Coding Guidelines

6. How to use the OpenCascade libary

This project utilizes the OpenCascade (OCCT) library for STEP file handling. The required libraries are automatically linked using the provided CMake configuration. Follow the steps below to ensure that OpenCascade is properly set up on your system.

Local Installation

You need OpenCascade installed on your system. You can either install it via your system's package manager or build it from source. On Ubuntu-based systems, you can install it with:

     sudo apt install libocct-foundation-dev libocct-data-exchange-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev

Alternatively, you can download and build OpenCascade from the official website: OpenCascade Technology.

In some cases you need to install libtbb-dev an development package for Intel's Threading Building Blocks (TBB). It is a library that provides high-level abstractions for parallel programming. On Ubuntu-based systems, you can install it with:

     sudo apt install libtbb-dev

After installing, you can use the CMake files to compile the code.

Docker Installation

You can use Docker to create a clean and isolated Ubuntu environment to build and run this project. Below are the steps to set up the required tools and libraries using Docker.

Step-by-Step Instructions

  1. Pull and Run an Ubuntu Docker Container

    Start by running an interactive Ubuntu container:

    sudo docker run -it ubuntu

    This will pull the latest Ubuntu image and give you an interactive shell inside the container.

  2. Update Package Lists

    Inside the Docker container, run the following command to update the package lists:

    apt update
  3. Install Required Development Tools and Libraries

    Install Git, CMake, GCC/G++, and Eigen3:

    apt install git cmake g++ libeigen3-dev -y
  4. Install OpenCascade Libraries

    Install the necessary OpenCascade libraries for working with STEP files and 3D geometry:

    apt install libocct-data-exchange-dev libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev -y
  5. Install Intel's Threading Building Blocks (TBB)

    Install the TBB library for parallelization:

    apt install libtbb-dev -y
  6. Clone the Repository

    Clone the project repository inside the Docker container:

    git clone "https://github.com/Pero-ISt/bembel.git"
  7. Build the Project

    Navigate into the cloned repository directory:

    cd bembel

    Generate the build files with CMake:

    cmake -B build .

    Build the project using CMake:

    cmake --build build --config release

If you need to preserve the container state, you can commit the container to an image and run it again later. For more advanced Docker usage, see Docker's official documentation.

7. How to cite

[1] J. Dölz, H. Harbrecht, S. Kurz, M. Multerer, S. Schöps, and F. Wolf. Bembel: The Fast Isogeometric Boundary Element C++ Library for Laplace, Helmholtz, and Electric Wave Equation. In: SoftwareX, 11, 10476. doi badge

@article{Bembel2020,
doi = {https://doi.org/10.1016/j.softx.2020.100476},
year = {2020}, volume = {11}, pages = {100476},
issn = {2352-7110},
author = {J. Dölz and H. Harbrecht and S. Kurz and M. Multerer and S. Schöps and F. Wolf},
title = {{Bembel}: The fast isogeometric boundary element {C++} library for {Laplace}, {Helmholtz}, and electric wave equation},
journal = {Software {X}}}

About

The BEM-based engineering library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 98.5%
  • Other 1.5%
0