Skip to content

Commit 88111b9

Browse files
committed
Merge branch 'release/v0.4.0'
* release/v0.4.0: fix error messages examples: boris: refactor logging initialization prepare Changelog for v0.4.0 add Selman to mailmap file logging: immediately print PFASST++ version number on start cmake: adding version number as const-string examples: boris: fix Boris-PFASST configuration Add Matt's key. docu: adjusting installation instructions fixing a couple of CppCheck warnings related to style and performance examples: boris: deactivate same levels by default examples: boris: Boris-PFASST, is that all? hashstack: Bump hashstack version to get latest CMake. implicit: Use LU decomposition in sweeps. implicit: Add lu_decomposition (LU without pivoting). implicit: Tighten up the implicit sweeper. tests: Update vdP tests. examples: Use implicit sweeper in vdP instead of IMEX seeper. implicit: Added `implicit_sweeper.hpp`. logging: add MPI rank to logging output (iff MPI enabled) mpi: stupid me ... cmake: fix handling of mpi examples: mpi: a few beautifications docu: add walk-through for JUQUEEN cmake: first draft for JUQUEEN toolchain file cmake: rework how MPI compiler wrappers are handled cmake: use Boost's static libs when all other are static cmake: fftw-detection module can handle dir hints examples: advec: make mpi example take cmd options cleanup includes pfasst: Use Controller logger. pfasst: Make sure num of procs and time steps are consistent. advec: Call `set_options`. mpi: re-require the user to call MPI_Init logging: add '--quiet/-q' flag to disable stdout config: mpi: let only rank 0 print help message examples: boris: enable residual control for MLSDC Tidy whitespace. Remove z1. examples: boris: fixing boris MLSDC for different levels examples: boris: some code cleanup config: fix a small issue with cmd args tests: mpi test didn't wrote XML output tools: fix coverage report script cmake: adjust make targets for MPI examples: adjust the MPI example to improved init-function logging: make logging on MPI runs only go to per-rank-files done bug fixes in interface_impl and sdc_impl docu: fix capitalization of brief docs docu: using Twitter Bootstrap for generated HTML pages doxygen: update Doxyfile to new version of Doxygen update PGP key ID and fingerprint docu: fix multiple subpaging of changelog docu: small remark on docu section in style guide docu: examples: improve examples docu: improve controller interfaces docu: improve Encapsulation and EncapSweeper docu: improve quadrature stuff docu: improve utilities and general stuff docu: adding docu modules logging: adjust easylogging API logging: update easyloggingpp from v9.75 to v9.80 logging: fix custom logger timestamp precision poly: Use a fixed number of DKW iterations for roots. fix: iostream needed by config.hpp reorderung: moving implementation files into separate directory tree reordering: moving controllers into own subfolder internals: splitting up decls/defs for encapsulation related stuff internals: splitting up decls/defs for quadrature classes internals: splitting up decls/defs for mpi communicator internals: splitting up decls/defs for pfasst controller internals: splitting up decls/defs for sdc controller internals: splitting up decls/defs for mlsdc controller internals: splitting up decls/defs for config options internals: splitting up decls/defs for controller internals: a few docu fixes/additions internals: unbroadening base exception classes internals: splitting up decls/defs for interfaces a few updates to the gitignore file tools: a few additional usability tweaks tools: move generate_coverage script to tools fix failure with tests not producing tracing data rewritten coverage report generation script cmake: specify minimum patch version fix a cmakefile bug with cmake 3.1.x tests: examples: boris: fix sweeper test examples: boris: tests: fix particle utility tests and bug in operators examples: boris: linearized particle cloud components docs: Update install instructions. config: Add abs/rel residual tolerances. examples: Update option initialization. config: Tidy and set defaults. config: Get rid of redundant `add_option`. config: Add two stage config/log init to `pfasst::init`. examples: boris: use and override `void residual(dt, dst) const` config: Revamp adding options. examples: advec: enable cmd arg for residual tolerances config: enable cmd args for residual tolerances examples: boris: analysis: a little more intuitive examples: boris: make tau correction 0-to-node and don't reintegrate examples: boris: make different MLSDC levels for Boris optional examples: boris: steps towards working Boris-MLSDC examples: boris: introducing MLSDC for Boris tests: Add RelativeAdaptiveErrorTest to test_advection_diffusion.cpp. mpi: Minor tidying. tests: Re-organise the adaptive MLSDC tests a bit. tests: Add AdaptiveErrorTest for AD example to MPI PFASST. examples: enable logging for autobuild example log: better logging for MLSDC log: adding ability to add further named loggers tests: Relax some tolerances. FAS: Test residual+FAS for AD example. examples: boris: prepare separation of left/right-is-node handling examples: boris: some tweaks and additions to python analysis examples: boris: adding IPython notebook for analysing examples: boris: minor bugfixes and header/impl split for sweeper imex: Fix inclusion of FAS corrections in residuals. mlsdc, pfasst: Call `post_step` on all levels. examples: boris: calculating distances is hard ... examples: boris: improving logging and consistency logging: remove auto-spacing logging improvements cmake: fix random seed examples: boris: tweaking logging and data output examples: boris: multi particle works!!! *yeah* encap: Compute relative residuals as well. imex: Add FAS corrections to residual. status: Bug fix. status: Move to blocking send/recv. examples: boris: some logging tweaks examples: boris: single-particle system works again *yeah* examples: boris: a bunch of debugging and fixing examples: boris: fixing compiler warnings status: Break iterations in PFASST when converged. status: Begin adding converged status MPI communication. examples: boris: at least not segfaulting anymore ... examples: boris: a few bug fixes examples: boris: fixed examples namespace for Boris examples: boris: remove legacy code examples: boris: adjust boris main and tests to recent changes examples: boris: adjust sweeper to reworked framework cmake: examples: adjustments for recent boris changes examples: boris: solver wrapper interface + example impl for example solver examples: boris: some tweaks to example solver library examples: boris: some tweaks to particle data structures tests: examples: boris: test cases for particle utility functions examples: boris: rewritten particle data structure examples: boris: simple physics solver as separate library examples: boris: a few logging related tweaks examples: boris: a few logging-related improvements examples: boris: fix computation of exact solution (+caching) examles: boris: variable renaming tests: examples: adding sweeper convergence tests for Boris examples: boris: using logging Signed-off-by: Torbjörn Klatt <[email protected]>
2 parents d7fe9ac + 464aa21 commit 88111b9

