class VectorSpaceVector
{
public:
+ typedef Number value_type;
typedef types::global_dof_index size_type;
typedef typename numbers::NumberTraits<Number>::real_type real_type;
/**
- * Imports all the elements present in the vector's IndexSet from the input
- * vector @p read_write_vector.
+ * Multiply the entire vector by a fixed factor.
*/
- virtual VectorSpaceVector<Number> &operator= (const ReadWriteVector<Number> &read_write_vector) = 0;
+ virtual VectorSpaceVector<Number> &operator*= (const Number factor) = 0;
/**
- * Copies the data and the IndexSet of the input vector @p in_vector.
+ * Divide the entire vector by a fixed factor.
*/
- virtual VectorSpaceVector<Number> &operator= (const VectorSpaceVector<Number> &in_vector) = 0;
+ virtual VectorSpaceVector<Number> &operator/= (const Number factor) = 0;
/**
- * Multiply the entire vector by a fixed factor.
+ * Add the vector @p V to the present one.
*/
- virtual VectorSpaceVector<Number> &operator*= (const Number factor) = 0;
+ virtual VectorSpaceVector<Number> &operator+= (const VectorSpaceVector<Number> &V) = 0;
/**
- * Divide the entire vector by a fixed factor.
+ * Subtract the vector @p V from the present one.
*/
- virtual VectorSpaceVector<Number> &operator/= (const Number factor) = 0;
+ virtual VectorSpaceVector<Number> &operator-= (const VectorSpaceVector<Number> &V) = 0;
+
+ /**
+ * Return the scalar product of two vectors.
+ */
+ virtual Number operator* (const VectorSpaceVector<Number> &V) = 0;
/**
* Simple addition of a multiple of a vector, i.e. <tt>*this += a*V</tt>.
/**
* Multiple addition of scaled vectors, i.e. <tt>*this += a*V+b*W</tt>.
*/
- virtual void add(const Number a, const VectorSpaceVector<Number> &VW,
+ virtual void add(const Number a, const VectorSpaceVector<Number> &V,
const Number b, const VectorSpaceVector<Number> &W) = 0;
/**