MPQC  3.0.0-alpha
sc::R12Technology Class Reference

R12Technology describes technical features of the R12 approach. More...

#include <chemistry/qc/mbptr12/r12technology.h>

Inheritance diagram for sc::R12Technology:
sc::SavableState sc::DescribedClass sc::RefCount

Classes

class  CorrelationFactor
 CorrelationFactor is a set of one or more two-particle functions of the interparticle distance. More...
 
struct  CorrParamCompare
 Compares CorrelationParamaters corresponding to IntParam. More...
 
class  G12CorrelationFactor
 G12CorrelationFactor stands for Gaussian geminals correlation factor, usable with methods that require commutator integrals. More...
 
class  G12NCCorrelationFactor
 G12NCCorrelationFactor stands for Gaussian geminals correlation factor, usable with methods that do not require commutator integrals; this is more for temporary tests or quick implementation. More...
 
class  GeminalDescriptor
 
class  GeminalDescriptorFactory
 
class  NullCorrelationFactor
 NullCorrelationFactor stands for no correlation factor; only for test. More...
 
class  R12Ansatz
 R12Ansatz specifies the manner in which the R12 geminals are constructed. More...
 
class  R12CorrelationFactor
 R12CorrelationFactor stands for no correlation factor. More...
 

Public Types

enum  Projector { Projector_0 = 0, Projector_1 = 1, Projector_2 = 2, Projector_3 = 3 }
 Projector of R12 methods: 0: Q_{12} = 1 1: Q_{12} = (1 - P_1)(1 - P_2) 2: Q_{12} = (1 - V_1 V_2)(1 - O_1)(1 - O_2) 3: Q_{12} = 1 - P_1 P_2.
 
enum  StandardApproximation {
  StdApprox_Ap = 1, StdApprox_App = 2, StdApprox_B = 3, StdApprox_C = 4,
  StdApprox_Cp = 5
}
 
enum  ABSMethod { ABS_CABS = 2, ABS_CABSPlus = 3 }
 
enum  OrbitalProduct_GG { OrbProdGG_ij = 0, OrbProdGG_pq = 1 }
 geminal generating space
 
enum  OrbitalProduct_gg { OrbProdgg_ij = 0, OrbProdgg_pq = 1 }
 space of orbital products from which geminal substitutions are allowed
 
enum  PositiveDefiniteB { PositiveDefiniteB_no = 0, PositiveDefiniteB_yes = 1, PositiveDefiniteB_weak = 2 }
 
enum  GeminalAmplitudeAnsatz { GeminalAmplitudeAnsatz_fullopt = 0, GeminalAmplitudeAnsatz_fixed = 1, GeminalAmplitudeAnsatz_scaledfixed = 2 }
 
enum  H0_dk_approx_pauli { H0_dk_approx_pauli_true = 0, H0_dk_approx_pauli_fHf = 1, H0_dk_approx_pauli_fHf_Q = 2, H0_dk_approx_pauli_false = 3 }
 

Public Member Functions

 R12Technology (StateIn &)
 
 R12Technology (const Ref< KeyVal > &)
 The KeyVal constructor. More...
 
 R12Technology (const Ref< KeyVal > &, const Ref< GaussianBasisSet > &bs, const Ref< GaussianBasisSet > &vbs, const Ref< GaussianBasisSet > &abs)
 
void save_data_state (StateOut &)
 Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR initializes them. More...
 
const Ref< CorrelationFactor > & corrfactor () const
 
void corrfactor (const Ref< CorrelationFactor > &)
 this changes the correlation factor
 
unsigned int maxnabs () const
 
bool gbc () const
 
bool ebc () const
 
bool coupling () const
 
bool compute_1rdm () const
 
bool coupling_1rdm_f12b () const
 
ABSMethod abs_method () const
 
int abs_nlindep () const
 
double abs_lindep_tol () const
 
StandardApproximation stdapprox () const
 
