Skip to content

Commit f4332c0

Browse files
authored
Merge pull request #55 from mathLab/deal_v_9_6_modifications
implemented changes to move to deal.II version 9.6.0
2 parents a21787c + 90f21a6 commit f4332c0

35 files changed

+205
-210
lines changed

.clang-format

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# The clang-format (Clang 11) style file used by deal.II.
2+
# The clang-format (Clang 16) style file used by deal.II.
33
#
44

55
AccessModifierOffset: -2
@@ -160,6 +160,8 @@ PointerAlignment: Right
160160
ReflowComments: true
161161
CommentPragmas: '( \| |\*--|<li>|@ref | @p |@param |@name |@returns |@warning |@ingroup |@author |@date |@related |@relates |@relatesalso |@deprecated |@image |@return |@brief |@attention |@copydoc |@addtogroup |@todo |@tparam |@see |@note |@skip |@skipline |@until |@line |@dontinclude |@include)'
162162

163+
QualifierAlignment: Left
164+
163165
SortIncludes: true
164166
SortUsingDeclarations: true
165167

@@ -175,7 +177,7 @@ SpacesInContainerLiterals: false
175177
SpacesInParentheses: false
176178
SpacesInSquareBrackets: false
177179

178-
Standard: Cpp11
180+
Standard: c++20
179181

180182
TabWidth: 2
181183

.github/workflows/indentation.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111

1212
runs-on: ubuntu-latest
1313
container:
14-
image: dealii/dealii:v9.5.0-jammy
14+
image: dealii/dealii:v9.6.0-jammy
1515
options: --user root --env OMPI_ALLOW_RUN_AS_ROOT=1 --env OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
1616

1717
steps:

.github/workflows/tests.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
runs-on: ubuntu-latest
1313

1414
container:
15-
image: dealii/dealii:v9.5.0-jammy
15+
image: dealii/dealii:v9.6.0-jammy
1616
options: --user root --env OMPI_ALLOW_RUN_AS_ROOT=1 --env OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
1717

1818
steps:
@@ -32,7 +32,7 @@ jobs:
3232
runs-on: ubuntu-latest
3333

3434
container:
35-
image: dealii/dealii:v9.5.0-jammy
35+
image: dealii/dealii:v9.6.0-jammy
3636
options: --user root --env OMPI_ALLOW_RUN_AS_ROOT=1 --env OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
3737

3838
steps:

CMakeLists.txt

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
##
22
# CMake script for large project, with one executable
3-
# and a library of objects, optionally
4-
# depending on deal2lkit.
3+
# and a library of objects
54
#
65
# The structure of the directory is assumed to be:
76
# ./source: containing implementations and one file with "int main()"
@@ -38,7 +37,7 @@ ENDIF()
3837

3938
CMAKE_MINIMUM_REQUIRED(VERSION 3.13.4)
4039

