]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Remove class VectorSpaceVector.
authorWolfgang Bangerth <bangerth@colostate.edu>
Thu, 6 Jul 2023 13:12:11 +0000 (07:12 -0600)
committerWolfgang Bangerth <bangerth@colostate.edu>
Mon, 10 Jul 2023 06:12:17 +0000 (00:12 -0600)
include/deal.II/base/mpi_noncontiguous_partitioner.h
include/deal.II/base/mpi_noncontiguous_partitioner.templates.h
include/deal.II/lac/cuda_vector.h
include/deal.II/lac/la_parallel_vector.h
include/deal.II/lac/trilinos_epetra_vector.h
include/deal.II/lac/trilinos_tpetra_vector.h
include/deal.II/lac/vector_space_vector.h [deleted file]

index 76cac2394811a188587c2500dc5d32fc213e8cdd..5a8c2657a7643f5993d9dc9f92961d3b4f28fefd 100644 (file)
@@ -22,7 +22,6 @@
 #include <deal.II/base/mpi_compute_index_owner_internal.h>
 #include <deal.II/base/mpi_stub.h>
 
-#include <deal.II/lac/vector_space_vector.h>
 
 
 DEAL_II_NAMESPACE_OPEN
index 0c033164366e189b6c7a1b2d2fddaf7d1bedefcb..9e83c2819c5066c71b6b839825ea26a7f7909df3 100644 (file)
@@ -24,7 +24,6 @@
 #include <deal.II/base/mpi_noncontiguous_partitioner.h>
 #include <deal.II/base/mpi_tags.h>
 
-#include <deal.II/lac/vector_space_vector.h>
 
 
 DEAL_II_NAMESPACE_OPEN
index e0afc93c18894bd79f74c2444b836310d37aa187..be68d1ed952309e40ac40d5900fd9a28e8c58818 100644 (file)
@@ -23,7 +23,6 @@
 #include <deal.II/base/index_set.h>
 
 #include <deal.II/lac/vector_operation.h>
-#include <deal.II/lac/vector_space_vector.h>
 
 #ifdef DEAL_II_WITH_CUDA
 
index 02a569d907016c6b31646658be1f27a59702631a..55001fbc57ca4f7f029f423a53c97accebd64526 100644 (file)
@@ -29,7 +29,6 @@
 
 #include <deal.II/lac/read_vector.h>
 #include <deal.II/lac/vector_operation.h>
-#include <deal.II/lac/vector_space_vector.h>
 #include <deal.II/lac/vector_type_traits.h>
 
 #include <iomanip>
index 976cfb8d35ce8acfda2a0889c351b23de20a389e..ce5eba5d0bb735ab375b68e496d10f2a101a8df9 100644 (file)
@@ -28,7 +28,6 @@
 #  include <deal.II/lac/read_vector.h>
 #  include <deal.II/lac/trilinos_epetra_communication_pattern.h>
 #  include <deal.II/lac/vector_operation.h>
-#  include <deal.II/lac/vector_space_vector.h>
 #  include <deal.II/lac/vector_type_traits.h>
 
 #  include <Epetra_FEVector.h>
index 6cd715bd1a7b879e2ec5fdd0cce7b0486373f509..f80784cbd27f6351bdc99a4c2e990f5ba0c1f7e0 100644 (file)
@@ -28,7 +28,6 @@
 #  include <deal.II/lac/read_vector.h>
 #  include <deal.II/lac/trilinos_tpetra_communication_pattern.h>
 #  include <deal.II/lac/vector_operation.h>
-#  include <deal.II/lac/vector_space_vector.h>
 #  include <deal.II/lac/vector_type_traits.h>
 
 #  include <Teuchos_Comm.hpp>
