---
name: "sc_SCVector"
section: "3"
platform: "linux"
package: "libsc-doc"
version: "2.3.1-22"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/sc_SCVector"
---

# sc\_SCVector(3)

The SCVector class is the abstract base class for double valued vectors.

## NAME

sc::SCVector - The **SCVector** class is the abstract base class for double valued vectors.

## SYNOPSIS

`#include <abstract.h>`

Inherits **sc::DescribedClass**.

Inherited by **sc::BlockedSCVector**, **sc::DistSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

### Public Member Functions

**SCVector** (const **RefSCDimension** &, **SCMatrixKit** \*)\
 virtual void **save** (**StateOut** &)\
 Save and restore this in an implementation independent way.  virtual void **restore** (**StateIn** &)\
 **Ref**\< **SCMatrixKit** \> **kit** () const\
 Return the **SCMatrixKit** used to create this object.  virtual **SCVector** \* **copy** ()\
 Return a vector with the same dimension and same elements.  virtual **SCVector** \* **clone** ()\
 Return a vector with the same dimension but uninitialized memory.  int **n** () const\
 Return the length of the vector.  virtual double **maxabs** () const\
 Return the maximum absolute value element of this vector.  virtual void **normalize** ()\
 Normalize this.  virtual void **randomize** ()\
 Assign each element to a random number between -1 and 1.  void **assign** (double val)\
 Assign all elements of this to val.  void **assign** (const double \*v)\
 Assign element i to v\[i\] for all i.  void **assign** (**SCVector** \*v)\
 Make this have the same elements as v.  virtual void **assign\_val** (double val)\
 Overridden to implement the assign functions.  virtual void **assign\_p** (const double \*v)\
 virtual void **assign\_v** (**SCVector** \*v)\
 virtual void **convert** (double \*v) const\
 Assign v\[i\] to element i for all i.  virtual void **convert** (**SCVector** \*)\
 Convert an **SCVector** of a different specialization to this specialization and possibly accumulate the data.  virtual void **convert\_accumulate** (**SCVector** \*)\
 virtual void **scale** (double val)\
 Multiply each element by val.  **RefSCDimension** **dim** () const\
 Return the **RefSCDimension** corresponding to this vector.  virtual void **set\_element** (int i, double val)=0\
 Set element i to val.  virtual void **accumulate\_element** (int, double)=0\
 Add val to element i.  virtual double **get\_element** (int i) const =0\
 Return the value of element i.  void **accumulate\_product** (**SymmSCMatrix** \*m, **SCVector** \*v)\
 Sum the result of m times v into this.  void **accumulate\_product** (**SCMatrix** \*m, **SCVector** \*v)\
 virtual void **accumulate\_product\_sv** (**SymmSCMatrix** \*m, **SCVector** \*v)\
 virtual void **accumulate\_product\_rv** (**SCMatrix** \*m, **SCVector** \*v)=0\
 virtual void **accumulate** (const **SCVector** \*v)=0\
 Sum v into this.  virtual void **accumulate** (const **SCMatrix** \*m)=0\
 Sum m into this. One of m's dimensions must be 1.  virtual double **scalar\_product** (**SCVector** \*)=0\
 Return the dot product.  virtual void **element\_op** (const **Ref**\< **SCElementOp** \> &)=0\
 Perform the element operation op on each element of this.  virtual void **element\_op** (const **Ref**\< **SCElementOp2** \> &, **SCVector** \*)=0\
 virtual void **element\_op** (const **Ref**\< **SCElementOp3** \> &, **SCVector** \*, **SCVector** \*)=0\
 void **print** (std::ostream &o=**ExEnv::out0**()) const\
 Print out the vector.  void **print** (const char \*title=0, std::ostream &out=**ExEnv::out0**(), int=10) const\
 virtual void **vprint** (const char \*title=0, std::ostream &out=**ExEnv::out0**(), int=10) const =0\
 **Ref**\< **MessageGrp** \> **messagegrp** () const\
 Returns the message group used by the matrix kit.  virtual **Ref**\< **SCMatrixSubblockIter** \> **local\_blocks** (SCMatrixSubblockIter::Access)=0\
 Returns iterators for the local (rapidly accessible) blocks used in this vector.  virtual **Ref**\< **SCMatrixSubblockIter** \> **all\_blocks** (SCMatrixSubblockIter::Access)=0\
 Returns iterators for the all blocks used in this vector.

