NTPoly
Loading...
Searching...
No Matches
Static Public Member Functions | List of all members
NTPoly::DensityMatrixSolvers Class Reference

A Class For Solving Chemistry Systems Based On Sparse Matrices. More...

#include <DensityMatrixSolvers.h>

Inheritance diagram for NTPoly::DensityMatrixSolvers:
NTPoly::SolverBase

Static Public Member Functions

static void PM (const Matrix_ps &Hamiltonian, const Matrix_ps &InverseSquareRoot, double trace, Matrix_ps &Density, double &energy_value_out, double &chemical_potential_out, const SolverParameters &solver_parameters)
 
static void TRS2 (const Matrix_ps &Hamiltonian, const Matrix_ps &InverseSquareRoot, double trace, Matrix_ps &Density, double &energy_value_out, double &chemical_potential_out, const SolverParameters &solver_parameters)
 
static void TRS4 (const Matrix_ps &Hamiltonian, const Matrix_ps &InverseSquareRoot, double trace, Matrix_ps &Density, double &energy_value_out, double &chemical_potential_out, const SolverParameters &solver_parameters)
 
static void HPCP (const Matrix_ps &Hamiltonian, const Matrix_ps &InverseSquareRoot, double trace, Matrix_ps &Density, double &energy_value_out, double &chemical_potential_out, const SolverParameters &solver_parameters)
 
static void ScaleAndFold (const Matrix_ps &Hamiltonian, const Matrix_ps &InverseSquareRoot, double trace, Matrix_ps &Density, double homo, double lumo, double &energy_value_out, const SolverParameters &solver_parameters)
 
static void DenseDensity (const Matrix_ps &Hamiltonian, const Matrix_ps &InverseSquareRoot, double trace, Matrix_ps &Density, double &energy_value_out, double &chemical_potential_out, const SolverParameters &solver_parameters)
 
static void EnergyDensityMatrix (const Matrix_ps &Hamiltonian, const Matrix_ps &Density, Matrix_ps &EnergyDensity, double threshold=0.0)
 
static void McWeenyStep (const Matrix_ps &D, Matrix_ps &DOut, double threshold=0.0)
 
static void McWeenyStep (const Matrix_ps &D, const Matrix_ps &S, Matrix_ps &DOut, double threshold=0.0)
 

Additional Inherited Members

- Static Protected Member Functions inherited from NTPoly::SolverBase
static const int * GetIH (const Matrix_ps &dsm)
 
static int * GetIH (Matrix_ps &dsm)
 
static const int * GetIH (const SolverParameters &csp)
 
static int * GetIH (SolverParameters &csp)
 

Detailed Description

A Class For Solving Chemistry Systems Based On Sparse Matrices.

Member Function Documentation

◆ DenseDensity()

void NTPoly::DensityMatrixSolvers::DenseDensity ( const Matrix_ps Hamiltonian,
const Matrix_ps InverseSquareRoot,
double  trace,
Matrix_ps Density,
double &  energy_value_out,
double &  chemical_potential_out,
const SolverParameters solver_parameters 
)
static

Compute the density matrix using a dense solver.

Parameters
Hamiltonianthe matrix to compute the corresponding density from.
InverseSquareRootof the overlap matrix.
traceof the density matrix (usually the number of electrons).
Densitythe density matrix computed by this routine.
energy_value_outthe energy of the system (optional).
chemical_potential_outthe chemical potential calculated.
solver_parametersparameters for the solver

◆ EnergyDensityMatrix()

void NTPoly::DensityMatrixSolvers::EnergyDensityMatrix ( const Matrix_ps Hamiltonian,
const Matrix_ps Density,
Matrix_ps EnergyDensity,
double  threshold = 0.0 
)
static

Compute the energy-weighted density matrix.

Parameters
Hamiltonianthe matrix to compute from.
Densitythe density matrix.
EnergyDensitythe energy-weighted density matrix to compute.
thresholdfor flushing small values to zero.

◆ HPCP()

void NTPoly::DensityMatrixSolvers::HPCP ( const Matrix_ps Hamiltonian,
const Matrix_ps InverseSquareRoot,
double  trace,
Matrix_ps Density,
double &  energy_value_out,
double &  chemical_potential_out,
const SolverParameters solver_parameters 
)
static

Compute the density matrix from a Hamiltonian using the HPCP method. Based on the algorithm presented in: [6]