const Ref< R12Ansatz > & ansatz () const
 
bool spinadapted () const
 
bool omit_P () const
 
H0_dk_approx_pauli H0_dk_approx () const
 
bool H0_dk_keep () const
 
bool safety_check () const
 
PositiveDefiniteB posdef_B () const
 
bool omit_B () const
 
void check_integral_factory (const Ref< Integral > &ints)
 
void print (std::ostream &o=ExEnv::out0()) const
 Print the object.
 
- Public Member Functions inherited from sc::SavableState
SavableStateoperator= (const SavableState &)
 
void save_state (StateOut &)
 Save the state of the object as specified by the StateOut object. More...
 
void save_object_state (StateOut &)
 This can be used for saving state when the exact type of the object is known for both the save and the restore. More...
 
virtual void save_vbase_state (StateOut &)
 Save the virtual bases for the object. More...
 
- Public Member Functions inherited from sc::DescribedClass
 DescribedClass (const DescribedClass &)
 
DescribedClassoperator= (const DescribedClass &)
 
ClassDescclass_desc () const MPQC__NOEXCEPT
 This returns the unique pointer to the ClassDesc corresponding to the given type_info object. More...
 
const char * class_name () const
 Return the name of the object's exact type.
 
int class_version () const
 Return the version of the class.
 
Ref< DescribedClassref ()
 Return this object wrapped up in a Ref smart pointer. More...
 
- Public Member Functions inherited from sc::RefCount
size_t identifier () const
 Return the unique identifier for this object that can be compared for different objects of different types. More...
 
int lock_ptr () const
 Lock this object.
 
int unlock_ptr () const
 Unlock this object.
 
void use_locks (bool inVal)
 start and stop using locks on this object
 
refcount_t nreference () const
 Return the reference count.
 
refcount_t reference ()
 Increment the reference count and return the new count.
 
refcount_t dereference ()
 Decrement the reference count and return the new count.
 
int managed () const
 
void unmanage ()
 Turn off the reference counting mechanism for this object. More...
 

Static Public Member Functions

static bool invalid (const Ref< GeminalDescriptor > &gdesc)
 
static bool R12 (const Ref< GeminalDescriptor > &gdesc)
 
static bool STG (const Ref< GeminalDescriptor > &gdesc)
 
static bool G12 (const Ref< GeminalDescriptor > &gdesc)
 
static double single_slater_exponent (const Ref< GeminalDescriptor > &gdesc)
 Returns a single Slater type geminal exponent. Throws if geminal is not of Slater type and if there is more than one Slater type function.
 
template<class CF >
static Ref< CF > direct_product (const Ref< CF > &A, const Ref< CF > &B)
 
static Ref< GaussianBasisSetmake_auto_cabs (const Ref< GaussianBasisSet > &bs)
 
static std::string default_cabs_name (const std::string &obs_name)
 tries to translate a library basis set label to the corresponding default value for the CABS More...
 
static double default_stg_exponent (const std::string &obs_name)
 tries to translate a library basis set label to the corresponding default value for the F12 exponent More...
 
- Static Public Member Functions inherited from sc::SavableState
static void save_state (SavableState *s, StateOut &)
 
static SavableStaterestore_state (StateIn &si)
 Restores objects saved with save_state. More...
 
static SavableStatekey_restore_state (StateIn &si, const char *keyword)
 Like restore_state, but keyword is used to override values while restoring.
 
static SavableStatedir_restore_state (StateIn &si, const char *objectname, const char *keyword=0)
 

Additional Inherited Members

- Protected Member Functions inherited from sc::SavableState
 SavableState (const SavableState &)
 
 SavableState (StateIn &)
 Each derived class StateIn CTOR handles the restore corresponding to calling save_object_state, save_vbase_state, and save_data_state listed above. More...
 
- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 

Detailed Description

R12Technology describes technical features of the R12 approach.

