mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat > Class Template Reference
Collaboration diagram for mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >:

Documentation

template<typename Tile, typename Policy, typename Mat>
class mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >

Finds a stationary point of the PM objective function for periodic systems.

Public Types

using MatrixzVec = std::vector< Mat >
 
- Public Types inherited from mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >
using MatrixzVec = std::vector< Mat >
 

Public Member Functions

virtual ~PMzOrbitalLocalizationGradient ()=default
 
 PMzOrbitalLocalizationGradient (std::shared_ptr< pbc::gaussian::AOFactory< TileD, Policy >> ao_factory, double convergence_threshold, size_t max_iter)
 
const Vector3ilocalization_range () const final
 
std::vector< std::vector< Mat > > precompute_gradient (MatrixzVec const &C, Eigen::Vector3i const &nk)
 
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 final
 
double compute_function (std::vector< MatrixzVec > const &Q_list, MatrixzVec const &Wn, Eigen::Vector3i const &nk) const final
 
std::vector< Mat > compute_gradient (std::vector< MatrixzVec > const &Q_list, MatrixzVec const &Wn, Eigen::Vector3i const &nk) const final
 
std::vector< Mat > compute_numerical_gradient (std::vector< std::vector< Mat >> const &Q_list, std::vector< Mat > const &Wn, double delta, Eigen::Vector3i const &nk) const
 
std::vector< Mat > compute_numerical_G (std::vector< std::vector< Mat >> const &Q_list, std::vector< Mat > const &Wn, double delta, Eigen::Vector3i const &nk) const
 
- Public Member Functions inherited from mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >
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 Tile , typename Policy , typename Mat >
using mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >::MatrixzVec = std::vector<Mat>

Constructor & Destructor Documentation

◆ ~PMzOrbitalLocalizationGradient()

template<typename Tile , typename Policy , typename Mat >
virtual mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >::~PMzOrbitalLocalizationGradient ( )
virtualdefault

◆ PMzOrbitalLocalizationGradient()

template<typename Tile , typename Policy , typename Mat >
mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >::PMzOrbitalLocalizationGradient ( std::shared_ptr< pbc::gaussian::AOFactory< TileD, Policy >>  ao_factory,
double  convergence_threshold,
size_t  max_iter 
)
inline

Member Function Documentation

◆ compute_function()

template<typename Tile , typename Policy , typename Mat >
double mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >::compute_function ( std::vector< MatrixzVec > const &  Q_list,
MatrixzVec const &  Wn,
Eigen::Vector3i const &  nk 
) const
inlinefinalvirtual

◆ compute_gradient()

template<typename Tile , typename Policy , typename Mat >
std::vector<Mat> mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >::compute_gradient ( std::vector< MatrixzVec > const &  Q_list,
MatrixzVec const &  Wn,
Eigen::Vector3i const &  nk 
) const
inlinefinalvirtual

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

Implements mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >.

◆ compute_numerical_G()

template<typename Tile , typename Policy , typename Mat >
std::vector<Mat> mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >::compute_numerical_G ( std::vector< std::vector< Mat >> const &  Q_list,
std::vector< Mat > const &  Wn,
double  delta,
Eigen::Vector3i const &  nk 
) const
inline

◆ compute_numerical_gradient()

template<typename Tile , typename Policy , typename Mat >
std::vector<Mat> mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >::compute_numerical_gradient ( std::vector< std::vector< Mat >> const &  Q_list,
std::vector< Mat > const &  Wn,
double  delta,
Eigen::Vector3i const &  nk 
) const
inline

◆ localization_range()

template<typename Tile , typename Policy , typename Mat >
const Vector3i& mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >::localization_range ( ) const
inlinefinalvirtual
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}

Implements mpqc::lcao::pbc::detail::zOrbitalLocalizationGradient< Mat >.

◆ precompute_gradient()

template<typename Tile , typename Policy , typename Mat >
std::vector<std::vector<Mat> > mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, Mat >::precompute_gradient ( MatrixzVec const &  C,
Eigen::Vector3i const &  nk 
)
inlinevirtual

◆ shift_Q()

template<typename Tile , typename Policy , typename Mat >
std::vector<std::vector<Mat> > mpqc::lcao::pbc::detail::PMzOrbitalLocalizationGradient< Tile, Policy, 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
inlinefinalvirtual

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