7 #ifndef __IPDENSEVECTOR_HPP__
8 #define __IPDENSEVECTOR_HPP__
18 class DenseVectorSpace;
84 inline const Number* Values()
const;
241 const std::string& name,
243 const std::string& prefix
246 PrintImplOffset(jnlst, level, category, name, indent, prefix, 1);
254 const std::string& name,
256 const std::string& prefix,
261 friend class ParVector;
296 inline Number* values_allocated();
354 return MakeNewDenseVector();
364 inline Number* AllocateInternalStorage()
const;
367 inline void FreeInternalStorage(
377 bool HasStringMetaData(
378 const std::string tag
383 bool HasIntegerMetaData(
384 const std::string tag
389 bool HasNumericMetaData(
390 const std::string tag
394 inline const std::vector<std::string>& GetStringMetaData(
395 const std::string& tag
399 inline const std::vector<Index>& GetIntegerMetaData(
400 const std::string& tag
404 inline const std::vector<Number>& GetNumericMetaData(
405 const std::string& tag
409 inline void SetStringMetaData(
411 std::vector<std::string> meta_data
415 inline void SetIntegerMetaData(
417 std::vector<Index> meta_data
421 inline void SetNumericMetaData(
423 std::vector<Number> meta_data
504 const std::string tag
507 StringMetaDataMapType::const_iterator iter;
520 const std::string tag
523 IntegerMetaDataMapType::const_iterator iter;
536 const std::string tag
539 NumericMetaDataMapType::const_iterator iter;
551 const std::string& tag
555 StringMetaDataMapType::const_iterator iter;
561 const std::string& tag
565 IntegerMetaDataMapType::const_iterator iter;
571 const std::string& tag
575 NumericMetaDataMapType::const_iterator iter;
582 std::vector<std::string> meta_data
590 std::vector<Index> meta_data
598 std::vector<Number> meta_data
This vectors space is the vector space for DenseVector.
Number * AllocateInternalStorage() const
Allocate internal storage for the DenseVector.
const NumericMetaDataMapType & GetNumericMetaData() const
Get map of meta data of type Number.
bool HasIntegerMetaData(const std::string tag) const
Check if Integer meta exists for tag.
void SetStringMetaData(std::string tag, std::vector< std::string > meta_data)
Set meta data of type std::string by tag.
const StringMetaDataMapType & GetStringMetaData() const
Get map of meta data of type Number.
StringMetaDataMapType string_meta_data_
bool HasStringMetaData(const std::string tag) const
Check if string meta exists for tag.
NumericMetaDataMapType numeric_meta_data_
bool HasNumericMetaData(const std::string tag) const
Check if Numeric meta exists for tag.
DenseVectorSpace(Index dim)
Constructor, requires dimension of all vector for this VectorSpace.
void SetIntegerMetaData(std::string tag, std::vector< Index > meta_data)
Set meta data of type Index by tag.
virtual Vector * MakeNew() const
Pure virtual method for creating a new Vector of the corresponding type.
IntegerMetaDataMapType integer_meta_data_
void SetNumericMetaData(std::string tag, std::vector< Number > meta_data)
Set meta data of type Number by tag.
void FreeInternalStorage(Number *values) const
Deallocate internal storage for the DenseVector.
~DenseVectorSpace()
Destructor.
const IntegerMetaDataMapType & GetIntegerMetaData() const
Get map of meta data of type Number.
DenseVector * MakeNewDenseVector() const
Method for creating a new vector of this specific type.
Dense Vector Implementation.
virtual Number DotImpl(const Vector &x) const
Computes inner product of vector x with this (DDOT)
const Number * ExpandedValues() const
The same as the const version of Values, but we ensure that we always return a valid array,...
void AddVectorQuotientImpl(Number a, const Vector &z, const Vector &s, Number c)
Add the quotient of two vectors, y = a * z/s + c * y.
void SetValues(const Number *x)
Set elements in the vector to the Number array x.
virtual void AxpyImpl(Number alpha, const Vector &x)
Add the multiple alpha of vector x to this vector (DAXPY)
bool initialized_
Flag for Initialization.
void operator=(const DenseVector &)
Default Assignment Operator.
const DenseVectorSpace * owner_space_
Copy of the owner_space ptr as a DenseVectorSpace instead of a VectorSpace.
Number * values_allocated()
Get the internal values array, making sure that memory has been allocated.
bool IsHomogeneous() const
Indicates if the vector is homogeneous (i.e., all entries have the value Scalar().
virtual void ElementWiseSgnImpl()
Replaces entries with sgn of the entry.
Number * expanded_values_
Dense Number array pointer that is used for ExpandedValues.
virtual void ElementWiseDivideImpl(const Vector &x)
Element-wise division .
DenseVector(const DenseVectorSpace *owner_space)
Default Constructor.
virtual void ElementWiseSqrtImpl()
Take elementwise square-root of the elements of the vector.
Number * ExpandedValues()
This is the same as Values, but we add it here so that ExpandedValues can also be used for the non-co...
virtual void SetImpl(Number value)
Set each element in the vector to the scalar alpha.
void AddTwoVectorsImpl(Number a, const Vector &v1, Number b, const Vector &v2, Number c)
Add two vectors (a * v1 + b * v2).
void PrintImplOffset(const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix, Index offset) const
void set_values_from_scalar()
Auxiliary method for setting explicitly all elements in values_ to the current scalar value.
Number FracToBoundImpl(const Vector &delta, Number tau) const
Fraction to the boundary parameter.
virtual Number Nrm2Impl() const
Computes the 2-norm of this vector (DNRM2)
void CopyFromPos(Index Pos, const Vector &x)
Copy a subrange of x, starting at Pos, into the full data of this vector.
virtual Number MinImpl() const
Min number in the vector.
virtual void ScalImpl(Number alpha)
Scales the vector by scalar alpha (DSCAL)
virtual ~DenseVector()
Destructor.
virtual void CopyImpl(const Vector &x)
Copy the data of the vector x into this vector (DCOPY).
bool homogeneous_
Flag indicating whether the vector is currently homogeneous (that is, all elements have the same valu...
virtual Number AmaxImpl() const
Computes the max-norm of this vector (based on IDAMAX)
virtual void ElementWiseReciprocalImpl()
Reciprocates the elements of the vector.
Number scalar_
Homogeneous value of all elements if the vector is currently homogeneous.
DenseVector(const DenseVector &)
Copy Constructor.
SmartPtr< DenseVector > MakeNewDenseVector() const
Create a new DenseVector from same VectorSpace.
virtual void ElementWiseAbsImpl()
Take elementwise absolute values of the elements of the vector.
virtual Number MaxImpl() const
Max value in the vector.
virtual void ElementWiseMultiplyImpl(const Vector &x)
Element-wise multiplication .
virtual void PrintImpl(const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix) const
Print the entire vector.
virtual void AddScalarImpl(Number scalar)
Add scalar to every component of vector.
Number Scalar() const
Scalar value of all entries in a homogeneous vector.
virtual Number SumLogsImpl() const
Sum of logs of entries in the vector.
virtual void ElementWiseMaxImpl(const Vector &x)
Element-wise max against entries in x.
virtual Number AsumImpl() const
Computes the 1-norm of this vector (DASUM)
void CopyToPos(Index Pos, const Vector &x)
Copy the data in x into the subrange of this vector starting at position Pos in this vector.
virtual Number SumImpl() const
Sum of entries in the vector.
Number * Values()
Obtain pointer to the internal Number array with vector elements with the intention to change the vec...
DenseVector()
Default Constructor.
virtual void ElementWiseMinImpl(const Vector &x)
Element-wise min against entries in x.
Number * values_
Dense Number array of vector values.
Class responsible for all message output.
Template class for Smart Pointers.
void ObjectChanged()
Objects derived from TaggedObject MUST call this method every time their internal state changes to up...
VectorSpace base class, corresponding to the Vector base class.
Index Dim() const
Accessor function for the dimension of the vectors of this type.
Index Dim() const
Dimension of the Vector.
This file contains a base class for all exceptions and a set of macros to help with exceptions.
std::map< std::string, std::vector< Number > > NumericMetaDataMapType
DECLARE_STD_EXCEPTION(FATAL_ERROR_IN_LINEAR_SOLVER)
EJournalCategory
Category Selection Enum.
std::map< std::string, std::vector< Index > > IntegerMetaDataMapType
int Index
Type of all indices of vectors, matrices etc.
std::map< std::string, std::vector< std::string > > StringMetaDataMapType
EJournalLevel
Print Level Enum.
double Number
Type of all numbers.