Constructor & Destructor Documentation

◆ R12Technology()

sc::R12Technology::R12Technology ( const Ref< KeyVal > &  )

The KeyVal constructor.

corr_factor

This string specifies which correlation factor to use. Allowed values are "r12", "g12", "stg-Xg" (where X is an integer greater than 0), and "none". The default is "stg-6g".

corr_param

This keyword specifies optional parameters of the correlation factor. corr_param can be a single floating-point value an array of floating-point values, or an array of arrays of 2-element arrays of floating-point values. Single value specifies the parameter of the single correlation function. The 1-d array form specifies a set of primitive correlation functions characterized by the corresponding parameters. The 3-d array form specifies a set of contracted correlation functions. For example, corr_param = 3.0 specifies a single correlation function with parameter 3.0. corr_param = [ 1.0 3.0 10.0 ] specifies 3 correlation functions with parameters 1.0, 3.0 and 10.0. corr_param = [ [[1.0 0.35][3.0 0.65]] [[10.0 1.0]] ] specifies 2 correlation functions, first composed of 2 primitive functions with parameters 1.0 and 3.0 combined linearly with coefficients 0.35 and 0.65, and second primitive function with parameter 10.0 .

This keyword has no meaning for some correlation factors, e.g., "r12" and "none", and is not used. There is no default.

stdapprox

This gives a string that must take on one of the values below. The default is C.

A'

Use second order Møller-Plesset perturbation theory with linear R12 terms in standard approximation A' (MP2-R12/A'). This will cause MP2-R12/A energies to be computed also. Only energies can be computed with the MP2-R12/A' method.

A''

Use second order Møller-Plesset perturbation theory with linear R12 terms in standard approximation A'' (MP2-R12/A''). Only energies can be computed with the MP2-R12/A'' method.

B

Use second order Møller-Plesset perturbation theory with linear R12 terms in standard approximation B. This will cause A and A' energies to be computed also. Only energies can be computed with the MP2-R12/B method.

C

Use second order Møller-Plesset perturbation theory with linear R12 terms in standard approximation C. Only energies can be computed with the MP2-R12/C method.

C

Use second order Møller-Plesset perturbation theory with linear R12 terms in standard approximation C' (simplified variant of approximation C, in which only integrals with 1 ABS index are used. Refer to: Valeev, to be published). Only energies can be computed with the MP2-R12/C' method.

ansatz

This object specifies the ansatz (see R12Ansatz).

gbc

This boolean specifies whether Generalized Brillouin Condition (GBC) is assumed to hold. The default is "true". This keyword is only valid if stdapprox=A'. The effect of setting this keyword to false is very small – hence it is not recommended to use this keyword.

ebc

This boolean specifies whether Extended Brillouin Condition (EBC) is assumed to hold. The default is "true". This keyword is only valid if stdapprox=A'. The effect of setting this keyword to false is small – hence it is not recommended to use this keyword.

coupling

This boolean specifies whether the doubles-geminal block of the Fock operator is included in zeroth-order Hamiltonian. The default is "false". This keyword is only valid for MP2-R12 method. The effect of setting this keyword to true is small – hence it is not recommended to use this keyword.

maxnabs

This integer specifies the maximum number of ABS indices per integral. Valid values are 1 or 2. The default is 2 except for R12/A'' method.

abs_method

This string specifies the method by which the RI is applied to the many-electron integrals of the R12 theory. The valid choices are "CABS+" and "CABS" (see Valeev, Chem. Phys. Lett. 395, 190 (2004)) The default is "CABS+".

abs_lindep_tol

The tolerance used to detect linearly dependent basis functions in the RI basis (only makes sense if a separate ABS basis is used). The precise meaning depends on the orthogonalization method used by the Wavefunction object that uses this object. The default value is 1e-8.

abs_nlindep

