Matthias Maier [Mon, 30 Mar 2015 09:03:35 +0000 (11:03 +0200)]
Testsuite: Allow to use stdout as comparison for test outputs
This commit introduces an alternative to the current test setup:
If a test does not create a file "output" for further test comparison its
output to stdout is used to populate and output file instead. For
compatibility, if a test creates the "output" file the stdout stream is
discarded.
Matthias Maier [Sat, 28 Mar 2015 22:24:47 +0000 (23:24 +0100)]
Testsuite: Refactor tests/CMakeLists.txt
As it turns out, it is now reasonably straight forward to restructure
tests/CMakeLists.txt to be also configured as an independent project.
This is particularly useful to test a given deal.II installation at an
independent, later time (without the binary directory being available any
more).
Matthias Maier [Thu, 26 Mar 2015 16:10:35 +0000 (17:10 +0100)]
CMake: Improve DEAL_II_ADD_TEST macro
- For every deal.II build type (given by the variable DEAL_II_BUILD_TYPES)
that is a (case insensitive) substring of CMAKE_BUILD_TYPE a test is
defined.
Matthias Maier [Thu, 26 Mar 2015 14:36:35 +0000 (15:36 +0100)]
CMake: Refactor testsuite setup into DEAL_II_PICKUP_TESTS
This commit refactors all the testsuite setup that was originally done in
setup_testsuitesubproject.cmake into the DEAL_II_PICKUP_TESTS macro defined
in ./cmake/macros/macro_deal_ii_pickup_tests.cmake
Matthias Maier [Thu, 26 Mar 2015 13:48:25 +0000 (14:48 +0100)]
CMake: Relocate testsuite macros and scripts to ./cmake/macros
This commit relocates all testsuite macros back to cmake/macros and
the run_test.cmake and normalize.pl script to cmake/scripts. Further, all
of those are copied to the build directory and installed appropriately.
Avoid code duplication and use the much better tested conversion functions in
namespace Utilities. This also covers a number of corner cases that likely
didn't work before.
Timo Heister [Mon, 23 Mar 2015 21:19:19 +0000 (17:19 -0400)]
Fix: BlockIndices in BlockDynamicSP
Implement constructor and reinit with BlockIndices for
BlockDynamicSparsityPattern. This existed for BlockCompressedSP but not
for BlockCompressedSimpleSP, but BlockCompressedSP is now a typedef to
BlockDynamicSP (see 3b9a4bc2).
This should fix the test integrators/cochain_01.cc
Adjust output of GridOut::write_gnuplot() for 1d triangulations.
The GridOut::write_gnuplot() function produced output
for 1d meshes embedded in higher dimensional spaces that was
invalid in that the lines showing individual cells were connected.
While this is not wrong for singly connected 1d meshes, it leads to wrong
results if the domain is not singly connected and not every cell is the
right neighbor of the previous cell.
Timo Heister [Sun, 22 Mar 2015 13:12:27 +0000 (09:12 -0400)]
Allow manual repartitioning in distributed tria
A new flag no_automatic_repartitioning in
parallel::distributed::Triangulation will disable the automatic
repartitioning when calling execute_coarsening_and_refinement() (or
things like refine_global(), ...), resulting in all cells staying on the
processor they were before.
A function repartition() will execute the repartitioning resulting in
the same as the old behavior. Splitting the process of refining and
partitioning into separate functions allows for advanced techniques when
handling several meshes at once.
Added tests that check that attaching and transfering data is working
correctly.
Timo Heister [Sun, 8 Mar 2015 15:08:31 +0000 (11:08 -0400)]
Rework Compressed*SparsityPattern
- rename CompressedSimpleSparsityPattern to DynamicSparsityPattern
- deprecate all Compressed*SparsityPattern classes
- same for BlockCompressed*SparsityPattern
- update examples
- replace non-dynamic sparsity creation in step-7, 8, 9, 13, 14, 16, 23,
24, 25, 28, 29, 35
Motivation for removing the other compressed objects:
Number of degrees of freedom: 274625
FE_Q<3>(4)
CompressedSimple vmpeak: 749024 rss: 530804 make: 5.99s copy: 3.58s
Compressed vmpeak: 744880 rss: 526852 make: 8.59s copy: 3.64s
CompressedSet vmpeak: 3184880 rss: 2966776 make: 92s copy: 18s
Or in Martin's words:
I remember having looked into compute times for the
DoFTools::make_sparsity_pattern in detail some five years ago and all
benchmarks showed CompressedSimpleSparsityPattern as the fastest of the
three. The internal data structure in CSimpleSP is std::vector, thus
simpler than plain CSP where there is an additional array of length 8
with 'fresh' entries about to be submitted but otherwise very similar.
std::set as used in CSetSP does way too many memory allocations and is
most likely slower than inserting into a sorted vector for almost all
imaginable loads with up to a few hundred entries. In particular for how
we mostly use sparsity patterns where each row gets touched as many
times as we have adjacent elements to that DoF.
Last but not least, CSimpleSP is the only one with the appropriate
infrastructure for parallel distributed computations where rows use an
additional IndexSet argument.
Provide more information about an exception. Also replace the non-ASCII
character in "formulae" so that the text shows up correctly in all editors
(including, for example, my emacs installation).