File tree

131 files changed

+16239
-7679
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

131 files changed

+16239
-7679
lines changed

.gitignore

Lines changed: 72 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
*.info
66
/include/pfasst/site_config.hpp
77

8+
.python-version
9+
__pycache__
10+
.ipynb_checkpoints
11+
/run
12+
813
# Created by http://www.gitignore.io
914

1015
### C ###
@@ -37,24 +42,14 @@
3742
# Compiled Object files
3843
*.slo
3944
*.lo
40-
*.o
41-
*.obj
4245

4346
# Compiled Dynamic libraries
44-
*.so
45-
*.dylib
46-
*.dll
4747

4848
# Compiled Static libraries
4949
*.lai
5050
*.la
51-
*.a
52-
*.lib
5351

5452
# Executables
55-
*.exe
56-
*.out
57-
*.app
5853

5954

6055
### Eclipse ###
@@ -123,11 +118,14 @@ tramp
123118

124119

125120
### Linux ###
126-
*~
127121

128122
# KDE directory preferences
129123
.directory
130124

125+
# KDevelop
126+
*.kdev4
127+
.kdev4/
128+
131129

132130
### OSX ###
133131
.DS_Store
@@ -200,3 +198,66 @@ atlassian-ide-plugin.xml
200198
# Crashlytics plugin (for Android Studio and IntelliJ)
201199
com_crashlytics_export_strings.xml
202200

