A Module For Solving Quantum Chemistry Systems using Purification.
Compute the density matrix from a Hamiltonian using the PM method. Based on the PM algorithm presented in \cite palser1998canonical
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Matrix_ps), | intent(in) | :: | H |
The matrix to compute the corresponding density from. |
||
type(Matrix_ps), | intent(in) | :: | ISQ |
The inverse square root of the overlap matrix. |
||
real(kind=NTREAL), | intent(in) | :: | trace |
The trace of the density matrix (usually the number of electrons) |
||
type(Matrix_ps), | intent(inout) | :: | K |
The density matrix computed by this routine. |
||
real(kind=NTREAL), | intent(out), | optional | :: | energy_value_out |
The energy of the system (optional). |
|
real(kind=NTREAL), | intent(out), | optional | :: | chemical_potential_out |
The chemical potential (optional). |
|
type(SolverParameters_t), | intent(in), | optional | :: | solver_parameters_in |
Parameters for the solver (optional). |
Compute the density matrix from a Hamiltonian using the TRS2 method. Based on the TRS2 algorithm presented in \cite niklasson2002.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Matrix_ps), | intent(in) | :: | H |
The matrix to compute the corresponding density from |
||
type(Matrix_ps), | intent(in) | :: | ISQ |
The inverse square root of the overlap matrix. |
||
real(kind=NTREAL), | intent(in) | :: | trace |
The trace of the density matrix (usually the number of electrons) |
||
type(Matrix_ps), | intent(inout) | :: | K |
The density matrix computed by this routine. |
||
real(kind=NTREAL), | intent(out), | optional | :: | energy_value_out |
The energy of the system (optional). |
|
real(kind=NTREAL), | intent(out), | optional | :: | chemical_potential_out |
The chemical potential (optional). |
|
type(SolverParameters_t), | intent(in), | optional | :: | solver_parameters_in |
Parameters for the solver (optional). |
Compute the density matrix from a Hamiltonian using the TRS4 method. Based on the TRS4 algorithm presented in \cite niklasson2002
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Matrix_ps), | intent(in) | :: | H |
The matrix to compute the corresponding density from. |
||
type(Matrix_ps), | intent(in) | :: | ISQ |
The inverse square root of the overlap matrix. |
||
real(kind=NTREAL), | intent(in) | :: | trace |
The trace of the density matrix (usually the number of electrons) |
||
type(Matrix_ps), | intent(inout) | :: | K |
The density matrix computed by this routine. |
||
real(kind=NTREAL), | intent(out), | optional | :: | energy_value_out |
The energy of the system (optional). |
|
real(kind=NTREAL), | intent(out), | optional | :: | chemical_potential_out |
The chemical potential (optional). |
|
type(SolverParameters_t), | intent(in), | optional | :: | solver_parameters_in |
Parameters for the solver (optional). |
Compute the density matrix from a Hamiltonian using the HPCP method. Based on the algorithm presented in \cite truflandier2016communication.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Matrix_ps), | intent(in) | :: | H |
The matrix to compute the corresponding density from. |
||
type(Matrix_ps), | intent(in) | :: | ISQ |
The inverse square root of the overlap matrix. |
||
real(kind=NTREAL), | intent(in) | :: | trace |
The trace of the density matrix (usually the number of electrons) |
||
type(Matrix_ps), | intent(inout) | :: | K |
The density matrix computed by this routine. |
||
real(kind=NTREAL), | intent(out), | optional | :: | energy_value_out |
The energy of the system (optional). |
|
real(kind=NTREAL), | intent(out), | optional | :: | chemical_potential_out |
The chemical potential (optional). |
|
type(SolverParameters_t), | intent(in), | optional | :: | solver_parameters_in |
Parameters for the solver (optional). |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Matrix_ps), | intent(in) | :: | H |
The matrix to compute the corresponding density from |
||
type(Matrix_ps), | intent(in) | :: | ISQ |
The inverse square root of the overlap matrix. |
||
real(kind=NTREAL), | intent(in) | :: | trace |
The trace of the density matrix (usually the number of electrons) |
||
type(Matrix_ps), | intent(inout) | :: | K |
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). |
Compute the density matrix using a dense routine.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Matrix_ps), | intent(in) | :: | H |
The matrix to compute the corresponding density from. |
||
type(Matrix_ps), | intent(in) | :: | ISQ |
The inverse square root of the overlap matrix. |
||
real(kind=NTREAL), | intent(in) | :: | trace |
The trace of the density matrix (usually the number of electrons) |
||
type(Matrix_ps), | intent(inout) | :: | K |
The density matrix computed by this routine. |
||
real(kind=NTREAL), | intent(out), | optional | :: | energy_value_out |
The energy of the system (optional). |
|
real(kind=NTREAL), | intent(out), | optional | :: | chemical_potential_out |
The chemical potential (optional). |
|
type(SolverParameters_t), | intent(in), | optional | :: | solver_parameters_in |
Parameters for the solver (optional). |
Compute the energy-weighted density matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Matrix_ps), | intent(in) | :: | H |
The matrix to compute from. |
||
type(Matrix_ps), | intent(in) | :: | D |
The density matrix. |
||
type(Matrix_ps), | intent(inout) | :: | ED |
The energy-weighted density matrix. |
||
real(kind=NTREAL), | intent(in), | optional | :: | threshold_in |
Threshold for flushing small values (default = 0). |
Take one McWeeny Step DOut = 3DSD - 2DSDSD
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Matrix_ps), | intent(in) | :: | D |
The density matrix. |
||
type(Matrix_ps), | intent(inout) | :: | DOut |
The resulting purified matrix. |
||
type(Matrix_ps), | intent(in), | optional | :: | S_in |
The overlap matrix (optional) |
|
real(kind=NTREAL), | intent(in), | optional | :: | threshold_in |
Threshold for flushing small values (default = 0). |