.TH "sc::Integral" 3 "Sun Oct 4 2020" "Version 2.3.1" "MPQC" \" -*- nroff -*- .ad l .nh .SH NAME sc::Integral \- The \fBIntegral\fP abstract class acts as a factory to provide objects that compute one and two electron integrals\&. .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits \fBsc::SavableState\fP\&. .PP Inherited by \fBsc::IntegralCCA\fP, \fBsc::IntegralCints\fP, and \fBsc::IntegralV3\fP\&. .SS "Public Member Functions" .in +1c .ti -1c .RI "\fBIntegral\fP (\fBStateIn\fP &)" .br .RI "Restore the \fBIntegral\fP object from the given \fBStateIn\fP object\&. " .ti -1c .RI "\fBIntegral\fP (const \fBRef\fP< \fBKeyVal\fP > &)" .br .RI "Construct the \fBIntegral\fP object from the given \fBKeyVal\fP object\&. " .ti -1c .RI "void \fBsave_data_state\fP (\fBStateOut\fP &)" .br .RI "Save the base classes (with save_data_state) and the members in the same order that the \fBStateIn\fP CTOR initializes them\&. " .ti -1c .RI "virtual \fBIntegral\fP * \fBclone\fP ()=0" .br .RI "Clones the given \fBIntegral\fP factory\&. The new factory may need to have set_basis and set_storage to be called on it\&. " .ti -1c .RI "virtual int \fBequiv\fP (const \fBRef\fP< \fBIntegral\fP > &)" .br .RI "Returns nonzero if this and the given \fBIntegral\fP object have the same integral ordering, normalization conventions, etc\&. " .ti -1c .RI "void \fBset_storage\fP (size_t i)" .br .RI "Sets the total amount of storage, in bytes, that is available\&. " .ti -1c .RI "size_t \fBstorage_used\fP ()" .br .RI "Returns how much storage has been used\&. " .ti -1c .RI "size_t \fBstorage_unused\fP ()" .br .RI "Returns how much storage was not needed\&. " .ti -1c .RI "virtual size_t \fBstorage_required_eri\fP (const \fBRef\fP< \fBGaussianBasisSet\fP > &b1, const \fBRef\fP< \fBGaussianBasisSet\fP > &b2=0, const \fBRef\fP< \fBGaussianBasisSet\fP > &b3=0, const \fBRef\fP< \fBGaussianBasisSet\fP > &b4=0)" .br .RI "Returns how much storage will be needed to initialize a two-body integrals evaluator for electron repulsion integrals\&. " .ti -1c .RI "virtual size_t \fBstorage_required_grt\fP (const \fBRef\fP< \fBGaussianBasisSet\fP > &b1, const \fBRef\fP< \fBGaussianBasisSet\fP > &b2=0, const \fBRef\fP< \fBGaussianBasisSet\fP > &b3=0, const \fBRef\fP< \fBGaussianBasisSet\fP > &b4=0)" .br .RI "Returns how much storage will be needed to initialize a two-body integrals evaluator for linear R12 integrals\&. " .ti -1c .RI "virtual size_t \fBstorage_required_eri_deriv\fP (const \fBRef\fP< \fBGaussianBasisSet\fP > &b1, const \fBRef\fP< \fBGaussianBasisSet\fP > &b2=0, const \fBRef\fP< \fBGaussianBasisSet\fP > &b3=0, const \fBRef\fP< \fBGaussianBasisSet\fP > &b4=0)" .br .RI "Returns how much storage will be needed to initialize a two-body integrals evaluator for derivative electron repulsion integrals\&. " .ti -1c .RI "void \fBadjust_storage\fP (ptrdiff_t s)" .br .RI "The specific integral classes use this to tell \fBIntegral\fP how much memory they are using/freeing\&. " .ti -1c .RI "\fBRef\fP< \fBPetiteList\fP > \fBpetite_list\fP ()" .br .RI "Return the \fBPetiteList\fP object\&. " .ti -1c .RI "\fBRef\fP< \fBPetiteList\fP > \fBpetite_list\fP (const \fBRef\fP< \fBGaussianBasisSet\fP > &)" .br .RI "Return the \fBPetiteList\fP object for the given basis set\&. " .ti -1c .RI "\fBShellRotation\fP \fBshell_rotation\fP (int am, \fBSymmetryOperation\fP &, int pure=0)" .br .RI "Return the \fBShellRotation\fP object for a shell of the given angular momentum\&. " .ti -1c .RI "virtual void \fBset_basis\fP (const \fBRef\fP< \fBGaussianBasisSet\fP > &b1, const \fBRef\fP< \fBGaussianBasisSet\fP > &b2=0, const \fBRef\fP< \fBGaussianBasisSet\fP > &b3=0, const \fBRef\fP< \fBGaussianBasisSet\fP > &b4=0)" .br .RI "Set the basis set for each center\&. " .ti -1c .RI "virtual \fBCartesianIter\fP * \fBnew_cartesian_iter\fP (int)=0" .br .RI "Return a \fBCartesianIter\fP object\&. " .ti -1c .RI "virtual \fBRedundantCartesianIter\fP * \fBnew_redundant_cartesian_iter\fP (int)=0" .br .RI "Return a \fBRedundantCartesianIter\fP object\&. " .ti -1c .RI "virtual \fBRedundantCartesianSubIter\fP * \fBnew_redundant_cartesian_sub_iter\fP (int)=0" .br .RI "Return a \fBRedundantCartesianSubIter\fP object\&. " .ti -1c .RI "virtual \fBSphericalTransformIter\fP * \fBnew_spherical_transform_iter\fP (int l, int inv=0, int subl=\-1)=0" .br .RI "Return a \fBSphericalTransformIter\fP object\&. " .ti -1c .RI "virtual const \fBSphericalTransform\fP * \fBspherical_transform\fP (int l, int inv=0, int subl=\-1)=0" .br .RI "Return a \fBSphericalTransform\fP object\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyInt\fP > \fBoverlap\fP ()=0" .br .RI "Return a \fBOneBodyInt\fP that computes the overlap\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyInt\fP > \fBkinetic\fP ()=0" .br .RI "Return a \fBOneBodyInt\fP that computes the kinetic energy\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyInt\fP > \fBpoint_charge\fP (const \fBRef\fP< \fBPointChargeData\fP > &)=0" .br .RI "Return a \fBOneBodyInt\fP that computes the integrals for interactions with point charges\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyOneCenterInt\fP > \fBpoint_charge1\fP (const \fBRef\fP< \fBPointChargeData\fP > &)" .br .RI "Return a \fBOneBodyInt\fP that computes the integrals for interactions with point charges\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyInt\fP > \fBnuclear\fP ()=0" .br .RI "Return a \fBOneBodyInt\fP that computes the nuclear repulsion integrals\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyInt\fP > \fBhcore\fP ()=0" .br .RI "Return a \fBOneBodyInt\fP that computes the core Hamiltonian integrals\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyInt\fP > \fBefield_dot_vector\fP (const \fBRef\fP< \fBEfieldDotVectorData\fP > &)=0" .br .RI "Return a \fBOneBodyInt\fP that computes the electric field integrals dotted with a given vector\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyInt\fP > \fBdipole\fP (const \fBRef\fP< \fBDipoleData\fP > &)=0" .br .RI "Return a \fBOneBodyInt\fP that computes electric dipole moment integrals\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyInt\fP > \fBquadrupole\fP (const \fBRef\fP< \fBDipoleData\fP > &)=0" .br .RI "Return a \fBOneBodyInt\fP that computes electric quadrupole moment integrals\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyDerivInt\fP > \fBoverlap_deriv\fP ()=0" .br .RI "Return a \fBOneBodyDerivInt\fP that computes overlap derivatives\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyDerivInt\fP > \fBkinetic_deriv\fP ()=0" .br .RI "Return a \fBOneBodyDerivInt\fP that computes kinetic energy derivatives\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyDerivInt\fP > \fBnuclear_deriv\fP ()=0" .br .RI "Return a \fBOneBodyDerivInt\fP that computes nuclear repulsion derivatives\&. " .ti -1c .RI "virtual \fBRef\fP< \fBOneBodyDerivInt\fP > \fBhcore_deriv\fP ()=0" .br .RI "Return a \fBOneBodyDerivInt\fP that computes core Hamiltonian derivatives\&. " .ti -1c .RI "virtual \fBRef\fP< \fBTwoBodyThreeCenterInt\fP > \fBelectron_repulsion3\fP ()" .br .RI "Return a \fBTwoBodyThreeCenterInt\fP that computes electron repulsion integrals\&. " .ti -1c .RI "virtual \fBRef\fP< \fBTwoBodyThreeCenterDerivInt\fP > \fBelectron_repulsion3_deriv\fP ()" .br .RI "Return a \fBTwoBodyThreeCenterInt\fP that computes electron repulsion integrals\&. " .ti -1c .RI "virtual \fBRef\fP< \fBTwoBodyTwoCenterInt\fP > \fBelectron_repulsion2\fP ()" .br .RI "Return a \fBTwoBodyTwoCenterInt\fP that computes electron repulsion integrals\&. " .ti -1c .RI "virtual \fBRef\fP< \fBTwoBodyTwoCenterDerivInt\fP > \fBelectron_repulsion2_deriv\fP ()" .br .RI "Return a \fBTwoBodyTwoCenterInt\fP that computes electron repulsion integrals\&. " .ti -1c .RI "virtual \fBRef\fP< \fBTwoBodyInt\fP > \fBelectron_repulsion\fP ()=0" .br .RI "Return a \fBTwoBodyInt\fP that computes electron repulsion integrals\&. " .ti -1c .RI "virtual \fBRef\fP< \fBTwoBodyDerivInt\fP > \fBelectron_repulsion_deriv\fP ()=0" .br .RI "Return a \fBTwoBodyDerivInt\fP that computes electron repulsion derivatives\&. " .ti -1c .RI "virtual \fBRef\fP< \fBTwoBodyInt\fP > \fBgrt\fP ()" .br .RI "Return a \fBTwoBodyInt\fP that computes two-electron integrals specific to linear R12 methods\&. " .ti -1c .RI "\fBRef\fP< \fBMessageGrp\fP > \fBmessagegrp\fP ()" .br .RI "Return the \fBMessageGrp\fP used by the integrals objects\&. " .in -1c .SS "Static Public Member Functions" .in +1c .ti -1c .RI "static \fBIntegral\fP * \fBinitial_integral\fP (int &argc, char **argv)" .br .RI "Create an integral factory\&. " .ti -1c .RI "static void \fBset_default_integral\fP (const \fBRef\fP< \fBIntegral\fP > &)" .br .RI "Specifies a new default \fBIntegral\fP factory\&. " .ti -1c .RI "static \fBIntegral\fP * \fBget_default_integral\fP ()" .br .RI "Returns the default \fBIntegral\fP factory\&. " .in -1c .SS "Protected Member Functions" .in +1c .ti -1c .RI "\fBIntegral\fP (const \fBRef\fP< \fBGaussianBasisSet\fP > &b1, const \fBRef\fP< \fBGaussianBasisSet\fP > &b2, const \fBRef\fP< \fBGaussianBasisSet\fP > &b3, const \fBRef\fP< \fBGaussianBasisSet\fP > &b4)" .br .RI "Initialize the \fBIntegral\fP object given a \fBGaussianBasisSet\fP for each center\&. " .in -1c .SS "Protected Attributes" .in +1c .ti -1c .RI "\fBRef\fP< \fBGaussianBasisSet\fP > \fBbs1_\fP" .br .ti -1c .RI "\fBRef\fP< \fBGaussianBasisSet\fP > \fBbs2_\fP" .br .ti -1c .RI "\fBRef\fP< \fBGaussianBasisSet\fP > \fBbs3_\fP" .br .ti -1c .RI "\fBRef\fP< \fBGaussianBasisSet\fP > \fBbs4_\fP" .br .ti -1c .RI "size_t \fBstorage_\fP" .br .ti -1c .RI "size_t \fBstorage_used_\fP" .br .ti -1c .RI "\fBRef\fP< \fBMessageGrp\fP > \fBgrp_\fP" .br .in -1c .SH "Detailed Description" .PP The \fBIntegral\fP abstract class acts as a factory to provide objects that compute one and two electron integrals\&. .br .SH "Member Function Documentation" .PP .SS "virtual \fBRef\fP<\fBOneBodyInt\fP> sc::Integral::dipole (const \fBRef\fP< \fBDipoleData\fP > &)\fC [pure virtual]\fP" .PP Return a \fBOneBodyInt\fP that computes electric dipole moment integrals\&. The canonical order of integrals in a set is x, y, z\&. .PP Implemented in \fBsc::IntegralV3\fP, \fBsc::IntegralCCA\fP, and \fBsc::IntegralCints\fP\&. .SS "virtual \fBRef\fP<\fBTwoBodyTwoCenterInt\fP> sc::Integral::electron_repulsion2 ()\fC [virtual]\fP" .PP Return a \fBTwoBodyTwoCenterInt\fP that computes electron repulsion integrals\&. If this is not re-implemented it will throw\&. .PP Reimplemented in \fBsc::IntegralV3\fP\&. .SS "virtual \fBRef\fP<\fBTwoBodyTwoCenterDerivInt\fP> sc::Integral::electron_repulsion2_deriv ()\fC [virtual]\fP" .PP Return a \fBTwoBodyTwoCenterInt\fP that computes electron repulsion integrals\&. If this is not re-implemented it will throw\&. .SS "virtual \fBRef\fP<\fBTwoBodyThreeCenterInt\fP> sc::Integral::electron_repulsion3 ()\fC [virtual]\fP" .PP Return a \fBTwoBodyThreeCenterInt\fP that computes electron repulsion integrals\&. If this is not re-implemented it will throw\&. .PP Reimplemented in \fBsc::IntegralV3\fP\&. .SS "virtual \fBRef\fP<\fBTwoBodyThreeCenterDerivInt\fP> sc::Integral::electron_repulsion3_deriv ()\fC [virtual]\fP" .PP Return a \fBTwoBodyThreeCenterInt\fP that computes electron repulsion integrals\&. If this is not re-implemented it will throw\&. .SS "virtual int sc::Integral::equiv (const \fBRef\fP< \fBIntegral\fP > &)\fC [virtual]\fP" .PP Returns nonzero if this and the given \fBIntegral\fP object have the same integral ordering, normalization conventions, etc\&. .br .SS "virtual \fBRef\fP<\fBTwoBodyInt\fP> sc::Integral::grt ()\fC [virtual]\fP" .PP Return a \fBTwoBodyInt\fP that computes two-electron integrals specific to linear R12 methods\&. According to the convention in the literature, 'g' stands for electron repulsion integral, 'r' for the integral of r12 operator, and 't' for the commutator integrals\&. Implementation for this kind of \fBTwoBodyInt\fP is optional\&. .PP Reimplemented in \fBsc::IntegralCints\fP\&. .SS "static \fBIntegral\fP* sc::Integral::initial_integral (int & argc, char ** argv)\fC [static]\fP" .PP Create an integral factory\&. This routine looks for a -integral argument, then the environmental variable INTEGRAL\&. The argument to -integral should be either string for a \fBParsedKeyVal\fP constructor or a classname\&. This factory is not guaranteed to have its storage and basis sets set up properly, hence set_basis and set_storage need to be called on it\&. .SS "virtual \fBCartesianIter\fP* sc::Integral::new_cartesian_iter (int)\fC [pure virtual]\fP" .PP Return a \fBCartesianIter\fP object\&. The caller is responsible for freeing the object\&. .PP Implemented in \fBsc::IntegralV3\fP, \fBsc::IntegralCCA\fP, and \fBsc::IntegralCints\fP\&. .SS "virtual \fBRedundantCartesianIter\fP* sc::Integral::new_redundant_cartesian_iter (int)\fC [pure virtual]\fP" .PP Return a \fBRedundantCartesianIter\fP object\&. The caller is responsible for freeing the object\&. .PP Implemented in \fBsc::IntegralV3\fP, \fBsc::IntegralCCA\fP, and \fBsc::IntegralCints\fP\&. .SS "virtual \fBRedundantCartesianSubIter\fP* sc::Integral::new_redundant_cartesian_sub_iter (int)\fC [pure virtual]\fP" .PP Return a \fBRedundantCartesianSubIter\fP object\&. The caller is responsible for freeing the object\&. .PP Implemented in \fBsc::IntegralV3\fP, \fBsc::IntegralCCA\fP, and \fBsc::IntegralCints\fP\&. .SS "virtual \fBSphericalTransformIter\fP* sc::Integral::new_spherical_transform_iter (int l, int inv = \fC0\fP, int subl = \fC\-1\fP)\fC [pure virtual]\fP" .PP Return a \fBSphericalTransformIter\fP object\&. The caller is responsible for freeing the object\&. .PP Implemented in \fBsc::IntegralV3\fP, \fBsc::IntegralCCA\fP, and \fBsc::IntegralCints\fP\&. .SS "virtual \fBRef\fP<\fBOneBodyInt\fP> sc::Integral::nuclear ()\fC [pure virtual]\fP" .PP Return a \fBOneBodyInt\fP that computes the nuclear repulsion integrals\&. Charges from the atoms on center one are used\&. If center two is not identical to center one, then the charges on center two are included as well\&. .br .PP Implemented in \fBsc::IntegralV3\fP, \fBsc::IntegralCCA\fP, and \fBsc::IntegralCints\fP\&. .SS "virtual \fBRef\fP<\fBOneBodyInt\fP> sc::Integral::quadrupole (const \fBRef\fP< \fBDipoleData\fP > &)\fC [pure virtual]\fP" .PP Return a \fBOneBodyInt\fP that computes electric quadrupole moment integrals\&. The canonical order of integrals in a set is x^2, xy, xz, y^2, yz, z^2\&. .PP Implemented in \fBsc::IntegralV3\fP, \fBsc::IntegralCCA\fP, and \fBsc::IntegralCints\fP\&. .SS "void sc::Integral::save_data_state (\fBStateOut\fP &)\fC [virtual]\fP" .PP Save the base classes (with save_data_state) and the members in the same order that the \fBStateIn\fP CTOR initializes them\&. This must be implemented by the derived class if the class has data\&. .PP Reimplemented from \fBsc::SavableState\fP\&. .PP Reimplemented in \fBsc::IntegralV3\fP, \fBsc::IntegralCCA\fP, and \fBsc::IntegralCints\fP\&. .SS "\fBShellRotation\fP sc::Integral::shell_rotation (int am, \fBSymmetryOperation\fP &, int pure = \fC0\fP)" .PP Return the \fBShellRotation\fP object for a shell of the given angular momentum\&. Pass nonzero to pure to do solid harmonics\&. .SS "virtual const \fBSphericalTransform\fP* sc::Integral::spherical_transform (int l, int inv = \fC0\fP, int subl = \fC\-1\fP)\fC [pure virtual]\fP" .PP Return a \fBSphericalTransform\fP object\&. The pointer is only valid while this \fBIntegral\fP object is valid\&. .PP Implemented in \fBsc::IntegralV3\fP, \fBsc::IntegralCCA\fP, and \fBsc::IntegralCints\fP\&. .SH "Author" .PP Generated automatically by Doxygen for MPQC from the source code\&.