# sc_HSOSSCF man page

sc::HSOSSCF — The **HSOSSCF** class is a base for classes implementing a self-consistent procedure for high-spin open-shell molecules.

## Synopsis

`#include <hsosscf.h>`

Inherits **sc::SCF**.

Inherited by **sc::HSOSHF**, and **sc::HSOSKS**.

### Public Member Functions

**HSOSSCF** (**StateIn** &)**HSOSSCF** (const **Ref**< **KeyVal** > &)

The **KeyVal** constructor.

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 **print** (std::ostream &o=**ExEnv::out0**()) const

Print information about the object.

double **occupation** (int irrep, int vectornum)

Returns the occupation.

double **alpha_occupation** (int irrep, int vectornum)

Returns the alpha occupation.

double **beta_occupation** (int irrep, int vectornum)

Returns the beta occupation.

int **n_fock_matrices** () const**RefSymmSCMatrix fock** (int i)

Returns closed-shell (i==0) or open-shell (i==1) Fock matrix in AO basis (excluding XC contribution in KS DFT). **RefSymmSCMatrix effective_fock** ()

Returns effective Fock matrix in MO basis (including XC contribution for KS DFT).

void **symmetry_changed** ()

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

int **spin_polarized** ()

Return 1 if the alpha density is not equal to the beta density. **RefSymmSCMatrix density** ()

Returns the **SO** density. **RefSymmSCMatrix alpha_density** ()

Return alpha electron densities in the **SO** basis. **RefSymmSCMatrix beta_density** ()

Return beta electron densities in the **SO** basis.

### Protected Member Functions

void **set_occupations** (const **RefDiagSCMatrix** &evals)

void **init_vector** ()

void **done_vector** ()

void **reset_density** ()

double **new_density** ()

double **scf_energy** ()**Ref**< **SCExtrapData** > **extrap_data** ()

void **init_gradient** ()

void **done_gradient** ()**RefSymmSCMatrix lagrangian** ()**RefSymmSCMatrix gradient_density** ()

void **init_hessian** ()

void **done_hessian** ()

void **two_body_deriv_hf** (double *grad, double exchange_fraction)

### Protected Attributes

**Ref**< **PointGroup** > **most_recent_pg_**

int **user_occupations_**

int **tndocc_**

int **tnsocc_**

int **nirrep_**

int * **initial_ndocc_**

int * **initial_nsocc_**

int * **ndocc_**

int * **nsocc_****ResultRefSymmSCMatrix cl_fock_****ResultRefSymmSCMatrix op_fock_****RefSymmSCMatrix cl_dens_****RefSymmSCMatrix cl_dens_diff_****RefSymmSCMatrix cl_gmat_****RefSymmSCMatrix op_dens_****RefSymmSCMatrix op_dens_diff_****RefSymmSCMatrix op_gmat_****RefSymmSCMatrix cl_hcore_**

### Additional Inherited Members

## Detailed Description

The **HSOSSCF** class is a base for classes implementing a self-consistent procedure for high-spin open-shell molecules.

## Constructor & Destructor Documentation

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

The **KeyVal** constructor.

`total_charge`

This floating point number gives the total charge, $c$, of the molecule. The default is 0.

`nsocc`

This integer gives the total number of singly occupied orbitals, $n_mathrm{socc}$. If this is not given, then multiplicity will be read.

`multiplicity`

This integer gives the multiplicity, $m$, of the molecule. The number of singly occupied orbitals is then $n_mathrm{socc} = m - 1$. If neither nsocc nor multiplicity is given, then if, in consideration of total_charge, the number of electrons is even, the default $n_mathrm{socc}$ is 2. Otherwise, it is 1.

`ndocc`

This integer gives the total number of doubly occupied orbitals $n_mathrm{docc}$. The default $n_mathrm{docc} = (c - n_mathrm{socc})/2$.

`socc`

This vector of integers gives the total number of singly occupied orbitals of each irreducible representation. By default, the $n_mathrm{socc}$ singly occupied orbitals will be distributed according to orbital eigenvalues. If socc is given, then docc must be given and they override nsocc, multiplicity, ndocc, and total_charge.

`docc`

This vector of integers gives the total number of doubly occupied orbitals of each irreducible representation. By default, the $n_mathrm{docc}$ singly occupied orbitals will be distributed according to orbital eigenvalues. If docc is given, then socc must be given and they override nsocc, multiplicity, ndocc, and total_charge.

`maxiter`

This has the same meaning as in the parent class,

**SCF**; however, the default value is 100.`level_shift`

This has the same meaning as in the parent class,

**SCF**; however, the default value is 1.0.

## Member Function Documentation

### double sc::HSOSSCF::alpha_occupation (int irrep, int vectornum) [virtual]

Returns the alpha occupation. The irreducible representation and the vector number within that representation are given as arguments.

Reimplemented from **sc::OneBodyWavefunction**.

### double sc::HSOSSCF::beta_occupation (int irrep, int vectornum) [virtual]

Returns the beta occupation. The irreducible representation and the vector number within that representation are given as arguments.

Reimplemented from **sc::OneBodyWavefunction**.

### RefSymmSCMatrix sc::HSOSSCF::effective_fock () [virtual]

Returns effective Fock matrix in MO basis (including XC contribution for KS DFT).

Implements **sc::SCF**.

### RefSymmSCMatrix sc::HSOSSCF::fock (int i) [virtual]

Returns closed-shell (i==0) or open-shell (i==1) Fock matrix in AO basis (excluding XC contribution in KS DFT). Use **effective_fock()** if you want the full KS Fock matrix.

Implements **sc::SCF**.

### double sc::HSOSSCF::occupation (int irrep, int vectornum) [virtual]

Returns the occupation. The irreducible representation and the vector number within that representation are given as arguments.

Implements **sc::OneBodyWavefunction**.

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

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

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

Reimplemented from **sc::MolecularEnergy**.

## Author

Generated automatically by Doxygen for MPQC from the source code.