David Wells [Sun, 22 Jan 2017 05:41:09 +0000 (00:41 -0500)]
Give the codim > 0 VectorTools::project functions their own file.
Since these functions don't go into the MatrixFree code we can split them off
with a very small amount of overhead for the additional parallelization. This
lowers the required memory for the last projection instantiation by about a
gigabyte.
Before:
File name Memory, MB Time, s
source/numerics/vector_tools_project.cc 2775 79
source/numerics/vector_tools_project_inst2.cc 2882 92
source/numerics/vector_tools_project_inst3.cc 3948 102
After:
File name Memory, MB Time, s
source/numerics/vector_tools_project_codim.cc 1843 28
source/numerics/vector_tools_project.cc 2774 76
source/numerics/vector_tools_project_inst2.cc 2829 81
source/numerics/vector_tools_project_inst3.cc 2823 86
David Wells [Sun, 22 Jan 2017 00:49:53 +0000 (19:49 -0500)]
Give the hp version of VectorTools::project its own file.
This new file takes about 17 seconds to compile and improves the performance of
the non-hp (i.e., the matrix free) projections a little bit.
before splitting out the hp files:
File name Memory, MB Time, s
source/numerics/vector_tools_project.cc 2860 81
source/numerics/vector_tools_project_inst2.cc 2970 100
source/numerics/vector_tools_project_inst3.cc 3956 114
After:
File name Memory, MB Time, s
source/numerics/vector_tools_project.cc 2775 79
source/numerics/vector_tools_project_inst2.cc 2882 92
source/numerics/vector_tools_project_inst3.cc 3948 102
These numbers come from setting the C++ compiler as a shell script containing
Extensions for Trilinos support in LinearOperators.
Trilinos sparse matrices and preconditions can now we wrapped as
LinearOperators, and can be used (nearly) as naturally as the deal.II
linear algebra classes could. This means that they can be used as a
transpose_operator(), inverse_operator() and within the
schur_complement().
The core support for block operations is also there, but has not been
thoroughly tested.
Make Trilinos Solver classes compatible with LinearOperators.
This patch adds some core functionality to the Trilinos Solver that is
later necessary for them to be compatible with LinearOperators.
Specifically, this is two additional solve() functions that accept
Trilinos EpetraOperators as the input Matrix (with one accomodating
wrapped Trilinos preconditioners, and the other another EpetraOperator
as a preconditioner.).
David Wells [Sun, 15 Jan 2017 23:08:07 +0000 (18:08 -0500)]
Make Tensors trivially copyable.
The implicitly defined copy constructors and assignment operators are no
different from the ones implemented prior to this patch, so we can clean things
up a bit by just using the defaults here.
This has the nice effect of making the class "trivially copyable", which means
compilers may optimize things by using memcpy to copy things instead of the copy
constructor.
David Wells [Sun, 15 Jan 2017 02:53:53 +0000 (21:53 -0500)]
Get rid of some unused friendship declarations.
Clang warns about the second one with the following:
/home/drwells/Documents/Code/CPP/dealii-dev-clang/include/deal.II/lac/sparse_matrix.h:1645:93: warning:
dependent nested name specifier 'SparseMatrixIterators::Accessor<number2, false>::' for friend
class declaration is not supported; turning off access control for 'SparseMatrix'
[-Wunsupported-friend]
template <typename number2> friend class SparseMatrixIterators::Accessor<number2, false>::Reference;
Additionally, MSVC runs into errors with this friendship
declaration (and can compile the library without it), so we can get rid
of it.
David Wells [Sat, 14 Jan 2017 21:25:01 +0000 (16:25 -0500)]
Make a test run faster.
This test previously tended to time out on clang in debug mode (it took
about 580 seconds). This commit skips an extra refinement level to get
the computation time down to about 70 seconds.
Fix the polynomial degree the ABF element reports about itself.
As stated in the original paper (http://www-users.math.umn.edu/~arnold/papers/vecquad.pdf),
section 5, and as also stated in our discussion of the PolynomialsABF element, the
ABF space of order 'r' actually contains polynomials of degree 'r+2'. Report this
accurately.
Without this, the computation of embedding matrices fails in 3d because we integrate
the least squares matrix terms with a quadrature formula of too low order.
Matthias Maier [Thu, 12 Jan 2017 16:34:42 +0000 (10:34 -0600)]
CMake: Rename all object targets to obj_<foo>_(debug|release)
This change is necessary to please the cuda wrapper nvcc that insists on
exporting the target name as preprocessor definition. Unfortunately, a
period "." is an invalid character and we end up with warnings of the
form
"missing whitespace after the macro name"
Fix this by renaming all object targets to only contain underscores.