mpqc::lcao::pbc::SD::Impl< Tile, Policy > Class Template Reference

Documentation

template<typename Tile, typename Policy>
class mpqc::lcao::pbc::SD::Impl< Tile, Policy >

single-determinant wavefunction under open and periodic boundary conditions.

Public Types

using factory_type = pbc::gaussian::AOFactory< Tile, Policy >
 
using array_type = typename factory_type::TArray
 
using TileZ = TA::TensorZ
 
using array_type_z = TA::DistArray< TileZ, Policy >
 

Public Member Functions

auto & ao_factory ()
 
const auto & ao_factory () const
 

Protected Member Functions

 Impl (const KeyVal &kv)
 KeyVal constructor for SD. More...
 
 ~Impl ()
 

Protected Attributes

std::unique_ptr< FockBuilder< Tile, Policy > > f_builder_
 
std::shared_ptr< PopulationAnalysis< Tile, Policy > > population_analysis_
 
std::shared_ptr< zOrbitalLocalizer< Tile, Policy, MatrixZ > > localizer_
 
bool naive_ = false
 

Member Typedef Documentation

◆ array_type

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::SD::Impl< Tile, Policy >::array_type = typename factory_type::TArray

◆ array_type_z

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::SD::Impl< Tile, Policy >::array_type_z = TA::DistArray<TileZ, Policy>

◆ factory_type

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::SD::Impl< Tile, Policy >::factory_type = pbc::gaussian::AOFactory<Tile, Policy>

◆ TileZ

template<typename Tile , typename Policy >
using mpqc::lcao::pbc::SD::Impl< Tile, Policy >::TileZ = TA::TensorZ

Constructor & Destructor Documentation

◆ Impl()

template<typename Tile , typename Policy >
mpqc::lcao::pbc::SD::Impl< Tile, Policy >::Impl ( const KeyVal kv)
protected

KeyVal constructor for SD.

Parameters
kvThe KeyVal object will take all keywords from PeriodicAOWavefunction, and the following keywords
Keyword Type Default Description
max_iter int 30 maximum number of iteration
soad_guess bool true if true, use SOAD guess for initial Fock build
print_detail bool false if print extra computation&time info
max_condition_num real 1e8 maximum condition number for overlap matrix
print_max_item int 100 maximum number of items/lines that can be printed in the list of condition numbers
level_shift real 0 this adds a nonnegative energy shift to the diagonal Fock elements (in Crystal Orbital basis) of the unoccupied orbitals
diis string gamma the choice of DIIS method: none (DIIS will not be used) , gamma (extrapolation parameters evaluated using the Fock matrix at the gamma point (k={0,0,0}), then used to extrapolate the Fock matrix at every other k-point; this should work fine if band dispersion is small) , kwise (DIIS extrapolates the Fock matrix at each k point independently), and band (DIIS extrapolates the band of Fock matrices as a whole, using the average band error, with all k-points weighted equally)
diis_start unsigned int 1 the DIIS extrapolation will begin on the iteration given by this integer
diis_num_vecs unsigned int 5 maximum number of data sets to store
diis_damping real 0.3 this nonnegative floating point number is used to dampen the DIIS extrapolation, specifically the diagonal elements of the DIIS B (error overlap) matrix are scaled by 1 plus this number
diis_damping_attenuation real 1e-3 this nonnegative floating point number defines the 2-norm of the error when when the damping factor for the DIIS extrapolation starts to decay linearly with the error
diis_mixing real 0 this nonnegative floating point number is used to dampen the DIIS extrapolation by mixing the input Fock with the output Fock for each iteration

| diis_num_iters_group | unsigned int | 1 | the number of iterations in a DIIS group | DIIS extrapolation is only used for the first diis_num_extrap_group of these iterations | | diis_num_extrap_group | unsigned int | 1 | the number of DIIS extrapolations to do at the beginning of an iteration group | | export_orbitals | string | none | if unitcell or supercell , export orbitals defined on the unit cell or supercell, respectively, to molden files in JMOL-extended molden format (2 files per each k point, real and imaginary components separated); file is written by rank 0 | | population_analysis | PopulationAnalysis | none | if given, perform population analysis and print the results in ad-hoc format to the standard output | | naive | bool | false | if true, use the naive (reference) implementation of the 4-c Fock build, pbc::ReferenceFockBuilder ; this is useful for testing only |

example input:

"wfn": {
"type": "SD",
"atoms": "$:h2o",
"wfn_world": "$:wfn_world",
"max_iter": 100,
"soad_guess": true,
"print_detail": true,
"max_condition_num": 1e8,
"print_max_item": 100
}

SD member functions

◆ ~Impl()

template<typename Tile , typename Policy >
mpqc::lcao::pbc::SD::Impl< Tile, Policy >::~Impl ( )
protected

Member Function Documentation

◆ ao_factory() [1/2]

template<typename Tile , typename Policy >
auto& mpqc::lcao::pbc::SD::Impl< Tile, Policy >::ao_factory ( )
inline

Return a reference to the AOFactory Library

◆ ao_factory() [2/2]

template<typename Tile , typename Policy >
const auto& mpqc::lcao::pbc::SD::Impl< Tile, Policy >::ao_factory ( ) const
inline

Return a const reference to the AOFactory Library

Member Data Documentation

◆ f_builder_

template<typename Tile , typename Policy >
std::unique_ptr<FockBuilder<Tile, Policy> > mpqc::lcao::pbc::SD::Impl< Tile, Policy >::f_builder_
protected

◆ localizer_

template<typename Tile , typename Policy >
std::shared_ptr<zOrbitalLocalizer<Tile, Policy, MatrixZ> > mpqc::lcao::pbc::SD::Impl< Tile, Policy >::localizer_
protected

◆ naive_

template<typename Tile , typename Policy >
bool mpqc::lcao::pbc::SD::Impl< Tile, Policy >::naive_ = false
protected

◆ population_analysis_

template<typename Tile , typename Policy >
std::shared_ptr<PopulationAnalysis<Tile, Policy> > mpqc::lcao::pbc::SD::Impl< Tile, Policy >::population_analysis_
protected

The documentation for this class was generated from the following files:
  • mpqc/chemistry/qc/lcao/scf/pbc/sd.h
  • mpqc/chemistry/qc/lcao/scf/pbc/sd.impl.ipp