# sc_SCF man page

sc::SCF — The **SCF** class is the base for all classes that use a self-consistent field procedure to solve an effective one body problem.

## Synopsis

`#include <scf.h>`

Inherits **sc::OneBodyWavefunction**.

Inherited by **sc::CLSCF**, **sc::HSOSSCF**, **sc::OSSSCF**, **sc::TCSCF**, and **sc::UnrestrictedSCF**.

### Public Member Functions

SCF(StateIn&)SCF(constRef<KeyVal> &)TheKeyValconstructor.

voidsave_data_state(StateOut&)Save the base classes (with save_data_state) and the members in the same order that theStateInCTOR initializes them.RefSCMatrix oso_eigenvectors()Returns the orthogonal MO (columns) to orthogonal-SO (rows) transformation matrix.RefDiagSCMatrix eigenvalues()Returns the MO basis eigenvalues.

intspin_unrestricted()Return 1 if the alpha orbitals are not equal to the beta orbitals.

virtual intn_fock_matrices() const =0

virtualRefSymmSCMatrix fock(int)=0

virtualRefSymmSCMatrix effective_fock()=0

virtual doubleone_body_energy()

virtual voidtwo_body_energy(double &ec, double &ex)

voidsymmetry_changed()Call this if you have changed the molecular symmetry of the molecule contained by thisMolecularEnergy.

voidobsolete()Marks all results as being out of date.

voidExEnv::out0()) constPrint information about the object.

### Protected Types

enumAccess{Read,Write,Accum}

### Protected Member Functions

virtual voidinit_threads()

virtual voiddone_threads()

virtual voidcompute()Recompute at least the results that have compute true and are not already computed.

virtual doublecompute_vector(double &, double enuclear)

virtualRef<SCExtrapError>extrap_error()

virtual voidcompute_gradient(constRefSCVector&)

virtual voidcompute_hessian(constRefSymmSCMatrix&)

virtual voidsavestate_iter(int)

virtual voidsavestate_to_file(const std::string &filename)

signed char *init_pmax(double *)RefSymmSCMatrix get_local_data(constRefSymmSCMatrix&, double *&, Access)

virtual voidinitial_vector(int needv=1)

voidinit_mem(int)

voidso_density(constRefSymmSCMatrix&d, double occ, int alp=1)

int *read_occ(constRef<KeyVal> &, const char *name, int nirrep)

virtual voidset_occupations(constRefDiagSCMatrix&)=0

virtual voidinit_vector()=0

virtual voiddone_vector()=0

virtual doublenew_density()=0

virtual voidreset_density()=0

virtual doublescf_energy()=0

virtualRef<SCExtrapData>extrap_data()=0

virtual voidao_fock(double accuracy)=0

virtual voidinit_gradient()=0

virtual voiddone_gradient()=0

virtualRefSymmSCMatrix lagrangian()=0

virtualRefSymmSCMatrix gradient_density()=0

virtual voidtwo_body_deriv(double *)=0

virtual voidinit_hessian()=0

virtual voiddone_hessian()=0

### Protected Attributes

intneed_vec_

intcompute_guess_

intkeep_guess_wfn_Ref<OneBodyWavefunction>guess_wfn_

intalways_use_guess_wfn_Ref<SelfConsistentExtrapolation>extrap_Ref<AccumH>accumdih_Ref<AccumH>accumddh_

intmaxiter_

intdens_reset_freq_

intreset_occ_

intlocal_dens_

size_tstorage_

intprint_all_evals_

intprint_occ_evals_

doublelevel_shift_Ref<MessageGrp>scf_grp_Ref<ThreadGrp>threadgrp_

intlocal_Ref<TwoBodyInt> *tbis_

std::stringprevious_savestate_file_RefSCMatrix oso_scf_vector_RefSCMatrix oso_scf_vector_beta_RefSymmSCMatrix hcore_

### Additional Inherited Members

## Detailed Description

The **SCF** class is the base for all classes that use a self-consistent field procedure to solve an effective one body problem.

## Constructor & Destructor Documentation

### sc::SCF::SCF (const Ref< KeyVal > &)

The **KeyVal** constructor.

`maxiter`

- This integer specifies the maximum number of
**SCF**iterations. The default is 40.

`density_reset_frequency`

- This integer specifies how often, in term of
**SCF**iterations, $Delta D$ will be reset to $D$. The default is 10.

`reset_occuptions`

- Reassign the occupations after each iteration based on the eigenvalues. This only has an effect for molecules with higher than $C_1$ symmetry. The default is false.

`level_shift`

- The default is 0.

`extrap`

- This specifies an object of type
**SelfConsistentExtrapolation**. The default is a**DIIS**object.

`memory`

- The amount of memory that each processor may use. The default is 0 (minimal memory use).

`local_density`

- If this is true, a local copy of the density and $G$ matrix will be made on all nodes, even if a distributed matrix specialization is used. The default is true.

`guess_wavefunction`

- This specifies the initial guess for the solution to the
**SCF**equations. This can be either a**OneBodyWavefunction**object or the name of file that contains the saved state of a**OneBodyWavefunction**object. By default the one-electron hamiltonian will be diagonalized to obtain the initial guess.

`keep_guess_wavefunction`

- The guess wavefunction is normally discarded after it is projected. Setting this boolean variable to true will cause the guess to be kept. This is useful when doing frequencies of symmetric molecules by finite displacements, because the wavefunction is lost whenever the molecule is displaced into lower symmetry.

`always_use_guess_wavefunction`

- If the orbitals must be recomputed after they have already been computed once, then the old orbitals are used as the initial guess by default. However, if this option is true, then the guess wavefunction will be used, if available. If a guess wavefunction is not available, then a core Hamiltonian guess will be used. If this option is set to true, then keep_guess_wavefunction should also be set to true.

`print_evals`

- Takes a boolean value. If true, print all eigenvalues after the
**SCF**procedure converges. Takes a boolean value. The default is false.

`print_occ_evals`

- Takes a boolean value. If true, print the occupied eigenvalues after the
**SCF**procedure converges. The default is false.

## Member Function Documentation

### virtual void sc::SCF::compute () [protected], [virtual]

Recompute at least the results that have compute true and are not already computed. This should only be called by **Result**'s members.

Implements **sc::Compute**.

### RefDiagSCMatrix sc::SCF::eigenvalues () [virtual]

Returns the MO basis eigenvalues.

Implements **sc::OneBodyWavefunction**.

Reimplemented in **sc::UnrestrictedSCF**.

### void sc::SCF::obsolete () [virtual]

Marks all results as being out of date. Any subsequent access to results will cause **Compute::compute()** to be called.

Reimplemented from **sc::Compute**.

### RefSCMatrix sc::SCF::oso_eigenvectors () [virtual]

Returns the orthogonal MO (columns) to orthogonal-SO (rows) transformation matrix.

Implements **sc::OneBodyWavefunction**.

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

Reimplemented in **sc::UnrestrictedSCF**, **sc::TCSCF**, **sc::UHF**, and **sc::TCHF**.

### void sc::SCF::symmetry_changed () [virtual]

Call this if you have changed the molecular symmetry of the molecule contained by this **MolecularEnergy**.

Reimplemented from **sc::MolecularEnergy**.

Reimplemented in **sc::UnrestrictedSCF**, and **sc::TCSCF**.

## Author

Generated automatically by Doxygen for MPQC from the source code.