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

# sc\_SCMatrixLTriSubBlock(3)

The SCMatrixLTriSubBlock describes a triangular subblock of a matrix.

## NAME

sc::SCMatrixLTriSubBlock - The **SCMatrixLTriSubBlock** describes a triangular subblock of a matrix.

## SYNOPSIS

`#include <block.h>`

Inherits **sc::SCMatrixBlock**.

### Public Member Functions

**SCMatrixLTriSubBlock** (int is, int ie, int js, int je, double \*data)\
 **SCMatrixLTriSubBlock** (**StateIn** &)\
 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.  void **process** (**SCElementOp** \*)\
 void **process** (**SCElementOp2** \*, **SCMatrixBlock** \*)\
 void **process** (**SCElementOp3** \*, **SCMatrixBlock** \*, **SCMatrixBlock** \*)\

### Public Attributes

int **istart**\
 int **iend**\
 int **jstart**\
 int **jend**\
 double \* **data**\

### Additional Inherited Members

## Detailed Description

The **SCMatrixLTriSubBlock** describes a triangular subblock of a matrix.

The following bit of code illustrates the data layout: fill(double \*\*matrix, SCMatrixLTriSubBlock &b) { int offset=(b.istart\*(b.istart+1)\>\>1) + b.jstart; for (int i=b.start; i\<b.end; i++) { for (int j=b.start; j\<=i && j\<b.jend; j++,offset++) { matrix\[i\]\[j\] = b.data\[offset\]; } if (j\>i) offset += b.istart; else offset += i + b.jstart - b.jend; } }

## Member Function Documentation

### void sc::SCMatrixLTriSubBlock::process (SCElementOp \*)` [virtual]`

Implements **sc::SCMatrixBlock**.

### void sc::SCMatrixLTriSubBlock::process (SCElementOp2 \*, SCMatrixBlock \*)` [virtual]`

Implements **sc::SCMatrixBlock**.

### void sc::SCMatrixLTriSubBlock::process (SCElementOp3 \*, SCMatrixBlock \*, SCMatrixBlock \*)` [virtual]`

Implements **sc::SCMatrixBlock**.

### void sc::SCMatrixLTriSubBlock::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::SCMatrixBlock**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
