Skip to content

Commit

Permalink
Merge branch 'VTKpointexport' of github.com:temf/bembel into VTKpoint…
Browse files Browse the repository at this point in the history
…export
  • Loading branch information
jdoelz committed Jul 10, 2023
2 parents b7712a7 + 6d2bd95 commit cf7ea6d
Show file tree
Hide file tree
Showing 152 changed files with 2,401 additions and 821 deletions.
44 changes: 44 additions & 0 deletions .github/workflows/build-n-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Build and Test

on:
workflow_call:
inputs:
target:
required: true
type: string

env:
# Customize the CMake build type here (Release, Debug, etc.)
BUILD_TYPE: Release

jobs:
build-n-test:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Configure system
run: sudo apt-get update

- name: Install Eigen3
run: sudo apt-get install --yes libeigen3-dev

- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -B build

- name: Build
shell: bash
run: cmake --build build --config $BUILD_TYPE --target ${{ inputs.target }} -j 2

- name: Test
working-directory: ${{github.workspace}}/build
shell: bash
run: ctest -C $BUILD_TYPE -L ${{ inputs.target }} --output-on-failure
26 changes: 26 additions & 0 deletions .github/workflows/code-style.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Check for Google C++ Style Guide

on:
push:
branches: [ "**" ]
pull_request:
branches: [ "**" ]

jobs:
code-style:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install cpplint
- name: "Check Code Format"
run: |
./scripts/cpplint.sh
11 changes: 11 additions & 0 deletions .github/workflows/end2end-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: End-2-End Tests

on:
pull_request:
branches: [ "**" ]

jobs:
build:
uses: ./.github/workflows/build-n-test.yml
with:
target: E2Etests
48 changes: 48 additions & 0 deletions .github/workflows/monitor-coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Coverage Monitor

on:
pull_request:
branches: [ "**" ]

env:
BUILD_TYPE: Coverage

jobs:
coverage-monitor:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Configure system
run: sudo apt-get update

- name: Install Eigen3
run: sudo apt-get install --yes libeigen3-dev

- name: Install Gcovr
run: sudo apt install gcovr

- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -B build

- name: Build
shell: bash
run: cmake --build build --config $BUILD_TYPE -j 2

- name: Run Unittests
working-directory: ${{github.workspace}}/build
shell: bash
run: ctest -C $BUILD_TYPE -L unittests --output-on-failure

- name: Create Coverage Report
working-directory: ${{github.workspace}}/build
shell: bash
run: gcovr -f ../Bembel -r ../
13 changes: 13 additions & 0 deletions .github/workflows/unittest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: Unittests

on:
push:
branches: [ "**" ]
pull_request:
branches: [ "**" ]

jobs:
build:
uses: ./.github/workflows/build-n-test.yml
with:
target: unittests
25 changes: 24 additions & 1 deletion Bembel/AnsatzSpace
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// This file is part of Bembel, the higher order C++ boundary element library.
//
// Copyright (C) 2022 see <http://www.bembel.eu>
//
// It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
// M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
// Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
Expand All @@ -9,6 +12,26 @@
#ifndef BEMBEL_ANSATZSPACE_MODULE_
#define BEMBEL_ANSATZSPACE_MODULE_

/**
* \ingroup Modules
* \defgroup AnsatzSpace AnsatzSpace
* \brief The AnsatzSpace module contains the routines managing the discrete
* space on the surface of the geometry.
*
* This is realised through the four
* classes SuperSpace , Projector , Glue , and AnsatzSpace . Therein, SuperSpace
* manages local polynomial bases on every element. Through a transformation
* matrix generated by the template class Projector which depends on the
* specializa- tion of LinearOperatorBase and its defined traits, the SuperSpace
* can be related to B-Spline bases on every patch. To build conforming spaces
* (in the case of DifferentialForm::DivergenceConforming through continuity of
* the normal component across patch interfaces, in the case of
* DifferentialForm::Continuous through global C0-continuity), the template
* class Glue assembles another transformation matrix to identify degrees of
* freedom across edges. Then, a coefficient vector in the SuperSpace can be
* related to one of the smooth B-Spline basis
**/

#include <memory>
#include <algorithm>

Expand All @@ -32,4 +55,4 @@

#include "src/AnsatzSpace/FunctionEvaluator.hpp"

#endif
#endif // BEMBEL_ANSATZSPACE_MODULE_
19 changes: 18 additions & 1 deletion Bembel/ClusterTree
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// This file is part of Bembel, the higher order C++ boundary element library.
//
// Copyright (C) 2022 see <http://www.bembel.eu>
//
// It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
// M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
// Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
Expand All @@ -9,6 +12,20 @@
#ifndef BEMBEL_CLUSTERTREE_MODULE_
#define BEMBEL_CLUSTERTREE_MODULE_

/**
* \ingroup Modules
* \defgroup ClusterTree ClusterTree
* \brief The ClusterTree module introduces a structure onto the parametric
* surfaces.
*
* Therein, the ClusterTree class takes a Geometry and introduces an
* element struc- ture on it, in the form of an ElementTree . Each
* ElementTreeNode of the ElementTree corresponds to an entire parametric
* mapping (at the trees first level) or to a sub element induced by a recursive
* refinement strategy. The leaves of the tree correspond to the elements on
* which the SuperSpace introduces shape functions.
**/

#include <Eigen/Dense>
#include <array>
#include <iostream>
Expand All @@ -25,4 +42,4 @@
#include "src/ClusterTree/ElementTree.hpp"
#include "src/ClusterTree/ClusterTree.hpp"