201+
# Created by https://www.gitignore.io
202+
203+
### Python ###
204+
# Byte-compiled / optimized / DLL files
205+
__pycache__/
206+
*.py[cod]
207+
208+
# C extensions
209+
*.so
210+
211+
# Distribution / packaging
212+
.Python
213+
env/
214+
build/
215+
develop-eggs/
216+
dist/
217+
downloads/
218+
eggs/
219+
lib/
220+
lib64/
221+
parts/
222+
sdist/
223+
var/
224+
*.egg-info/
225+
.installed.cfg
226+
*.egg
227+
228+
# PyInstaller
229+
# Usually these files are written by a python script from a template
230+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
231+
*.manifest
232+
*.spec
233+
234+
# Installer logs
235+
pip-log.txt
236+
pip-delete-this-directory.txt
237+
238+
# Unit test / coverage reports
239+
htmlcov/
240+
.tox/
241+
.coverage
242+
.cache
243+
nosetests.xml
244+
coverage.xml
245+
cppcheck.xml
246+
/cppcheck
247+
248+
# Translations
249+
*.mo
250+
*.pot
251+
252+
# Django stuff:
253+
*.log
254+
255+
# Sphinx documentation
256+
docs/_build/
257+
258+
# PyBuilder
259+
target/
260+
261+
# IPython
262+
*.ipynb_checkpoints/
263+

.mailmap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ Matthew Emmett <[email protected]> <[email protected]>
44
Daniel Ruprecht <[email protected]> danielru <[email protected]>
55
Daniel Ruprecht <[email protected]> Daniel <[email protected]>
66
Daniel Ruprecht <[email protected]> Daniel <[email protected]>
7+
Selman Terzi <[email protected]>

