# sc::DIIS Class Reference

The DIIS class provides DIIS extrapolation. More...

`#include <diis.h>`

Inheritance diagram for sc::DIIS:

List of all members.

## 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

## 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

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::SelfConsistentExtrapolation.

The documentation for this class was generated from the following file:

- diis.h