diff --git a/include/deal.II/lac/vector_space_vector.h b/include/deal.II/lac/vector_space_vector.h
deleted file mode 100644 (file)
index 92b6598..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-// ---------------------------------------------------------------------
-//
-// Copyright (C) 2015 - 2023 by the deal.II authors
-//
-// This file is part of the deal.II library.
-//
-// The deal.II library is free software; you can use it, redistribute
-// it, and/or modify it under the terms of the GNU Lesser General
-// Public License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-// The full text of the license can be found in the file LICENSE.md at
-// the top level directory of deal.II.
-//
-// ---------------------------------------------------------------------
-
-#ifndef dealii_vector_space_vector_h
-#define dealii_vector_space_vector_h
-
-#include <deal.II/base/config.h>
-
-#include <deal.II/base/communication_pattern_base.h>
-#include <deal.II/base/numbers.h>
-
-#include <deal.II/lac/vector_operation.h>
-
-#include <memory>
-
-
-DEAL_II_NAMESPACE_OPEN
-
-// Forward declarations
-#ifndef DOXYGEN
-class IndexSet;
-namespace LinearAlgebra
-{
-  template <typename Number>
-  class ReadWriteVector;
-} // namespace LinearAlgebra
-#endif
-
-namespace LinearAlgebra
-{
-  /**
-   * @addtogroup Vectors
-   * @{
-   */
-
-  /**
-   * VectorSpaceVector is an abstract class that is used to define the
-   * interface that vector classes need to implement when they want to
-   * implement global operations. This class is complementary of
-   * ReadWriteVector which allows the access of individual elements but does
-   * not allow global operations.
-   */
-  template <typename Number>
-  class VectorSpaceVector
-  {
-  public:
-    using value_type = Number;
-    using size_type  = types::global_dof_index;
-    using real_type  = typename numbers::NumberTraits<Number>::real_type;
-
-    /**
-     * Change the dimension to that of the vector V. The elements of V are not
-     * copied.
-     */
-    virtual void
-    reinit(const VectorSpaceVector<Number> &V,
-           const bool                       omit_zeroing_entries = false) = 0;
-
-    /**
-     * Sets all elements of the vector to the scalar @p s. This operation is
-     * only allowed if @p s is equal to zero.
-     */
-    virtual VectorSpaceVector<Number> &
-    operator=(const Number s) = 0;
-
-    /**
-     * Multiply the entire vector by a fixed factor.
-     */
-    virtual VectorSpaceVector<Number> &
-    operator*=(const Number factor) = 0;
-
-    /**
-     * Divide the entire vector by a fixed factor.
-     */
-    virtual VectorSpaceVector<Number> &
-    operator/=(const Number factor) = 0;
-
-    /**
-     * Add the vector @p V to the present one.
-     */
-    virtual VectorSpaceVector<Number> &
-    operator+=(const VectorSpaceVector<Number> &V) = 0;
-
-    /**
-     * Subtract the vector @p V from the present one.
-     */
-    virtual VectorSpaceVector<Number> &
-    operator-=(const VectorSpaceVector<Number> &V) = 0;
-
-    /**
-     * Import all the elements present in the vector's IndexSet from the input
-     * vector @p V. VectorOperation::values @p operation is used to decide if
-     * the elements in @p V should be added to the current vector or replace the
-     * current elements. The last parameter can be used if the same
-     * communication pattern is used multiple times. This can be used to improve
-     * performance.
-     */
-    virtual void
-    import_elements(
-      const ReadWriteVector<Number> &V,
-      VectorOperation::values        operation,
-      std::shared_ptr<const Utilities::MPI::CommunicationPatternBase>
-        communication_pattern = {}) = 0;
-
-    /**
-     * @deprecated Use import_elements() instead.
-     */
-    DEAL_II_DEPRECATED
-    virtual void
-    import(const ReadWriteVector<Number> &V,
-           VectorOperation::values        operation,
-           std::shared_ptr<const Utilities::MPI::CommunicationPatternBase>
-             communication_pattern = {}) = 0;
-
-    /**
-     * Return the scalar product of two vectors.
-     */
-    virtual Number
-    operator*(const VectorSpaceVector<Number> &V) const = 0;
-
-    /**
-     * Add @p a to all components. Note that @p a is a scalar not a vector.
-     */
-    virtual void
-    add(const Number a) = 0;
-
-    /**
-     * Simple addition of a multiple of a vector, i.e. <tt>*this += a*V</tt>.
-     */
-    virtual void
-    add(const Number a, const VectorSpaceVector<Number> &V) = 0;
-
-    /**
-     * Multiple addition of scaled vectors, i.e. <tt>*this += a*V+b*W</tt>.
-     */
-    virtual void
-    add(const Number                     a,
-        const VectorSpaceVector<Number> &V,
-        const Number                     b,
-        const VectorSpaceVector<Number> &W) = 0;
-
-    /**
-     * Scaling and simple addition of a multiple of a vector, i.e. <tt>*this =
-     * s*(*this)+a*V</tt>.
-     */
-    virtual void
-    sadd(const Number                     s,
-         const Number                     a,
-         const VectorSpaceVector<Number> &V) = 0;
-
-    /**
-     * Scale each element of this vector by the corresponding element in the
-     * argument. This function is mostly meant to simulate multiplication (and
-     * immediate re-assignment) by a diagonal scaling matrix.
-     */
-    virtual void
-    scale(const VectorSpaceVector<Number> &scaling_factors) = 0;
-
-    /**
-     * Assignment <tt>*this = a*V</tt>.
-     */
-    virtual void
-    equ(const Number a, const VectorSpaceVector<Number> &V) = 0;
-
-    /**
-     * Return whether the vector contains only elements with value zero.
-     */
-    virtual bool
-    all_zero() const = 0;
-
-    /**
-     * Return the mean value of all the entries of this vector.
-     */
-    virtual value_type
-    mean_value() const = 0;
-
-    /**
-     * Return the l<sub>1</sub> norm of the vector (i.e., the sum of the
-     * absolute values of all entries among all processors).
-     */
-    virtual real_type
-    l1_norm() const = 0;
-
-    /**
-     * Return the l<sub>2</sub> norm of the vector (i.e., the square root of
-     * the sum of the square of all entries among all processors).
-     */
-    virtual real_type
-    l2_norm() const = 0;
-
-    /**
-     * Return the maximum norm of the vector (i.e., the maximum absolute value
-     * among all entries and among all processors).
-     */
-    virtual real_type
-    linfty_norm() const = 0;
-
-    /**
-     * Perform a combined operation of a vector addition and a subsequent
-     * inner product, returning the value of the inner product. In other
-     * words, the result of this function is the same as if the user called
-     * @code
-     * this->add(a, V);
-     * return_value = *this * W;
-     * @endcode
-     *
-     * The reason this function exists is that this operation involves less
-     * memory transfer than calling the two functions separately. This method
-     * only needs to load three vectors, @p this, @p V, @p W, whereas calling
-     * separate methods means to load the calling vector @p this twice. Since
-     * most vector operations are memory transfer limited, this reduces the
-     * time by 25\% (or 50\% if @p W equals @p this).
-     *
-     * For complex-valued vectors, the scalar product in the second step is
-     * implemented as
-     * $\left<v,w\right>=\sum_i v_i \bar{w_i}$.
-     */
-    virtual Number
-    add_and_dot(const Number                     a,
-                const VectorSpaceVector<Number> &V,
-                const VectorSpaceVector<Number> &W) = 0;
-
-    /**
-     * This function does nothing and only exists for backward compatibility.
-     */
-    virtual void compress(VectorOperation::values)
-    {}
-
-    /**
-     * Return the global size of the vector, equal to the sum of the number of
-     * locally owned indices among all processors.
-     */
-    virtual size_type
-    size() const = 0;
-
-    /**
-     * Return an index set that describes which elements of this vector are
-     * owned by the current processor. As a consequence, the index sets
-     * returned on different processors if this is a distributed vector will
-     * form disjoint sets that add up to the complete index set. Obviously, if
-     * a vector is created on only one processor, then the result would
-     * satisfy
-     * @code
-     *  vec.locally_owned_elements() == complete_index_set(vec.size())
-     * @endcode
-     */
-    virtual dealii::IndexSet
-    locally_owned_elements() const = 0;
-
-    /**
-     * Print the vector to the output stream @p out.
-     */
-    virtual void
-    print(std::ostream &     out,
-          const unsigned int precision  = 3,
-          const bool         scientific = true,
-          const bool         across     = true) const = 0;
-
-    /**
-     * Return the memory consumption of this class in bytes.
-     */
-    virtual std::size_t
-    memory_consumption() const = 0;
-
-    /**
-     * Destructor. Declared as virtual so that inheriting classes (which may
-     * manage their own memory) are destroyed correctly.
-     */
-    virtual ~VectorSpaceVector() = default;
-  };
-  /** @} */
-} // namespace LinearAlgebra
-
-// ---------------------------- Free functions --------------------------
-
-namespace LinearAlgebra
-{
-  /**
-   * Shift all entries of the vector by a constant factor so that the mean
-   * value of the vector becomes zero.
-   */
-  template <typename Number>
-  void
-  set_zero_mean_value(VectorSpaceVector<Number> &vector)
-  {
-    vector.add(-vector.mean_value());
-  }
-} // namespace LinearAlgebra
-
-DEAL_II_NAMESPACE_CLOSE
-
-#endif

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.