Parameters
Hamiltonianthe matrix to compute the corresponding density from.
InverseSquareRootof the overlap matrix.
traceof the density matrix (usually the number of electrons).
Densitythe density matrix computed by this routine.
energy_value_outthe energy of the system (optional).
chemical_potential_outthe chemical potential calculated.
solver_parametersparameters for the solver

◆ McWeenyStep() [1/2]

void NTPoly::DensityMatrixSolvers::McWeenyStep ( const Matrix_ps D,
const Matrix_ps S,
Matrix_ps DOut,
double  threshold = 0.0 
)
static

Take one McWeeny Step DOut = 3*DSD - 2*DSDSD

Parameters
Dthe density matrix.
Sthe overlap matrix.
DOuta more purified matrix.
thresholdfor flushing small values to zero.

◆ McWeenyStep() [2/2]

void NTPoly::DensityMatrixSolvers::McWeenyStep ( const Matrix_ps D,
Matrix_ps DOut,
double  threshold = 0.0 
)
static

Take one McWeeny Step DOut = 3*DD - 2*DDD

Parameters
Dthe density matrix.
DOuta more purified matrix.
thresholdfor flushing small values to zero.

◆ PM()

void NTPoly::DensityMatrixSolvers::PM ( const Matrix_ps Hamiltonian,
const Matrix_ps InverseSquareRoot,
double  trace,
Matrix_ps Density,
double &  energy_value_out,
double &  chemical_potential_out,
const SolverParameters solver_parameters 
)
static

Compute the density matrix from a Hamiltonian using the PM method. Based on the PM algorithm presented in [4]

Parameters
Hamiltonianthe matrix to compute the corresponding density from.
InverseSquareRootof the overlap matrix.
traceof the density matrix (usually the number of electrons).
Densitythe density matrix computed by this routine.
energy_value_outthe energy of the system (optional).
chemical_potential_outthe chemical potential calculated.
solver_parametersparameters for the solver

◆ ScaleAndFold()

void NTPoly::DensityMatrixSolvers::ScaleAndFold ( const Matrix_ps Hamiltonian,
const Matrix_ps InverseSquareRoot,
double  trace,
Matrix_ps Density,
double  homo,
double  lumo,
double &  energy_value_out,
const SolverParameters solver_parameters 
)
static

Compute the density matrix from a Hamiltonian using the Scale and Fold method. Based on the method of [5] . 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.

Parameters
Hamiltonianthe matrix to compute the corresponding density from.
InverseSquareRootof the overlap matrix.
traceof the density matrix (usually the number of electrons).
Densitythe density matrix computed by this routine.
homoA conservative estimate of the highest occupied eigenvalue.
lumoA conservative estimate of the lowest unoccupied eigenvalue.
energy_value_outthe energy of the system (optional).
solver_parametersparameters for the solver

◆ TRS2()

void NTPoly::DensityMatrixSolvers::TRS2 ( const Matrix_ps Hamiltonian,
const Matrix_ps InverseSquareRoot,
double  trace,
Matrix_ps Density,
double &  energy_value_out,
double &  chemical_potential_out,
const SolverParameters solver_parameters 
)
static

Compute the density matrix from a Hamiltonian using the TRS2 method. Based on the TRS2 algorithm presented in: [3].

Parameters
Hamiltonianthe matrix to compute the corresponding density from.
InverseSquareRootof the overlap matrix.
traceof the density matrix (usually the number of electrons).
Densitythe density matrix computed by this routine.
energy_value_outthe energy of the system (optional).
chemical_potential_outthe chemical potential calculated.
solver_parametersparameters for the solver

◆ TRS4()

void NTPoly::DensityMatrixSolvers::TRS4 ( const Matrix_ps Hamiltonian,
const Matrix_ps InverseSquareRoot,
double  trace,
Matrix_ps Density,
double &  energy_value_out,
double &  chemical_potential_out,
const SolverParameters solver_parameters 
)
static

Compute the density matrix from a Hamiltonian using the TRS4 method. Based on the TRS4 algorithm presented in: [3] .

Parameters
Hamiltonianthe matrix to compute the corresponding density from.
InverseSquareRootof the overlap matrix.
traceof the density matrix (usually the number of electrons).
Densitythe density matrix computed by this routine.
energy_value_outthe energy of the system (optional).
chemical_potential_outthe chemical potential calculated.
solver_parametersparameters for the solver

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