From ff839be6c344ede6265227cc3438f232e3cb78c7 Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Mon, 13 Apr 2015 19:27:42 +0200 Subject: [PATCH] Introduce internal::LinearOperator namespace --- include/deal.II/lac/block_vector.h | 75 +++++----- include/deal.II/lac/linear_operator.h | 93 ++++++------ include/deal.II/lac/trilinos_block_vector.h | 71 ++++----- .../lac/trilinos_parallel_block_vector.h | 73 +++++----- include/deal.II/lac/trilinos_vector.h | 135 +++++++++--------- 5 files changed, 231 insertions(+), 216 deletions(-) diff --git a/include/deal.II/lac/block_vector.h b/include/deal.II/lac/block_vector.h index 387645e4b9..d7013ee2a9 100644 --- a/include/deal.II/lac/block_vector.h +++ b/include/deal.II/lac/block_vector.h @@ -462,47 +462,50 @@ void swap (BlockVector &u, namespace internal { - template class ReinitRangeFactory; - template class ReinitDomainFactory; - - /* - * A factory class internally used in linear_operator.h. - * Specialization for BlockVector. - */ - template - class ReinitRangeFactory > + namespace LinearOperator { - public: - template - std::function &, bool)> - operator()(const Matrix &matrix) + template class ReinitRangeFactory; + template class ReinitDomainFactory; + + /** + * A factory class internally used in linear_operator.h. + * Specialization for BlockVector. + */ + template + class ReinitRangeFactory > { - return [&matrix](BlockVector &v, bool fast) + public: + template + std::function &, bool)> + operator()(const Matrix &matrix) { - v.reinit(matrix.get_row_indices(), fast); - }; - } - }; - - /* - * A factory class internally used in linear_operator.h. - * Specialization for BlockVector. - */ - template - class ReinitDomainFactory > - { - public: - template - std::function &, bool)> - operator()(const Matrix &matrix) + return [&matrix](BlockVector &v, bool fast) + { + v.reinit(matrix.get_row_indices(), fast); + }; + } + }; + + /** + * A factory class internally used in linear_operator.h. + * Specialization for BlockVector. + */ + template + class ReinitDomainFactory > { - return [&matrix](BlockVector &v, bool fast) + public: + template + std::function &, bool)> + operator()(const Matrix &matrix) { - v.reinit(matrix.get_column_indices(), fast); - }; - } - }; -} + return [&matrix](BlockVector &v, bool fast) + { + v.reinit(matrix.get_column_indices(), fast); + }; + } + }; + } /* namespace LinearOperator */ +} /* namespace internal */ DEAL_II_NAMESPACE_CLOSE diff --git a/include/deal.II/lac/linear_operator.h b/include/deal.II/lac/linear_operator.h index 02308f3997..f7dc617b62 100644 --- a/include/deal.II/lac/linear_operator.h +++ b/include/deal.II/lac/linear_operator.h @@ -905,56 +905,59 @@ blockdiag_linop(const LinearOperatorRange::reinit() with the result of - * Matrix::m(). This class is specialized for more complicated - * data structures, such as TrilinosWrappers::MPI::Vector, etc. - */ - template - class ReinitRangeFactory + namespace LinearOperator { - public: - template - std::function - operator()(const Matrix &matrix) + /** + * A factory class that is responsible for the creation of a + * reinit_range_vector object for a given pair of vector type Range and matrix + * type Matrix. + * + * The generic version of this class just calls + * Range::reinit() with the result of + * Matrix::m(). This class is specialized for more complicated + * data structures, such as TrilinosWrappers::MPI::Vector, etc. + */ + template + class ReinitRangeFactory { - return [&matrix](Range &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.m(), fast); - }; - } - }; + return [&matrix](Range &v, bool fast) + { + v.reinit(matrix.m(), fast); + }; + } + }; - /* - * A factory class that is responsible for the creation of a - * reinit_domain_vector object for a given pair of vector type Domain and - * matrix type Matrix. - * - * The generic version of this class just calls - * Domain::reinit() with the result of - * Matrix::n(). This class is specialized for more complicated - * data structures, such as TrilinosWrappers::MPI::Vector, etc. - */ - template - class ReinitDomainFactory - { - public: - template - std::function - operator()(const Matrix &matrix) + /** + * A factory class that is responsible for the creation of a + * reinit_domain_vector object for a given pair of vector type Domain and + * matrix type Matrix. + * + * The generic version of this class just calls + * Domain::reinit() with the result of + * Matrix::n(). This class is specialized for more complicated + * data structures, such as TrilinosWrappers::MPI::Vector, etc. + */ + template + class ReinitDomainFactory { - return [&matrix](Domain &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.n(), fast); - }; - } - }; + return [&matrix](Domain &v, bool fast) + { + v.reinit(matrix.n(), fast); + }; + } + }; + } /* namespace LinearOperator */ } /* namespace internal */ @@ -1165,10 +1168,10 @@ LinearOperator linop(const Exemplar &exemplar, // or an exemplar cannot usually be copied... return_op.reinit_range_vector = - internal::ReinitRangeFactory().operator()(exemplar); + internal::LinearOperator::ReinitRangeFactory().operator()(exemplar); return_op.reinit_domain_vector = - internal::ReinitDomainFactory().operator()(exemplar); + internal::LinearOperator::ReinitDomainFactory().operator()(exemplar); typename std::conditional< has_vmult_add::type::value, diff --git a/include/deal.II/lac/trilinos_block_vector.h b/include/deal.II/lac/trilinos_block_vector.h index be7f29cc35..0a820a05ca 100644 --- a/include/deal.II/lac/trilinos_block_vector.h +++ b/include/deal.II/lac/trilinos_block_vector.h @@ -454,46 +454,49 @@ namespace TrilinosWrappers namespace internal { - template class ReinitRangeFactory; - template class ReinitDomainFactory; - - /* - * A factory class internally used in linear_operator.h. - * Specialization for TrilinosWrappers::BlockVector. - */ - template<> - class ReinitRangeFactory + namespace LinearOperator { - public: - template - std::function - operator()(const Matrix &matrix) + template class ReinitRangeFactory; + template class ReinitDomainFactory; + + /** + * A factory class internally used in linear_operator.h. Specialization + * for TrilinosWrappers::BlockVector. + */ + template<> + class ReinitRangeFactory { - return [&matrix](TrilinosWrappers::BlockVector &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.range_partitioner(), fast); - }; - } - }; + return [&matrix](TrilinosWrappers::BlockVector &v, bool fast) + { + v.reinit(matrix.range_partitioner(), fast); + }; + } + }; - /* - * A factory class internally used in linear_operator.h. - * Specialization for TrilinosWrappers::BlockVector. - */ - template<> - class ReinitDomainFactory - { - public: - template - std::function - operator()(const Matrix &matrix) + /** + * A factory class internally used in linear_operator.h. Specialization + * for TrilinosWrappers::BlockVector. + */ + template<> + class ReinitDomainFactory { - return [&matrix](TrilinosWrappers::BlockVector &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.domain_partitioner(), fast); - }; - } - }; + return [&matrix](TrilinosWrappers::BlockVector &v, bool fast) + { + v.reinit(matrix.domain_partitioner(), fast); + }; + } + }; + } /* namespace LinearOperator */ } /* namespace internal */ DEAL_II_NAMESPACE_CLOSE diff --git a/include/deal.II/lac/trilinos_parallel_block_vector.h b/include/deal.II/lac/trilinos_parallel_block_vector.h index b2fe52a8f9..f1d102b186 100644 --- a/include/deal.II/lac/trilinos_parallel_block_vector.h +++ b/include/deal.II/lac/trilinos_parallel_block_vector.h @@ -468,46 +468,49 @@ namespace TrilinosWrappers namespace internal { - template class ReinitRangeFactory; - template class ReinitDomainFactory; - - /* - * A factory class internally used in linear_operator.h. - * Specialization for TrilinosWrappers::MPI::BlockVector. - */ - template<> - class ReinitRangeFactory + namespace LinearOperator { - public: - template - std::function - operator()(const Matrix &matrix) + template class ReinitRangeFactory; + template class ReinitDomainFactory; + + /** + * A factory class internally used in linear_operator.h. Specialization + * for TrilinosWrappers::MPI::BlockVector. + */ + template<> + class ReinitRangeFactory { - return [&matrix](TrilinosWrappers::MPI::BlockVector &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.range_partitioner(), fast); - }; - } - }; - - /* - * A factory class internally used in linear_operator.h. - * Specialization for TrilinosWrappers::MPI::BlockVector. - */ - template<> - class ReinitDomainFactory - { - public: - template - std::function - operator()(const Matrix &matrix) + return [&matrix](TrilinosWrappers::MPI::BlockVector &v, bool fast) + { + v.reinit(matrix.range_partitioner(), fast); + }; + } + }; + + /** + * A factory class internally used in linear_operator.h. Specialization + * for TrilinosWrappers::MPI::BlockVector. + */ + template<> + class ReinitDomainFactory { - return [&matrix](TrilinosWrappers::MPI::BlockVector &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.domain_partitioner(), fast); - }; - } - }; + return [&matrix](TrilinosWrappers::MPI::BlockVector &v, bool fast) + { + v.reinit(matrix.domain_partitioner(), fast); + }; + } + }; + } /* namespace LinearOperator */ } /* namespace internal */ diff --git a/include/deal.II/lac/trilinos_vector.h b/include/deal.II/lac/trilinos_vector.h index 8868c1df11..0eca9b6254 100644 --- a/include/deal.II/lac/trilinos_vector.h +++ b/include/deal.II/lac/trilinos_vector.h @@ -942,84 +942,87 @@ namespace TrilinosWrappers namespace internal { - template class ReinitRangeFactory; - template class ReinitDomainFactory; - - /* - * A factory class internally used in linear_operator.h. - * Specialization for TrilinosWrappers::MPI::Vector. - */ - template<> - class ReinitRangeFactory + namespace LinearOperator { - public: - template - std::function - operator()(const Matrix &matrix) + template class ReinitRangeFactory; + template class ReinitDomainFactory; + + /** + * A factory class internally used in linear_operator.h. Specialization + * for TrilinosWrappers::MPI::Vector. + */ + template<> + class ReinitRangeFactory { - return [&matrix](TrilinosWrappers::MPI::Vector &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.range_partitioner(), fast); - }; - } - }; + return [&matrix](TrilinosWrappers::MPI::Vector &v, bool fast) + { + v.reinit(matrix.range_partitioner(), fast); + }; + } + }; - /* - * A factory class internally used in linear_operator.h. - * Specialization for TrilinosWrappers::MPI::Vector. - */ - template<> - class ReinitDomainFactory - { - public: - template - std::function - operator()(const Matrix &matrix) + /** + * A factory class internally used in linear_operator.h. Specialization + * for TrilinosWrappers::MPI::Vector. + */ + template<> + class ReinitDomainFactory { - return [&matrix](TrilinosWrappers::MPI::Vector &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.domain_partitioner(), fast); - }; - } - }; + return [&matrix](TrilinosWrappers::MPI::Vector &v, bool fast) + { + v.reinit(matrix.domain_partitioner(), fast); + }; + } + }; - /* - * A factory class internally used in linear_operator.h. - * Specialization for TrilinosWrappers::MPI::Vector. - */ - template<> - class ReinitRangeFactory - { - public: - template - std::function - operator()(const Matrix &matrix) + /** + * A factory class internally used in linear_operator.h. Specialization + * for TrilinosWrappers::MPI::Vector. + */ + template<> + class ReinitRangeFactory { - return [&matrix](TrilinosWrappers::Vector &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.range_partitioner(), fast); - }; - } - }; + return [&matrix](TrilinosWrappers::Vector &v, bool fast) + { + v.reinit(matrix.range_partitioner(), fast); + }; + } + }; - /* - * A factory class internally used in linear_operator.h. - * Specialization for TrilinosWrappers::MPI::Vector. - */ - template<> - class ReinitDomainFactory - { - public: - template - std::function - operator()(const Matrix &matrix) + /** + * A factory class internally used in linear_operator.h. Specialization + * for TrilinosWrappers::MPI::Vector. + */ + template<> + class ReinitDomainFactory { - return [&matrix](TrilinosWrappers::Vector &v, bool fast) + public: + template + std::function + operator()(const Matrix &matrix) { - v.reinit(matrix.domain_partitioner(), fast); - }; - } - }; + return [&matrix](TrilinosWrappers::Vector &v, bool fast) + { + v.reinit(matrix.domain_partitioner(), fast); + }; + } + }; + } /* namespace LinearOperator */ } /* namespace internal */ -- 2.39.5