#endif
#endif // BEMBEL_CLUSTERTREE_MODULE_
15 changes: 14 additions & 1 deletion Bembel/DuffyTrick
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// This file is part of Bembel, the higher order C++ boundary element library.
//
// Copyright (C) 2022 see <http://www.bembel.eu>
//
// It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
// M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
// Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
Expand All @@ -9,6 +12,16 @@
#ifndef BEMBEL_DUFFYTRICK_MODULE_
#define BEMBEL_DUFFYTRICK_MODULE_

/**
* \ingroup Modules
* \defgroup DuffyTrick DuffyTrick
* \brief The DuffyTrick module provides quadrature routines for (nearly)
* singular integrals.
*
* Therein, the implementation is ssentially an adaptation of the so-called
* Sauter-Schwab quadrature rules
**/

#include <cassert>
#include <Eigen/Dense>

Expand All @@ -31,4 +44,4 @@
#include "src/DuffyTrick/integrate4.hpp"
#include "src/DuffyTrick/evaluateBilinearForm.hpp"

#endif
#endif // BEMBEL_DUFFYTRICK_MODULE_
5 changes: 4 additions & 1 deletion Bembel/DummyOperator
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// This file is part of Bembel, the higher order C++ boundary element library.
//
// Copyright (C) 2022 see <http://www.bembel.eu>
//
// It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
// M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
// Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
Expand All @@ -17,4 +20,4 @@

#include "src/LinearOperator/Dummy/DummyOperator.hpp"

#endif
#endif // BEMBEL_DUMMYOPERATOR_MODULE_
22 changes: 19 additions & 3 deletions Bembel/Geometry
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// This file is part of Bembel, the higher order C++ boundary element library.
//
// Copyright (C) 2022 see <http://www.bembel.eu>
//
// It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
// M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
// Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
Expand All @@ -9,6 +12,19 @@
#ifndef BEMBEL_GEOMETRY_MODULE_
#define BEMBEL_GEOMETRY_MODULE_

/**
* \ingroup Modules
* \defgroup Geometry Geometry
* \brief This module handles all geometry related concerns.
*
* The Geometry class is the interface between geometry description and the
* remainder of the code. We provide an implementation of NURBS discretized
* patches via the Patch class, but the code is easily extensible to other
* parametric descriptions mapping from [0,1]2 to parts of the geometry, as long
* as the corresponding methods for point evaluation and evaluation of the
* pointwise Jacobian are implemented
**/

#include <fstream>
#include <iomanip>
#include <iostream>
Expand All @@ -21,11 +37,11 @@

#include "Spline"

#include "src/Geometry/SurfacePoint.hpp"

#include "src/Geometry/Patch.hpp"
#include "src/Geometry/PatchVector.hpp"
#include "src/Geometry/GeometryIO.hpp"
#include "src/Geometry/Geometry.hpp"
#include "src/Geometry/SurfacePoint.hpp"
#include "src/Geometry/Geometry.hpp"

#endif
#endif // BEMBEL_GEOMETRY_MODULE_
13 changes: 12 additions & 1 deletion Bembel/H2Matrix
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// This file is part of Bembel, the higher order C++ boundary element library.
//
// Copyright (C) 2022 see <http://www.bembel.eu>
//
// It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
// M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
// Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
Expand All @@ -9,6 +12,14 @@
#ifndef BEMBEL_H2MATRIX_MODULE_
#define BEMBEL_H2MATRIX_MODULE_

/**
* \ingroup Modules
* \defgroup H2Matrix H2Matrix
* \brief The H2Matrix module provides functionality for an efficient
* compression of the system matrix and reduction of the computational
* complexity of the matrix-vector multiplication.
**/

#include "DuffyTrick"
#include "ClusterTree"
#include "Quadrature"
Expand All @@ -21,4 +32,4 @@
#include "src/H2Matrix/BlockClusterTree.hpp"
#include "src/H2Matrix/H2Multipole.hpp"

#endif
#endif // BEMBEL_H2MATRIX_MODULE_
12 changes: 11 additions & 1 deletion Bembel/Helmholtz
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// This file is part of Bembel, the higher order C++ boundary element library.
//
// Copyright (C) 2022 see <http://www.bembel.eu>
//
// It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
// M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
// Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
Expand All @@ -9,6 +12,13 @@
#ifndef BEMBEL_HELMHOLTZOPERATOR_MODULE_
#define BEMBEL_HELMHOLTZOPERATOR_MODULE_

/**
* \ingroup Modules
* \defgroup Helmholtz Helmholtz
* \brief The Helmholtz module provides some specializations to solve Helmholtz
*problems.
**/

#include <functional>

#include <Eigen/Dense>
Expand All @@ -19,4 +29,4 @@
#include "src/Helmholtz/SingleLayerOperator.hpp"
#include "src/Helmholtz/SingleLayerPotential.hpp"

#endif
#endif // BEMBEL_HELMHOLTZOPERATOR_MODULE_
11 changes: 10 additions & 1 deletion Bembel/IO
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// This file is part of Bembel, the higher order C++ boundary element library.
//
// Copyright (C) 2022 see <http://www.bembel.eu>
//
// It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
// M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
// Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
Expand All @@ -9,6 +12,12 @@
#ifndef BEMBEL_VISUALIZE_MODULE_
#define BEMBEL_VISUALIZE_MODULE_

/**
* \ingroup Modules
* \defgroup IO IO
* \brief The IO module provides input-output functionality.
**/

#include <assert.h>

#include <chrono>
Expand All @@ -29,4 +38,4 @@
#include "src/IO/VTKPointExport.hpp"
#include "src/IO/print2file.hpp"

#endif
#endif // BEMBEL_VISUALIZE_MODULE_
Loading

0 comments on commit cf7ea6d

Please sign in to comment.