41-
FIND_PACKAGE(deal.II 9.5 REQUIRED
40+
FIND_PACKAGE(deal.II 9.5.0 REQUIRED
4241
HINTS ${deal.II_DIR} ${DEAL_II_DIR} ../ ../../ $ENV{DEAL_II_DIR}
4342
)
4443

README.md

+81-93
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44
</a>
55
</p>
66

7-
# pi-BEM: Parallel BEM Solver
7+
# pi-BEM: Parallel BEM Solver
88

99
[![Build Status](https://travis-ci.org/mathLab/pi-BEM.svg?branch=master)](https://travis-ci.org/mathLab/pi-BEM)
1010

1111
Copyright (C) 2015 -- 2019 by Nicola Giuliani (1), Andrea Mola (2) and Luca Heltai (2)
1212

13-
(1) Scuola Internazionale Superiore di Studi Avanzati E-mail: [email protected]
13+
(1) Scuola Internazionale Superiore di Studi Avanzati E-mail: <[email protected]>
1414

15-
(2) Scuola Internazionale Superiore di Studi Avanzati E-mail: [email protected]
15+
(2) Scuola Internazionale Superiore di Studi Avanzati E-mail: <[email protected]>
1616

17-
(3) Scuola Internazionale Superiore di Studi Avanzati E-mail: [email protected]
17+
(3) Scuola Internazionale Superiore di Studi Avanzati E-mail: <[email protected]>
1818

19-
The library represents a parallel solver for the Laplace equation through Boundary Element Methods. We have developed the software in C++ on top of many high performance libraries, the [deal.II](https://github.com/dealii/dealii) library for Finite Element Handling, the [METIS](http://glaros.dtc.umn.edu/gkhome/metis/metis/download) project and [Trilinos](https://trilinos.org/) library for automatic Workload balance, [OpenCASCADE](https://www.opencascade.com/) for CAD integration, and [deal2lkit](https://github.com/luca-heltai/deal2lkit) for parameter handling.
19+
The library represents a parallel solver for the Laplace equation through Boundary Element Methods. We have developed the software in C++ on top of many high performance libraries, the [deal.II](https://github.com/dealii/dealii) library for Finite Element Handling, the [METIS](http://glaros.dtc.umn.edu/gkhome/metis/metis/download) project and [Trilinos](https://trilinos.org/) library for automatic Workload balance, and [OpenCASCADE](https://www.opencascade.com/) for CAD integration.
2020

2121
## Provided features
2222

@@ -32,131 +32,125 @@ We provide the following capabilities
3232
- Hybrid Distributed (MPI) - Shared (Intel Threaded Building Block) memory parallelisation for the BEM-FMM code
3333
- Recovery of both primal (potential) and dual (potential normal derivative) unknowns.
3434
- L2 projection of the full 3D potential gradient for post processing.
35-
- Extensive tuning via parameter file using the [deal2lkit](https://github.com/mathLab/deal2lkit) library
36-
35+
- Extensive tuning via parameter file using.
3736

3837
## Code Structure
38+
3939
We have subdivided the code in main classes to handle the many different aspects of a complete BEM simulation.
4040

4141
- Driver. This class is in charge of organising the overall BEM simulation. It has interfaces with all the other classes in order to perform a complete simulation.
4242
- ComputationalDomain. This class handles, and provides to the other classes, ONLY the geometry of the problem. In particular
43-
- it handles the domain decomposition using a graph partitioning tool (METIS);
44-
- it reads the domain from an external file.
43+
- it handles the domain decomposition using a graph partitioning tool (METIS);
44+
- it reads the domain from an external file.
4545
- BoundaryCondition. The class handles the boundary conditions. In particular
46-
- it reads the boundary conditions for the potential and its normal derivative;
47-
- given the peculiarities of the BEM, the boundary conditions represent the actual unknowns, thus it creates the vectors containing the two variables and fills them with the proper data;
48-
- it performs the error analysis on both unknowns.
46+
- it reads the boundary conditions for the potential and its normal derivative;
47+
- given the peculiarities of the BEM, the boundary conditions represent the actual unknowns, thus it creates the vectors containing the two variables and fills them with the proper data;
48+
- it performs the error analysis on both unknowns.
4949

5050
- BEMProblem. This class is the core of the BEM simulation
51-
- it receives the variables vector filled in with the proper boundary condition;
52-
- it creates the codimension 1 functional space setting up the BEM;
53-
- it solves the system using a preconditioned parallel GMRES solver;
54-
- it eventually interacts with the FMM accelerator.
51+
- it receives the variables vector filled in with the proper boundary condition;
52+
- it creates the codimension 1 functional space setting up the BEM;
53+
- it solves the system using a preconditioned parallel GMRES solver;
54+
- it eventually interacts with the FMM accelerator.
5555
- BEMFMA. This class handles the accelerator, in particular
56-
- it sets up an hierarchical 3D space subdivision (octree);
57-
- it receives two distributed vectors representing the unknowns and performs a full FMM matrix vector product.
56+
- it sets up an hierarchical 3D space subdivision (octree);
57+
- it receives two distributed vectors representing the unknowns and performs a full FMM matrix vector product.
5858

5959
## Install Procedure using CANDI
60+
6061
To install from scratch all the needed library you can look to the automatic installation procedure provided by [CANDI](https://github.com/koecher/candi) developed Uwe Köcher.
6162

6263
## Install Procedure using spack
64+
6365
Just follow the [instructions](https://github.com/dealii/dealii/wiki/deal.II-in-Spack) to install dealii@develop using spack.
6466

6567
## Install Procedure using Docker
66-
We provide the possibility of using Docker as a tool to provide a fully operational environment for our library. To use such tool you need to install Docker following the [instructions](https://docs.docker.com/engine/installation/) provided by its authors. Then you can execute the following command line instruction
6768

68-
docker run -v `pwd`:/pwd_to_your_own_directory/ -i -t mathlab/deal2lkit:latest bash
69+
We provide the possibility of using Docker as a tool to provide a fully operational environment for our library. To use such tool you need to install Docker following the [instructions](https://docs.docker.com/engine/installation/) provided by its authors. Then you can execute the following command line instruction
70+
71+
docker run -v `pwd`:/pwd_to_your_own_directory/ -i -t dealii/dealii:v9.6.0-jammy bash
6972

7073
to retrieve the environment. In such a shell you can easily compile the pi-BEM library following its own instructions.
7174

7275
## Install Procedure from scratch
73-
In order to successfully compile the code you need
74-
75-
- to install the Trilinos and Metis wrappers of the library, see the official [instructions](https://www.dealii.org/developer/readme.html)
76-
- to install the [deal.II](https://github.com/dealii/dealii) library allowing both for multiprocessors and multithreaded environment.
77-
- to install the [deal2lkit](https://github.com/mathLab/deal2lkit) library allowing both for multiprocessors and multithreaded environment.
7876

77+
In order to successfully compile the code you need
7978

79+
- to install the Trilinos and Metis wrappers of the library, see the official [instructions](https://www.dealii.org/developer/readme.html)
80+
- to install the [deal.II](https://github.com/dealii/dealii) library allowing both for multiprocessors and multithreaded environment.
8081

8182
### deal.II Installation procedure
82-
Follow the detailed [instruction](https://www.dealii.org/developer/readme.html) to install deal with METIS and Trilinos wrappers. We highlight that in order to fully exploit pi-BEM you need to properly install the following additional packages: MPI, TBB, METIS, TRILINOS ans OPENCASCADE. For more detailed instruction you can look to the the deal.ii install procedures. In the following we provide an example of the installation of all the proper packages.
8383

84+
Follow the detailed [instruction](https://www.dealii.org/developer/readme.html) to install deal with METIS and Trilinos wrappers. We highlight that in order to fully exploit pi-BEM you need to properly install the following additional packages: MPI, TBB, METIS, TRILINOS ans OPENCASCADE. For more detailed instruction you can look to the the deal.ii install procedures. In the following we provide an example of the installation of all the proper packages.
8485

8586
### OpenCASCADE Installation procedure
86-
- Download the latest version at [OpenCASCADE](https://github.com/tpaviot/oce)
87-
- Follow the instructions
8887

88+
- Download the latest version at [OpenCASCADE](https://github.com/tpaviot/oce)
89+
- Follow the instructions
8990

9091
### METIS-PARMETIS Installation procedure
92+
9193
- Download the latest version at [METIS](http://glaros.dtc.umn.edu/gkhome/metis/metis/download)
9294
- Follow the [instructions](http://glaros.dtc.umn.edu/gkhome/metis/metis/download) for the correct installation of the package
9395

94-
9596
### Trilinos Installation procedure
97+
9698
- Download the latest version at [Trilinos](https://trilinos.org/download/)
9799
- This is a possible configuration file
98100

99-
cmake -D Trilinos_ENABLE_OPTIONAL_PACKAGES:BOOL=ON \
100-
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=ON \
101-
-D CMAKE_CXX_FLAGS:STRING="-O3" \
102-
-D CMAKE_C_FLAGS:STRING="-O3" \
103-
-D CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE \
104-
-D Trilinos_VERBOSE_CONFIGURE:BOOL=FALSE \
105-
-D TPL_ENABLE_MPI:BOOL=ON \
106-
-D CMAKE_BUILD_TYPE:STRING=RELEASE \
107-
-D Trilinos_ENABLE_Fortran:BOOL=ON \
108-
-D BLAS_LIBRARY_NAMES:STRING="blas" \
109-
-D BLAS_LIBRARY_DIRS:PATH=/usr/lib/libblas/ \
110-
-D TPL_BLAS_LIBRARIES:PATH=/usr/lib/libblas/ \
111-
-D Trilinos_WARNINGS_AS_ERRORS_FLAGS:STRING="" \
112-
-D CMAKE_INSTALL_PREFIX:PATH=/usr/local/ \
113-
-D BUILD_SHARED_LIBS:BOOL=ON ../
114-
115-
make install
101+
cmake -D Trilinos_ENABLE_OPTIONAL_PACKAGES:BOOL=ON \
102+
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=ON \
103+
-D CMAKE_CXX_FLAGS:STRING="-O3" \
104+
-D CMAKE_C_FLAGS:STRING="-O3" \
105+
-D CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE \
106+
-D Trilinos_VERBOSE_CONFIGURE:BOOL=FALSE \
107+
-D TPL_ENABLE_MPI:BOOL=ON \
108+
-D CMAKE_BUILD_TYPE:STRING=RELEASE \
109+
-D Trilinos_ENABLE_Fortran:BOOL=ON \
110+
-D BLAS_LIBRARY_NAMES:STRING="blas" \
111+
-D BLAS_LIBRARY_DIRS:PATH=/usr/lib/libblas/ \
112+
-D TPL_BLAS_LIBRARIES:PATH=/usr/lib/libblas/ \
113+
-D Trilinos_WARNINGS_AS_ERRORS_FLAGS:STRING="" \
114+
-D CMAKE_INSTALL_PREFIX:PATH=/usr/local/ \
115+
-D BUILD_SHARED_LIBS:BOOL=ON ../
116+
117+
make install
116118

117119
- if some packages create conflicts they can be disabled as seen on the Trilinos webpage
118120

119-
120-
121-
122-
123-
### deal2lkit Installation procedure
124-
Follow the detailed [instruction](https://https://github.com/mathLab/deal2lkit) to install deal2lkit.
125-
126-
127121
### pi-BEM Installation procedure
128122

129123
Then you can clone the repository and compile it
130124

131-
git clone https://github.com/mathLab/pi-BEM.git
132-
cd pi-BEM
133-
mkdir build
134-
cd build
135-
cmake ../
136-
make -j4
125+
git clone <https://github.com/mathLab/pi-BEM.git>
126+
cd pi-BEM
127+
mkdir build
128+
cd build
129+
cmake ../
130+
make -j4
137131

138-
After you have compiled your application, you can run
132+
After you have compiled your application, you can run
139133

140-
make test
134+
make test
141135

142136
or
143-
144-
ctest
137+
138+
ctest
145139

146140
to start the testsuite.
147141

148142
Take a look at
149-
https://www.dealii.org/developer/developers/testsuite.html for more
143+
<https://www.dealii.org/developer/developers/testsuite.html> for more
150144
information on how to create tests and add categories of tests.
151145

152146
If you want you can run a preliminary execution in the build library typing
153-
154-
mpirun -np 1 bem_fma_2d
155-
156-
this will automatically generate the parameter file for the bi-dimensional run while
157147

158-
mpirun -np 1 bem_fma_3d
159-
148+
mpirun -np 1 bem_fma_2d
149+
150+
this will automatically generate the parameter file for the bi-dimensional run while
151+
152+
mpirun -np 1 bem_fma_3d
153+
160154
will create a proper parameter file for a 3 dimensional simulation.
161155

162156
# Notice to developers
@@ -165,34 +159,28 @@ Before making a pull request, please make sure you run the script
165159

166160
./scripts/indent
167161

168-
from the base directory of this project, to ensure that no random
162+
from the base directory of this project, to ensure that no random
169163
white space changes are inserted in the repository.
170164

171-
The script requires Artistic Style Version 2.04 (astyle) to work
172-
properly.
165+
The script requires `clang-format` version 16.0.6 to work properly.
173166

174167
# Cite this work
175168

176169
If you use this software, please consider citing the following work:
177170

178-
@article{GiulianiMolaHeltai2018,
179-
doi = {10.1016/j.advengsoft.2018.03.008},
180-
url = {https://doi.org/10.1016/j.advengsoft.2018.03.008},
181-
year = {2018},
182-
month = {jul},
183-
publisher = {Elsevier {BV}},
184-
volume = {121},
185-
pages = {39--58},
186-
author = {Nicola Giuliani and Andrea Mola and Luca Heltai},
187-
title = {$\uppi$ - {BEM} : A flexible parallel implementation for adaptive, geometry aware, and high order boundary element methods},
188-
journal = {Advances in Engineering Software}
189-
}
190-
191-
192-
193-
#Licence
171+
@article{GiulianiMolaHeltai2018,
172+
doi = {10.1016/j.advengsoft.2018.03.008},
173+
url = {<https://doi.org/10.1016/j.advengsoft.2018.03.008}>,
174+
year = {2018},
175+
month = {jul},
176+
publisher = {Elsevier {BV}},
177+
volume = {121},
178+
pages = {39--58},
179+
author = {Nicola Giuliani and Andrea Mola and Luca Heltai},
180+
title = {$\uppi$ - {BEM} : A flexible parallel implementation for adaptive, geometry aware, and high order boundary element methods},
181+
journal = {Advances in Engineering Software}
182+
}
183+
184+
# Licence
194185

195186
Please see the file [LICENSE](https://github.com/mathLab/pi-BEM/blob/master/LICENSE) for details
196-
197-
198-

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9.5.0
1+
9.6.0

docker/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM dealii/dealii:v9.5.0-jammy
1+
FROM dealii/dealii:v9.6.0-jammy
22

33
# pi-BEM master image
44
RUN git clone https://github.com/mathLab/pi-BEM/ &&\

include/bem_fma.h

+6-6
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,10 @@ class BEMFMA : public ParameterAcceptor
9898
/// Mapping in the BEMFMA class. It also sets up some useful vector for,
9999
/// mixed boundary conditions and double nodes handling.
100100
void
101-
init_fma(const DoFHandler<dim - 1, dim> & input_dh,
101+
init_fma(const DoFHandler<dim - 1, dim> &input_dh,
102102
const std::vector<std::set<types::global_dof_index>> &db_in,
103-
const TrilinosWrappers::MPI::Vector & input_sn,
104-
const Mapping<dim - 1, dim> & input_mapping =
103+
const TrilinosWrappers::MPI::Vector &input_sn,
104+
const Mapping<dim - 1, dim> &input_mapping =
105105
StaticMappingQ1<dim - 1, dim>::mapping,
106106
unsigned int quad_order = 4,
107107
unsigned int sing_quad_order = 5);
@@ -173,8 +173,8 @@ class BEMFMA : public ParameterAcceptor
173173
multipole_matr_vect_products(
174174
const TrilinosWrappers::MPI::Vector &phi_values,
175175
const TrilinosWrappers::MPI::Vector &dphi_dn_values,
176-
TrilinosWrappers::MPI::Vector & matrVectProdN,
177-
TrilinosWrappers::MPI::Vector & matrVectProdD) const;
176+
TrilinosWrappers::MPI::Vector &matrVectProdN,
177+
TrilinosWrappers::MPI::Vector &matrVectProdD) const;
178178

179179

180180
// void compute_m2l_flags();
@@ -209,7 +209,7 @@ class BEMFMA : public ParameterAcceptor
209209
/// architectures.
210210
TrilinosWrappers::PreconditionILU &
211211
FMA_preconditioner(const TrilinosWrappers::MPI::Vector &alpha,
212-
AffineConstraints<double> & c);
212+
AffineConstraints<double> &c);
213213

214214
protected:
215215
/// Three pointers to the problem parameters to be set equal to

0 commit comments

Comments
 (0)