sisi4s
|
Implements the iteration routine for the Ccsd method. Calculates the amplitudes
#include <CcsdEnergyFromCoulombIntegrals.hpp>
Public Member Functions | |
virtual std::string | getName () |
CcsdEnergyFromCoulombIntegrals (std::vector< Argument > const &argumentList) | |
virtual | ~CcsdEnergyFromCoulombIntegrals () |
virtual std::string | getAbbreviation () |
Returns the abbreviation of the routine (CCSD). | |
![]() | |
ClusterSinglesDoublesAlgorithm (std::vector< Argument > const &argumentList) | |
virtual | ~ClusterSinglesDoublesAlgorithm () |
virtual void | run () |
Calculates the energy of a ClusterSinglesDoubles algorithm. | |
virtual std::string | getAbbreviation ()=0 |
Returns the abbreviation of the concrete algorithm, e.g. "Ccd", "Dcd". | |
![]() | |
Algorithm (std::vector< Argument > const &argumentList) | |
virtual | ~Algorithm () |
virtual std::string | getName ()=0 |
virtual void | run ()=0 |
virtual void | dryRun () |
The dryRun estimates resource consumption, especially memory and processor time. | |
bool | isArgumentGiven (std::string const &argumentName) |
std::string | getTextArgument (std::string const &argumentName) |
std::string | getTextArgument (std::string const &argumentName, std::string const &defaultValue) |
bool | getBooleanArgument (std::string const &name) |
bool | getBooleanArgument (std::string const &name, bool const &defaultValue) |
int64_t | getIntegerArgument (std::string const &argumentName) |
int64_t | getIntegerArgument (std::string const &argumentName, int64_t const defaultValue) |
real | getRealArgument (std::string const &argumentName) |
real | getRealArgument (std::string const &argumentName, real const defaultValue) |
template<typename F = real, typename T = Tensor<F>> | |
T * | getTensorArgument (std::string const &argumentName) |
template<typename F = real, typename C = std::vector<F>> | |
C * | getContainerArgument (std::string const &argumentName) |
template<typename F = real, typename C = std::vector<F>> | |
void | allocateContainerArgument (std::string const &argumentName, C *container) |
std::vector< std::string > | getGivenArgumentNames () const |
void | checkArgumentsOrDie (const std::vector< std::string > args) const |
template<typename F = real, typename T = Tensor<F>> | |
void | allocatedTensorArgument (std::string const &argumentName, T *tensor) |
Specifies the location of an output tensor data. | |
void | setRealArgument (std::string const &argumentName, real const value) |
void | setIntegerArgument (std::string const &argumentName, int const value) |
real | getRealArgumentFromInteger (IntegerData *data) |
real | getRealArgumentFromTensor (TensorData< real > *data) |
template<typename F = real, typename T = Tensor<F>> | |
T * | getTensorArgumentFromReal (RealData *realData) |
Converts the given real data into a scalar tensor. | |
Data * | getArgumentData (std::string const &argumentName) |
Static Public Attributes | |
static sisi4s::AlgorithmRegistrar< CcsdEnergyFromCoulombIntegrals > | registrar_ |
static int64_t constexpr | DEFAULT_SLICE_SIZE = -1 |
static int64_t constexpr | DEFAULT_DISTINGUISHABLE = 0 |
![]() | |
static int constexpr | DEFAULT_MAX_ITERATIONS = 16 |
Defines the default number of iterations (16). | |
static double constexpr | DEFAULT_ENERGY_CONVERGENCE = 1E-6 |
static double constexpr | DEFAULT_AMPLITUDES_CONVERGENCE = 1E-5 |
static double constexpr | DEFAULT_LEVEL_SHIFT = 0.0 |
Protected Member Functions | |
virtual std::shared_ptr< FockVector< double > > | getResiduum (const int iteration, const std::shared_ptr< const FockVector< double > > &litudes) |
Implements the iterate method with the CCSD iteration. Iteration routine taken from So Hirata, et. al. Chem. Phys. Letters, 345, 475 (2001). | |
virtual std::shared_ptr< FockVector< complex > > | getResiduum (const int iteration, const std::shared_ptr< const FockVector< complex > > &litudes) |
Computes and returns the residuum of the given amplitudes. | |
![]() | |
template<typename F > | |
F | run () |
virtual std::shared_ptr< FockVector< double > > | getResiduum (const int iteration, const std::shared_ptr< const FockVector< double > > &litudes)=0 |
Computes and returns the residuum of the given amplitudes. | |
virtual std::shared_ptr< FockVector< complex > > | getResiduum (const int iteration, const std::shared_ptr< const FockVector< complex > > &litudes)=0 |
Computes and returns the residuum of the given amplitudes. | |
template<typename F > | |
F | getEnergy (const std::shared_ptr< const FockVector< F > > &litdues) |
Computes and returns the energy of the given amplitudes. | |
template<typename F > | |
void | estimateAmplitudesFromResiduum (const std::shared_ptr< FockVector< F > > &residuum, const std::shared_ptr< const FockVector< F > > &litudes) |
Calculates an improved estimate of the amplitudes provided the given the residuum. ![]() ![]() | |
template<typename F > | |
void | calculateExcitationEnergies (Tensor< F > &D, const std::string &indices) |
Calculates eps_a+eps_b+...-eps_i-eps_j-... into D^ab..._ij... | |
template<typename F > | |
void | dryAmplitudesFromResiduum (sisi4s::DryTensor< F > &R) |
Dry run for amplitudesFromResiduum. | |
template<typename F > | |
std::shared_ptr< FockVector< F > > | createAmplitudes (std::vector< std::string > amplitudeNames, std::vector< std::vector< TensorIndex > > amplitudeLens, std::vector< std::string > amplitudeIndices) |
template<typename F > | |
void | storeAmplitudes (const std::shared_ptr< const FockVector< F > > &litudes, std::vector< std::string > names) |
Tensor< double > * | sliceCoupledCoulombIntegrals (const std::shared_ptr< const FockVector< double > > &litudes, int a, int b, int integralsSliceSize) |
Calculates and returns one slice Xxycd of the Coulomb integrals ![]() | |
Tensor< complex > * | sliceCoupledCoulombIntegrals (const std::shared_ptr< const FockVector< complex > > &litudes, int a, int b, int integralsSliceSize) |
Tensor< double > * | sliceAmplitudesFromCoupledCoulombFactors (const std::shared_ptr< const FockVector< double > > &litudes, int a, int b, int factorsSliceSize) |
Calculates and returns one slice Fabij of the residuum from the dressed Coulomb factors. The slice is computed from Rx and Ry and are restricted to the range {a, ..., factorsSliceSize+a-1} and {b, ..., factorsSliceSize+b-1}, respectively. The caller is responsible for deleting the dynamically allocated result tensor. | |
Tensor< complex > * | sliceAmplitudesFromCoupledCoulombFactors (const std::shared_ptr< const FockVector< complex > > &litudes, int a, int b, int factorsSliceSize) |
template<typename F > | |
void | sliceIntoResiduum (Tensor< F > &Rxyij, int a0, int b0, Tensor< F > &Rabij) |
Adds the given slice of the residuum tensor Rxyij to the entire residuum tensor Rabij at the respective index range. | |
std::string | getCapitalizedAbbreviation () |
The abbreviation of the algorithm in capital letters. | |
std::string | getDataName (const std::string &type, const std::string &data) |
Additional Inherited Members | |
![]() | |
std::string | note |
bool | fallible = false |
std::map< std::string, std::string > | arguments |
Implements the iteration routine for the Ccsd method. Calculates the amplitudes
CcsdEnergyFromCoulombIntegrals::CcsdEnergyFromCoulombIntegrals | ( | std::vector< Argument > const & | argumentList | ) |
|
virtual |
|
inlinevirtual |
Returns the abbreviation of the routine (CCSD).
Implements sisi4s::ClusterSinglesDoublesAlgorithm.
|
inlinevirtual |
Implements sisi4s::Algorithm.
|
protectedvirtual |
Computes and returns the residuum of the given amplitudes.
Implements sisi4s::ClusterSinglesDoublesAlgorithm.
|
protectedvirtual |
Implements the iterate method with the CCSD iteration. Iteration routine taken from So Hirata, et. al. Chem. Phys. Letters, 345, 475 (2001).
[in] | i | Iteration number |
Implements sisi4s::ClusterSinglesDoublesAlgorithm.
|
staticconstexpr |
|
staticconstexpr |
|
static |