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

# sc\_SCElementInvert(3)

## NAME

sc::SCElementInvert

## SYNOPSIS

Inherits **sc::SCElementOp**.

### Public Member Functions

**SCElementInvert** (double threshold=0.0)\
 **SCElementInvert** (**StateIn** &)\
 int **has\_side\_effects** ()\
 By default this returns nonzero.  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** (**SCMatrixBlockIter** &)\
 This is the fallback routine to process blocks and is called by process\_spec members that are not overridden.  int **has\_collect** ()\
 If duplicates of the **SCElementOp** exist (that is, there is more than one node), then if has\_collect returns nonzero then collect is called with a **MessageGrp** reference after all of the blocks have been processed.  void **defer\_collect** (int)\
 void **collect** (const **Ref**\< **MessageGrp** \> &)\
 void **collect** (const **Ref**\< **SCElementOp** \> &)\
 Multithreaded use of cloneable **SCElementOp** objects requires that data from cloned objects be collected.  int **result** ()\

### Additional Inherited Members

## Member Function Documentation

### void sc::SCElementInvert::collect (const Ref\< MessageGrp \> &)` [virtual]`

Reimplemented from **sc::SCElementOp**.

### void sc::SCElementInvert::collect (const Ref\< SCElementOp \> &)` [virtual]`

Multithreaded use of cloneable **SCElementOp** objects requires that data from cloned objects be collected. The default implementation will throw an exception.

Reimplemented from **sc::SCElementOp**.

### void sc::SCElementInvert::defer\_collect (int)` [virtual]`

Reimplemented from **sc::SCElementOp**.

### int sc::SCElementInvert::has\_collect ()` [virtual]`

If duplicates of the **SCElementOp** exist (that is, there is more than one node), then if has\_collect returns nonzero then collect is called with a **MessageGrp** reference after all of the blocks have been processed. The default return value of has\_collect is 0 and collect's default action is do nothing. If defer\_collect member is called with nonzero, collect will do nothing (this is only used by the blocked matrices).

Reimplemented from **sc::SCElementOp**.

### int sc::SCElementInvert::has\_side\_effects ()` [virtual]`

By default this returns nonzero. If the ElementOp specialization will change any elements of the matrix, then this must be overridden to return nonzero.

Reimplemented from **sc::SCElementOp**.

### void sc::SCElementInvert::process (SCMatrixBlockIter &)` [virtual]`

This is the fallback routine to process blocks and is called by process\_spec members that are not overridden.

Implements **sc::SCElementOp**.

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

## Author

Generated automatically by Doxygen for MPQC from the source code.