3rdparty/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ message(STATUS "----------------------------------------------------------------
1010
message(STATUS "Boost")
1111

1212
set(Boost_USE_MULTITHREADED ON)
13+
if(${pfasst_BUILD_SHARED_LIBS})
14+
set(Boost_USE_STATIC_LIBS OFF)
15+
else()
16+
set(Boost_USE_STATIC_LIBS ON)
17+
endif()
1318
set(Boost_ADDITIONAL_VERSIONS "1.57" "1.57.0" ${Boost_ADDITIONAL_VERSIONS})
1419

1520
if(${compiler_version_available} AND ${CMAKE_CXX_COMPILER_ID} MATCHES Clang)

CHANGELOG.md

Lines changed: 106 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,107 @@
11
# Changelog {#page_changelog}
22

3+
## v0.4.0 -- The Big Improvement (2015/04/17)
4+
5+
DOI: [10.6084/m9.figshare.1381721](http://dx.doi.org/10.6084/m9.figshare.1381721)
6+
7+
$ git diff --stat v0.3.0..v0.4.0
8+
> 131 files changed, 15182 insertions(+), 6940 deletions(-)
9+
10+
### Notable Features
11+
12+
* Iteration controll for PFASST via relative and absolute residual tolerances.
13+
([#139][], [#141][], [#142][])
14+
15+
* Adding an implicit sweeper with support for LU decomposition of quadrature matrix.
16+
([#150][])
17+
18+
* General improvements to the logging and configuration functionality.
19+
([#144][], [#145][], [#146][], [#148][], [#163][], [#168][], [#169][], [#177][])
20+
21+
* Successful tests on supercomputers (i.e., JUQUEEN)
22+
([#168][], [#176][])
23+
24+
* Improved code organization.
25+
([#156][], [#157][], [#158][], [#170][], [#181][])
26+
27+
* Rewamped documentation.
28+
([#149][], [#160][], [#179][], [#183][])
29+
30+
* Examples: Boris supports multiple particles and multi-level coarsening
31+
([#152][], [#172][], [#180][])
32+
33+
### Details
34+
35+
* logging framework [Easylogging][] has been updated from v9.75 to v9.80.
36+
([#163][])
37+
38+
* root finding algorithm for polynomials uses fixed number of iterations or residual tolerance.
39+
([#162][])
40+
41+
* reworked how `pfasst::init(...)` is used.
42+
([#148][])
43+
44+
* minimum _CMake_ version bumped to 2.8.*6*
45+
([#153][])
46+
47+
* `git describe`-based version number as `pfasst::VERSION`
48+
([#185][])
49+
50+
* script to generate and compile test coverage report was rewritten in Python 3.x
51+
([#154][])
52+
53+
[#139]: https://github.com/Parallel-in-Time/PFASST/pull/139
54+
[#141]: https://github.com/Parallel-in-Time/PFASST/pull/141
55+
[#142]: https://github.com/Parallel-in-Time/PFASST/pull/142
56+
[#144]: https://github.com/Parallel-in-Time/PFASST/pull/144
57+
[#145]: https://github.com/Parallel-in-Time/PFASST/pull/145
58+
[#146]: https://github.com/Parallel-in-Time/PFASST/pull/146
59+
[#148]: https://github.com/Parallel-in-Time/PFASST/pull/148
60+
[#149]: https://github.com/Parallel-in-Time/PFASST/pull/149
61+
[#150]: https://github.com/Parallel-in-Time/PFASST/pull/150
62+
[#152]: https://github.com/Parallel-in-Time/PFASST/pull/152
63+
[#153]: https://github.com/Parallel-in-Time/PFASST/pull/153
64+
[#154]: https://github.com/Parallel-in-Time/PFASST/pull/154
65+
[#156]: https://github.com/Parallel-in-Time/PFASST/pull/156
66+
[#157]: https://github.com/Parallel-in-Time/PFASST/pull/157
67+
[#158]: https://github.com/Parallel-in-Time/PFASST/pull/158
68+
[#160]: https://github.com/Parallel-in-Time/PFASST/pull/160
69+
[#162]: https://github.com/Parallel-in-Time/PFASST/pull/162
70+
[#163]: https://github.com/Parallel-in-Time/PFASST/pull/163
71+
[#168]: https://github.com/Parallel-in-Time/PFASST/pull/168
72+
[#169]: https://github.com/Parallel-in-Time/PFASST/pull/169
73+
[#170]: https://github.com/Parallel-in-Time/PFASST/pull/170
74+
[#172]: https://github.com/Parallel-in-Time/PFASST/pull/172
75+
[#176]: https://github.com/Parallel-in-Time/PFASST/pull/176
76+
[#177]: https://github.com/Parallel-in-Time/PFASST/pull/177
77+
[#180]: https://github.com/Parallel-in-Time/PFASST/pull/180
78+
[#181]: https://github.com/Parallel-in-Time/PFASST/pull/181
79+
[#183]: https://github.com/Parallel-in-Time/PFASST/pull/183
80+
[#185]: https://github.com/Parallel-in-Time/PFASST/pull/185
81+
82+
### Contributors
83+
84+
* Matthew Emmett, Lawrence Berkeley National Laboratory ([memmett][])
85+
* Torbjörn Klatt, Jülich Supercomputing Centre ([torbjoernk][])
86+
* Daniel Ruprecht, Institute of Computational Science, University of Lugano ([danielru][])
87+
* Robert Speck, Jülich Supercomputing Centre ([pancetta][])
88+
* Selman Terzi, Jülich Supercomputing Centre ([selmanTerzi][])
89+
90+
[memmett]: https://github.com/memmett
91+
[torbjoernk]: https://github.com/torbjoernk
92+
[danielru]: https://github.com/danielru
93+
[pancetta]: https://github.com/pancetta
94+
[selmanTerzi]: https://github.com/selmanTerzi
95+
96+
---
97+
398
## v0.3.0 -- The Big Cleanup (2014/12/12)
499

5100
DOI: [10.5281/zenodo.13221](http://dx.doi.org/10.5281/zenodo.13221)
6101

102+
$ git diff --stat v0.2.0..v0.3.0
103+
> 84 files changed, 7687 insertions(+), 1968 deletions(-)
104+
7105
### Notable Features
8106

9107
* Complete rewrite of quadrature functions.
@@ -15,7 +113,7 @@ DOI: [10.5281/zenodo.13221](http://dx.doi.org/10.5281/zenodo.13221)
15113
* Introduced framework for passing command line parameters to programs using PFASST++.
16114
([#88][])
17115

18-
* Versatile and colourful logging framework based on [Easylogging++](https://github.com/easylogging/easyloggingpp).
116+
* Versatile and colourful logging framework based on [Easylogging++][].
19117
([#105][], [#123][])
20118

21119
* New Example: Boris-SDC.
@@ -91,6 +189,9 @@ DOI: [10.5281/zenodo.13221](http://dx.doi.org/10.5281/zenodo.13221)
91189

92190
DOI: [10.5281/zenodo.11517](http://dx.doi.org/10.5281/zenodo.11517)
93191

192+
$ git diff --stat v0.1.0..v0.2.0
193+
> 52 files changed, 3306 insertions(+), 875 deletions(-)
194+
94195
### Notable Features
95196

96197
* Addition of MPI based PFASST.
@@ -129,7 +230,7 @@ DOI: [10.5281/zenodo.11517](http://dx.doi.org/10.5281/zenodo.11517)
129230
[#76]: https://github.com/Parallel-in-Time/PFASST/pull/76
130231
[#77]: https://github.com/Parallel-in-Time/PFASST/pull/77
131232
[#78]: https://github.com/Parallel-in-Time/PFASST/pull/78
132-
[#78]: https://github.com/Parallel-in-Time/PFASST/pull/81
233+
[#81]: https://github.com/Parallel-in-Time/PFASST/pull/81
133234

134235
### Contributors
135236

@@ -176,3 +277,6 @@ DOI: [10.5281/zenodo.11047](http://dx.doi.org/10.5281/zenodo.11047)
176277

177278
[memmett]: https://github.com/memmett
178279
[torbjoernk]: https://github.com/torbjoernk
280+
281+
282+
[Easylogging++]: https://github.com/easylogging/easyloggingpp

CMakeLists.txt

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 2.8)
1+
cmake_minimum_required(VERSION 2.8.6)
22
project(pfasst)
33

44
list(APPEND CMAKE_MODULE_PATH ${pfasst_SOURCE_DIR}/cmake)
@@ -14,17 +14,33 @@ list(APPEND CMAKE_FIND_ROOT_PATH ${pfasst_SOURCE_DIR}/stack)
1414
set_directory_properties(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/3rdparty)
1515

1616
option(pfasst_DISABLE_LIBCXX "Disable use of LLVM's libc++ when compiling with Clang." ON )
17-
option(pfasst_BUILD_SHARED_LIBS "Build shared libraries." OFF)
17+
option(pfasst_BUILD_SHARED_LIBS "Build shared libraries." ON )
1818
option(pfasst_BUILD_EXAMPLES "Build example programs." ON )
1919
CMAKE_DEPENDENT_OPTION(pfasst_INSTALL_EXAMPLES "Install example programs." ON
2020
"pfasst_BUILD_EXAMPLES" OFF)
2121
option(pfasst_BUILD_TESTS "Build test suite for PFASST." ON )
2222
option(pfasst_WITH_MPI "Build with MPI enabled." OFF)
2323
option(pfasst_WITH_GCC_PROF "Enable excessive debugging & profiling output with GCC." OFF)
24+
option(pfasst_DEFAULT_RAND_SEED "Using a hardcoded random seed" ON )
2425

2526
if(${pfasst_WITH_MPI})
2627
find_package(MPI REQUIRED)
27-
message(STATUS "Using MPI C++ Compiler: ${MPI_CXX_COMPILER}")
28+
if(NOT "${CMAKE_CXX_COMPILER}" STREQUAL "${MPI_CXX_COMPILER}" OR
29+
NOT "${CMAKE_C_COMPILER}" STREQUAL "${MPI_C_COMPILER}")
30+
message(STATUS "C++ Compiler: ${CMAKE_CXX_COMPILER}")
31+
message(STATUS "MPI C++ Compiler Wrapper: ${MPI_CXX_COMPILER}")
32+
message(WARNING "Please make sure to set CXX and CC to the MPI compiler wrappers!")
33+
set(CMAKE_CXX_COMPILER "${MPI_CXX_COMPILER}")
34+
set(CMAKE_C_COMPILER "${MPI_C_COMPILER}")
35+
message(STATUS "Set default compilers to MPI compilers.")
36+
endif()
37+
message(STATUS "Using MPI C++ Compiler Wrapper: ${MPI_CXX_COMPILER}")
38+
message(STATUS "USing MPI C Compiler Wrapper: ${MPI_C_COMPILER}")
39+
add_definitions(-DWITH_MPI)
40+
endif()
41+
42+
if(pfasst_DEFAULT_RAND_SEED)
43+
set(pfasst_RANDOM_SEED "42")
2844
endif()
2945

3046
# Check for C++11 support
@@ -103,6 +119,12 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
103119
"build-in profiling support"
104120
)
105121
endif()
122+
if(pfasst_RANDOM_SEED)
123+
add_feature_info(DefaultRandomSeed
124+
pfasst_RANDOM_SEED
125+
"using specific default random seed ${pfasst_RANDOM_SEED}"
126+
)
127+
endif()
106128

107129
set(3rdparty_INCLUDES)
108130
set(3rdparty_DEPENDEND_LIBS)
@@ -129,18 +151,24 @@ message(STATUS "Configuring 3rd party libraries")
129151
# - FFTW_LIBRARIES (if pfasst_BUILD_EXAMPLES)
130152
add_subdirectory(3rdparty)
131153

154+
message(STATUS "********************************************************************************")
155+
message(STATUS "Configuring sources")
156+
update_site_config()
157+
158+
add_custom_target(set_version ALL
159+
COMMAND ${pfasst_SOURCE_DIR}/tools/get_pfasst_version.sh
160+
WORKING_DIRECTORY ${pfasst_SOURCE_DIR}
161+
COMMENT "Updating PFASST++ version number"
162+
USES_TERMINAL
163+
)
164+
set(pfasst_DEPENDEND_TARGETS set_version ${pfasst_DEPENDEND_TARGETS})
165+
132166
list(LENGTH pfasst_DEPENDEND_LIBS pfasst_NUM_DEPENDEND_LIBS)
133167
list(LENGTH pfasst_DEPENDEND_TARGETS pfasst_NUM_DEPENDEND_TARGETS)
134168
list(LENGTH pfasst_TESTS_DEPENDEND_TARGETS pfasst_TESTS_NUM_DEPENDEND_TARGETS)
135169

136-
message(STATUS "********************************************************************************")
137-
message(STATUS "Configuring sources")
138-
set(WARNING_COMMENT "/*\n * DO NOT ALTER THIS FILE\n *\n * It will get rewritten on CMake's next run\n *\n */")
139-
configure_file(
140-
"${pfasst_SOURCE_DIR}/cmake/site_config.hpp.in"
141-
"${CMAKE_CURRENT_SOURCE_DIR}/include/pfasst/site_config.hpp"
142-
)
143170
add_subdirectory(include)
171+
add_subdirectory(src)
144172

145173
if(pfasst_BUILD_EXAMPLES)
146174
message(STATUS "********************************************************************************")
@@ -163,6 +191,10 @@ install(DIRECTORY include/
163191
DESTINATION include
164192
FILES_MATCHING PATTERN "*.hpp"
165193
)
194+
install(DIRECTORY src/
195+
DESTINATION include
196+
FILES_MATCHING PATTERN "*.hpp"
197+
)
166198

167199
if(pfasst_BUILD_EXAMPLES AND pfasst_INSTALL_EXAMPLES)
168200
message(STATUS " example programs: <PREFIX>/bin")

0 commit comments

Comments
 (0)