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

# sc\_DIIS(3)

The DIIS class provides DIIS extrapolation.

## NAME

sc::DIIS - The **DIIS** class provides **DIIS** extrapolation.

## SYNOPSIS

`#include <diis.h>`

Inherits **sc::SelfConsistentExtrapolation**.

### Public Member Functions

**DIIS** (int strt=1, int ndi=5, double dmp=0, int ngr=1, int ngrdiis=1)\
 **DIIS** (**StateIn** &)\
 **DIIS** (const **Ref**\< **KeyVal** \> &)\
 The **DIIS** **KeyVal** constructor recognizes the following keywords:  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 **extrapolate** (const **Ref**\< **SCExtrapData** \> &data, const **Ref**\< **SCExtrapError** \> &error)\
 void **start\_extrapolation** ()\
 void **reinitialize** ()\
 void **print** (std::ostream &=**ExEnv::out0**()) const\
 Override **DescribedClass::print**.

### Protected Member Functions

void **init** ()\

### Protected Attributes

int **start**\
 int **ndiis**\
 int **iter**\
 int **ngroup**\
 int **ngroupdiis**\
 double **damping\_factor**\
 double \* **btemp**\
 double \*\* **bold**\
 double \*\* **bmat**\
 **Ref**\< **SCExtrapData** \> **dtemp\_data**\
 **Ref**\< **SCExtrapError** \> **dtemp\_error**\
 **Ref**\< **SCExtrapData** \> **Ldata**\
 **Ref**\< **SCExtrapData** \> \* **diism\_data**\
 **Ref**\< **SCExtrapError** \> \* **diism\_error**\

### Additional Inherited Members

## Detailed Description

The **DIIS** class provides **DIIS** extrapolation.

## Constructor & Destructor Documentation

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

The **DIIS** **KeyVal** constructor recognizes the following keywords:

- `n`

  This integer maximum number of data sets to retain. The default is 5.

- `start`

  The **DIIS** extrapolation will begin on the iteration given by this integer. The default is 1.

- `damping_factor`

  This nonnegative floating point number is used to dampen the **DIIS** extrapolation. The default is 0.0.

- `ngroup`

  The number of iterations in a **DIIS** group. **DIIS** extrapolation is only used for the first ngroupdiis of these interations. The default is 1. If ngroup is 1 and ngroupdiis is greater than 0, then **DIIS** will be used on all iterations after and including the start iteration.

- `ngroupdiis`

  The number of **DIIS** extrapolations to do at the beginning of an iteration group. See the documentation for ngroup.

## Member Function Documentation

### int sc::DIIS::extrapolate (const Ref\< SCExtrapData \> & data, const Ref\< SCExtrapError \> & error)` [virtual]`

Implements **sc::SelfConsistentExtrapolation**.

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

Override **DescribedClass::print**.

Reimplemented from **sc::DescribedClass**.

### void sc::DIIS::reinitialize ()` [virtual]`

Implements **sc::SelfConsistentExtrapolation**.

### void sc::DIIS::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::DIIS::start\_extrapolation ()` [virtual]`

Reimplemented from **sc::SelfConsistentExtrapolation**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