The number of linearly dependent basis functions to be eliminated from the RI basis. This keyword is useful to keep the number of linearly dependent basis functions constant in a series of calculations, e.g. when performing a scan of the potential energy surface for the purpose of computing precise anharmonic force fields. This keyword is only valid when the Wavefunction object uses symmetric or canonical orthogonalization. The default is to use keyword abs_lindep_tol instead of this keyword.

safety_check

Set to true if you want to perform safety checks, e.g., for completeness of the RI basis, linear independence of the geminal basis, positive definiteness of B matrix, etc. The default is true (to perform the checks).

posdef_B

This keyword specifies whether and how to enforce the positive definiteness of matrix B. Valid choices are no, yes (enforce positive definite matrix B and its pair-dependent counterpart, tilde-B), weak (same as yes, except the positive-definiteness of tilde-B is not enforced). If this keyword is set to no then sometimes nonphysical results can be obtained, e.g., positive pair energy corrections can result from using too many correlation functions. posdef_B = yes offers the best protection against nonphysical results. The default is weak, which is cheaper yes and is definitely safer than no.

gtg_fit_weight

This keyword determines how the correlation factor is fit to Gaussians (hence only valid when corr_factor is set to stg-ng) The choices are tewklopper, which is appropriate for energy computations, and cusp, which is appropriate for accurate cusp region description. The default is tewklopper. Choosing cusp is probably only appropriate when many (9 or more) Gaussians are used for the fit.

H0_dk_approx_pauli
This string keyword determines how H0 DK Hamiltonian is approximated by Pauli Hamiltonian. The allowed values are
true/yes

Use Pauli everywhere. Valid in approximations A'' and C. In approximation C this choice involves the appearance of M intermediate (double commutator of mass-velocity term with 2 correlation factors) and use of Pauli Hamiltonian everywhere in P intermediate. In approximations A'' this involves the use of Pauli Hamiltonian in the double commutator, in single commutator, in Q intermediate.

fHf

Use Pauli in the "diagonal" term, i.e. in f12 H f12 which involves the use of Pauli Hamiltonian in the double commutator and in Q intermediate. Only valid in approximation C.

fHf_Q

Same as fHf but use the full DK Hamiltonian in Q intermediate. This is equivalent to assuming that terms of higher order than Pauli commute with the correlation factor, hence they should be kept in Q. Only valid in approximation C.

false/no

Use full DKH operator (this is the default). Valid in approximations A'' and C. In approximation C this means treat relativistic terms like exchange, this affects the Q intermediate and fKf part of P intermediate. In approximation A'' this means that all relativistic terms are dropped from H0 -- this is chosen to be consistent with the nonrelativistic A'' method where exchange operator is dropped completely because its commutators cannot be evaluated analytically.

H0_dk_keep This boolean keyword specifies whether to keep relativistic terms or drop them. This is only considered in approximation A'' if H0_dk_approx_pauli=false. The default is false. Setting to true will keep the relativistic terms in Q intermediate of the A'' approximation.

Member Function Documentation

◆ default_cabs_name()

static std::string sc::R12Technology::default_cabs_name ( const std::string &  obs_name)
static

tries to translate a library basis set label to the corresponding default value for the CABS

Parameters
obs_nameorbital basis set name; to be useful must be a canonical library name
Returns
canonical library name of the default CABS; if not able to suggest the default basis, returns an empty string

◆ default_stg_exponent()

static double sc::R12Technology::default_stg_exponent ( const std::string &  obs_name)
static

tries to translate a library basis set label to the corresponding default value for the F12 exponent

Parameters
obs_nameorbital basis set name; to be useful must be a canonical library name
Returns
the recommended value for the F12 exponent; 0.0 if not available

◆ save_data_state()

void sc::R12Technology::save_data_state ( StateOut )
virtual

Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR initializes them.

This must be implemented by the derived class if the class has data.

Reimplemented from sc::SavableState.


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

Generated at Sun Jan 26 2020 23:24:10 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.