Matthias Maier [Thu, 29 Oct 2015 03:47:29 +0000 (22:47 -0500)]
Bugfix: Provide missing operator+ and operator- variants
Unfortunately, it is not possible any more to exploit an implicit
conversion from SymmetricTensor to Tensor due to the heavily templated
operator variants for Tensor.
Thus, provide mixed operator types. (And clean up symmetric_tensor.h
later).
Alistair Bentley [Tue, 27 Oct 2015 15:14:07 +0000 (11:14 -0400)]
Implemented BDM_grad_grad in 3D
* Added second derivative terms to polynomials_bdm class in 3D
* Added tests and output to verify 2nd derivatives are returning
proper values
* I carefully checked the output file to confirm the correct output
is being produced
Changed size_type in PreconditionChebyshev. Added static_asserts that
compare matrix and vector types in precondtioners. Updated
linear_operator_08 test to account for inability to wrap
IterativeInverse in a linear_operator.
Rename the 'fast' parameter to 'omit_zeroing_entries'.
This is a more accurate representation of what the parameter achieves,
and should be easier to understand. The fact that this mode is also
'fast' is sort of a side effect of the semantics the parameter
really carries.
In the Table class, use omit_default_initialization.
Alistair Bentley [Tue, 20 Oct 2015 19:57:50 +0000 (15:57 -0400)]
Correction to BDM degree method
* The documentation says this function should return one less than
the highest polynomial degree. This is consistent with the
notation used in the literature on BDM polynomials and is what I
would expect the function to return.
* However, the function actually returns the degree of the highest
polynomial degree because it calls PolynomialSpace.degree() (note:
in this context, PolynomialSpace is the complete polynomial space
of degree k, next then we add elements from k+1 to complete the
BDM space) which specifically states it does not return the
Maxmial degree of the polynomial, but the number of polynomials
given to the constructor.
* If I understand correctly, since the number of polynomials given
to the constructor includes constants, this returns degree+1.
* To correct this, one needs to be subtracted from the degree of the
polynomial_space.
* A typo in the 3D bdm_grad functions has also been corrected
* Made a correction in the compute method to reflect the change in the
degree method.
* Corrected out in the test polynomials_bdm_01.output file
* Edited some names in the test bdm_1.cc
Timo Heister [Fri, 23 Oct 2015 18:42:07 +0000 (14:42 -0400)]
fix bdm tests
- turns out we need one more iteration in the CG solve
- fix test output (this never worked before?!)
- speed up by skipping highest degree in debug mode
- small difference in release/debug output (dropping small entries), so
adding alternative .output file
Ammended native deal.II preconditioners and solvers for use in LinearOperators.
Improved: Native deal.II preconditioners can now be directly wrapped as
LinearOperators. This allows them to be used in the construction of more complex
linear solvers, such as where the approximate inverse to a matrix is to be
defined as a preconditioner to said matrix.
New: Added a LinearOperator test for deal.II SparseMatrix solvers and
preconditioners.
Added a test to check that the various combinations of deal.II solvers and
preconditioners (for the SparseMatrix type) work with the linear_operator and
inverse_operator functions. By 'work' one means that they both compile and also
produce a sensible answer.
Note that the preconditioners are expected to act as per usual (i.e. in the
preconditioner slot in inverse_operator) as well as a standard matrix type in
linear_operator. This is necessary as they will be used in this context later
when a schur_matrix_operator and approximate_schur_matrix_operator is developed.
Fixed: Reinitialised (zeroed) range vectors in the construction of an
inverse_operator before the solve calls. This corrects a bug wherein the
starting point of the solver was garbage leading to potential divergence in the
linear solver.
Timo Heister [Tue, 20 Oct 2015 21:01:03 +0000 (17:01 -0400)]
update in/out GMG matrices
- replace logic for in/out matrices for non-meshworker step-16/step-50
- avoid usage of get_refinement_edge_boundary_indices
- test with/without meshworker in step-16-bdry1