ScaleAndFold Subroutine

public subroutine ScaleAndFold(Hamiltonian, InverseSquareRoot, nel, Density, homo, lumo, energy_value_out, solver_parameters_in)

Compute the density matrix from a Hamiltonian using the Scale and Fold method. Based on the method of \cite rubensson2011nonmonotonic . Note that for this method, you must provide the value of the homo and lumo gap. It is not necessary for these to be accurate, but give a conservative value.

Arguments

Type IntentOptional AttributesName
type(Matrix_ps), intent(in) :: Hamiltonian

The matrix to compute the corresponding density from

type(Matrix_ps), intent(in) :: InverseSquareRoot

The inverse square root of the overlap matrix.

integer, intent(in) :: nel

The number of electrons.

type(Matrix_ps), intent(inout) :: Density

The density matrix computed by this routine.

real(kind=NTREAL), intent(in) :: homo

A conservative estimate of the highest occupied eigenvalue.

real(kind=NTREAL), intent(in) :: lumo

A conservative estimate of the lowest unoccupied eigenvalue.

real(kind=NTREAL), intent(out), optional :: energy_value_out

The energy of the system (optional).

type(SolverParameters_t), intent(in), optional :: solver_parameters_in

Parameters for the solver (optional).


Contents

None