### Protected Attributes

**RefSCDimension** **d**\
 **Ref**\< **SCMatrixKit** \> **kit\_**\

### Additional Inherited Members

## Detailed Description

The **SCVector** class is the abstract base class for double valued vectors.

## Member Function Documentation

### virtual void sc::SCVector::accumulate (const SCMatrix \* m)` [pure virtual]`

Sum m into this. One of m's dimensions must be 1.

Implemented in **sc::BlockedSCVector**, **sc::LocalSCVector**, **sc::ReplSCVector**, and **sc::DistSCVector**.

### virtual void sc::SCVector::accumulate (const SCVector \* v)` [pure virtual]`

Sum v into this.

Implemented in **sc::BlockedSCVector**, **sc::DistSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

### virtual void sc::SCVector::accumulate\_element (int, double)` [pure virtual]`

Add val to element i.

Implemented in **sc::BlockedSCVector**, **sc::DistSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

### virtual Ref\< SCMatrixSubblockIter \> sc::SCVector::all\_blocks (SCMatrixSubblockIter::Access)` [pure virtual]`

Returns iterators for the all blocks used in this vector.

Implemented in **sc::BlockedSCVector**, **sc::DistSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

### void sc::SCVector::assign (SCVector \* v)` [inline]`

Make this have the same elements as v. The dimensions must match.

### virtual void sc::SCVector::assign\_val (double val)` [virtual]`

Overridden to implement the assign functions.

Reimplemented in **sc::BlockedSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

Referenced by **assign()**.

### virtual void sc::SCVector::convert (double \* v) const` [virtual]`

Assign v\[i\] to element i for all i.

Reimplemented in **sc::DistSCVector**.

### virtual void sc::SCVector::convert (SCVector \*)` [virtual]`

Convert an **SCVector** of a different specialization to this specialization and possibly accumulate the data.

Reimplemented in **sc::DistSCVector**.

### virtual void sc::SCVector::element\_op (const Ref\< SCElementOp \> &)` [pure virtual]`

Perform the element operation op on each element of this.

Implemented in **sc::BlockedSCVector**, **sc::DistSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

### virtual double sc::SCVector::get\_element (int i) const` [pure virtual]`

Return the value of element i.

Implemented in **sc::BlockedSCVector**, **sc::DistSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

### virtual Ref\< SCMatrixSubblockIter \> sc::SCVector::local\_blocks (SCMatrixSubblockIter::Access)` [pure virtual]`

Returns iterators for the local (rapidly accessible) blocks used in this vector. Only one iterator is allowed for a matrix is it has Accum or Write access is allowed. Multiple Read iterators are permitted.

Implemented in **sc::BlockedSCVector**, **sc::DistSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

### void sc::SCVector::print (std::ostream & o = ExEnv::out0`()`) const` [virtual]`

Print out the vector.

Reimplemented from **sc::DescribedClass**.

### virtual void sc::SCVector::save (StateOut &)` [virtual]`

Save and restore this in an implementation independent way.

Reimplemented in **sc::BlockedSCVector**.

### virtual double sc::SCVector::scalar\_product (SCVector \*)` [pure virtual]`

Return the dot product.

Implemented in **sc::BlockedSCVector**, **sc::DistSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

### virtual void sc::SCVector::set\_element (int i, double val)` [pure virtual]`

Set element i to val.

Implemented in **sc::BlockedSCVector**, **sc::DistSCVector**, **sc::LocalSCVector**, and **sc::ReplSCVector**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
