mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat > Struct Template Referenceabstract

Documentation

template<typename Mat>
struct mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >

Abstract periodic orbital gradient.

Public Types

using MatrixzVec = std::vector< Mat >
 

Public Member Functions

virtual const Vector3ilocalization_range () const =0
 
virtual std::vector< std::vector< Mat > > precompute_gradient (MatrixzVec const &C, Eigen::Vector3i const &nk)=0
 
virtual std::vector< std::vector< Mat > > shift_Q (std::vector< MatrixzVec > const &Q_list, const Supercell::Point &R_pt, Eigen::Vector3i const &nk, const std::shared_ptr< const UnitCell > &k_mesh_unitcell) const =0
 
virtual double compute_function (std::vector< MatrixzVec > const &Q_list, MatrixzVec const &Wn, Eigen::Vector3i const &nk) const =0
 
virtual std::vector< Mat > compute_gradient (std::vector< MatrixzVec > const &Q_list, MatrixzVec const &Wn, Eigen::Vector3i const &nk) const =0
 
virtual std::vector< Mat > compute_numerical_gradient (std::vector< MatrixzVec > const &Q_list, MatrixzVec const &Wn, double delta, Eigen::Vector3i const &nk) const =0
 
virtual std::vector< Mat > compute_numerical_G (std::vector< MatrixzVec > const &Q_list, MatrixzVec const &Wn, double delta, Eigen::Vector3i const &nk) const =0
 

Member Typedef Documentation

◆ MatrixzVec

template<typename Mat >
using mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >::MatrixzVec = std::vector<Mat>

Member Function Documentation

◆ compute_function()

template<typename Mat >
virtual double mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >::compute_function ( std::vector< MatrixzVec > const &  Q_list,
MatrixzVec const &  Wn,
Eigen::Vector3i const &  nk 
) const
pure virtual

◆ compute_gradient()

template<typename Mat >
virtual std::vector<Mat> mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >::compute_gradient ( std::vector< MatrixzVec > const &  Q_list,
MatrixzVec const &  Wn,
Eigen::Vector3i const &  nk 
) const
pure virtual

calculates the gradient of a given function of the orbitals

Parameters
[in]Cinput LCAOs: one matrix for each k point
[in]nkthe vector specifying the number of k points in each direction; number of k points in any direction is an odd, positive integer
Returns
Q_list the Qs for each atom A and each unique pair of k1 and k2
Parameters
[in]Q_listthe Qs for each atom A and each unique pair of k1 and k2
[in]Wnthe nth iteration of the transformation matrices: one matrix for each k point
Returns
Gamma_n the nth iteration of the gradient: one matrix for each k point

Implemented in mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >.

◆ compute_numerical_G()

template<typename Mat >
virtual std::vector<Mat> mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >::compute_numerical_G ( std::vector< MatrixzVec > const &  Q_list,
MatrixzVec const &  Wn,
double  delta,
Eigen::Vector3i const &  nk 
) const
pure virtual

◆ compute_numerical_gradient()

template<typename Mat >
virtual std::vector<Mat> mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >::compute_numerical_gradient ( std::vector< MatrixzVec > const &  Q_list,
MatrixzVec const &  Wn,
double  delta,
Eigen::Vector3i const &  nk 
) const
pure virtual

◆ localization_range()

template<typename Mat >
virtual const Vector3i& mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >::localization_range ( ) const
pure virtual
Returns
@cn={nx,ny,nz}, where ni>=0 , defines the range of the supercell on which localization is performed; specifically, the supercell includes unit cells with lattice indices in [-n,n] .
Warning
if localization had not been performed, this will return {-1,-1,-1}

Implemented in mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >.

◆ precompute_gradient()

template<typename Mat >
virtual std::vector<std::vector<Mat> > mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >::precompute_gradient ( MatrixzVec const &  C,
Eigen::Vector3i const &  nk 
)
pure virtual

◆ shift_Q()

template<typename Mat >
virtual std::vector<std::vector<Mat> > mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >::shift_Q ( std::vector< MatrixzVec > const &  Q_list,
const Supercell::Point R_pt,
Eigen::Vector3i const &  nk,
const std::shared_ptr< const UnitCell > &  k_mesh_unitcell 
) const
pure virtual

The documentation for this struct was generated from the following file: