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

# sc\_SCBlockInfo(3)

SCBlockInfo contains blocking information for the SCDimension class.

## NAME

sc::SCBlockInfo - **SCBlockInfo** contains blocking information for the **SCDimension** class.

## SYNOPSIS

`#include <dim.h>`

Inherits **sc::SavableState**.

### Public Member Functions

**SCBlockInfo** (int n, int nblocks=0, const int \*blocksizes=0)\
 Create a **SCBlockInfo** object.  **SCBlockInfo** (**StateIn** &)\
 **SCBlockInfo** (const **Ref**\< **KeyVal** \> &keyval)\
 The **KeyVal** constructor.  void **save\_data\_state** (**StateOut** &)\
 Save the base classes (with save\_data\_state) and the members in the same order that the **StateIn** CTOR initializes them.  int **equiv** (**SCBlockInfo** \*bi)\
 Return nonzero if this is equivalent to bi.  int **nelem** () const\
 Return the total number of elements.  int **nblock** () const\
 Return the number of blocks.  int **start** (int i) const\
 Return the starting index for block i.  int **size** (int i) const\
 Return the size of block i.  int **fence** (int i) const\
 Return the last index + 1 for block i.  void **elem\_to\_block** (int i, int &block, int &offset)\
 **RefSCDimension** **subdim** (int i)\
 Retreive subdimension information.  void **set\_subdim** (int i, const **RefSCDimension** &dim)\
 Set subdimension information.  void **print** (std::ostream &o=**ExEnv::out0**()) const\
 Print the object to the stream o.

### Protected Member Functions

void **init\_start** ()\

### Protected Attributes

int **n\_**\
 int **nblocks\_**\
 int \* **start\_**\
 int \* **size\_**\
 **RefSCDimension** \* **subdims\_**\

### Additional Inherited Members

## Detailed Description

**SCBlockInfo** contains blocking information for the **SCDimension** class.

There are really two ways that it can contain blocking information. In the first way, a vector of block offsets and block sizes is stored. The second method is only used by those specializations created by the **BlockedSCMatrixKit** class. In this method the blocking information is stored as subdimensions of type **SCDimension**. If both methods are used, they must be used consistently. That is, the number, sizes, and order of the blocks must match the number, sizes, and order of the **SCDimension** objects. \

## Constructor & Destructor Documentation

### sc::SCBlockInfo::SCBlockInfo (const Ref\< KeyVal \> & keyval)

The **KeyVal** constructor.

- `sizes`

  This is a vector giving the size of each subblock. There is no default.

- `subdims`

  If this vector is given there is must be entry for each entry in the sizes vector. Each entry is an **SCDimension** object. The default is to not store subdimension information.

## Member Function Documentation

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

Print the object to the stream o.

Reimplemented from **sc::DescribedClass**.

### void sc::SCBlockInfo::save\_data\_state (StateOut &)` [virtual]`

Save the base classes (with save\_data\_state) and the members in the same order that the **StateIn** CTOR initializes them. This must be implemented by the derived class if the class has data.

Reimplemented from **sc::SavableState**.

### void sc::SCBlockInfo::set\_subdim (int i, const RefSCDimension & dim)

Set subdimension information. The dimension dim and index i must be consistent with the nblocks and blocksizes information given to the constructor.

## Author

Generated automatically by Doxygen for MPQC from the source code.
