sc::TwoBodyInt(3)

๐Ÿ“ฆ
version 2.3.1 ยท 5 versions
, in ubuntu jammy

โœจ sc::TwoBodyInt โœจ

okay so real talk, this is the sc::TwoBodyInt page from the MPQC manual (yep, section 3, the library-call girlies ๐Ÿ’…). Buckle up bestie, we're going abstract-base-class mode ๐Ÿฆ‹


๐Ÿ’– NAME ๐Ÿ’–

sc::TwoBodyInt โ€” the abstract base type for all the classes that compute integrals involving two electrons. it's giving "template of a template", main character energy but make it pure-virtual ๐Ÿ‘‘


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

#include <tbint.h>
  • Inherits sc::RefCount.
  • Inherited by sc::TwoBodyIntCCA, sc::TwoBodyIntCints, and sc::TwoBodyIntV3.

๐ŸŒธ Public Types ๐ŸŒธ

  • enum tbint_type { eri =0, r12 =1, r12t1 =2, r12t2 =3 } โ€” these are the types of two-body integrals that TwoBodyInt understands, and the lore is: eri stands for electron repulsion integral, r12 stands for integrals of the r12 operator, and r12t1 and r12t2 are integrals of the [r12,T1] and [r12,T2] operators. literally the whole cast of characters ๐Ÿซถ

๐Ÿฆ‹ Public Member Functions ๐Ÿฆ‹

  • int nbasis () const โ€” Return the number of basis functions on center one.
  • int nbasis1 () const โ€” Return the number of basis functions on center one. (yes bestie, that's what it says, same words as nbasis() ๐Ÿ™ˆ)
  • int nbasis2 () const โ€” Return the number of basis functions on center two.
  • int nbasis3 () const โ€” Return the number of basis functions on center three.
  • int nbasis4 () const โ€” Return the number of basis functions on center four.
  • int nshell () const โ€” Return the number of shells on center one.
  • int nshell1 () const โ€” Return the number of shells on center one.
  • int nshell2 () const โ€” Return the number of shells on center two.
  • int nshell3 () const โ€” Return the number of shells on center three.
  • int nshell4 () const โ€” Return the number of shells on center four.
  • Ref< GaussianBasisSet > basis () โ€” Return the basis set on center one.
  • Ref< GaussianBasisSet > basis1 () โ€” Return the basis set on center one.
  • Ref< GaussianBasisSet > basis2 () โ€” Return the basis set on center two.
  • Ref< GaussianBasisSet > basis3 () โ€” Return the basis set on center three.
  • Ref< GaussianBasisSet > basis4 () โ€” Return the basis set on center four.
  • virtual const double * buffer (tbint_type type=eri) const โ€” the computed shell integrals get put in the buffer that this member returns. iconic behavior honestly โœจ
  • virtual void compute_shell (int, int, int, int)=0 โ€” you hand it four shell indices, it computes the integrals and drops them in the buffer. that's the whole vibe.
  • virtual int log2_shell_bound (int=-1, int=-1, int=-1, int=-1)=0 โ€” Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_shell.
  • virtual int redundant () const โ€” if redundant is true, then keep redundant integrals in the buffer. no notes ๐Ÿ”ฅ
  • virtual void set_redundant (int i) โ€” See redundant(). (the world's shortest cross-reference, we love a low-effort icon ๐Ÿ’€)
  • virtual void set_integral_storage (size_t storage) โ€” This storage is used to cache computed integrals.
  • Integral * integral () const โ€” Return the integral factory that was used to create this object.

๐Ÿ’œ Static Public Attributes ๐Ÿ’œ

  • static const int num_tbint_types = 4 โ€” the total number of such types. four. that's it. that's the number ๐Ÿ“

๐ŸŒˆ Protected Member Functions ๐ŸŒˆ

  • TwoBodyInt (Integral *integral, const Ref< GaussianBasisSet > &bs1, const Ref< GaussianBasisSet > &bs2, const Ref< GaussianBasisSet > &bs3, const Ref< GaussianBasisSet > &bs4) โ€” the constructor, protected, so it's for the subclasses only, not for random people on the street ๐Ÿงš

โญ Protected Attributes โญ

  • Integral * integral_
  • Ref< GaussianBasisSet > bs1_
  • Ref< GaussianBasisSet > bs2_
  • Ref< GaussianBasisSet > bs3_
  • Ref< GaussianBasisSet > bs4_
  • double * buffer_
  • int redundant_

๐Ÿ‘‘ Detailed Description ๐Ÿ‘‘

This is an abstract base type for classes that compute integrals involving two electrons. abstract ๐Ÿ”ฎ like it's not doing the math itself, it's the concept of the math, and honestly? respect.


๐Ÿ’… Member Function Documentation ๐Ÿ’…

virtual const double* sc::TwoBodyInt::buffer (tbint_type type = eri) const

[virtual]

The computed shell integrals will be put in the buffer returned by this member. Some TwoBodyInt specializations have more than one buffer, and the type argument selects which buffer you get back. and listen: if the requested type is not supported, then 0 is returned. no buffer, no drama, just a zero ๐Ÿ˜ญ

  • Reimplemented in sc::TwoBodyIntCints.
  • Referenced by sc::LocalGBuild< T >::run().

virtual void sc::TwoBodyInt::compute_shell (int, int, int, int)

[pure virtual]

Given four shell indices, integrals will be computed and placed in the buffer. the mapping is: the first two indices correspond to electron 1, and the second two indices correspond to electron 2. two electrons, two and two, the symmetry ate ๐Ÿซถ

  • Implemented in sc::TwoBodyIntCCA, sc::TwoBodyIntCints, and sc::TwoBodyIntV3.
  • Referenced by sc::LocalGBuild< T >::run().

virtual int sc::TwoBodyInt::log2_shell_bound (int = -1, int = -1, int = -1, int = -1)

[pure virtual]

Return log base 2 of the maximum magnitude of any integral in a shell block obtained from compute_shell. and here's the trick: an index of -1 for any argument indicates any shell. so -1 is the "idc, surprise me" value ๐Ÿ’€

  • Implemented in sc::TwoBodyIntCCA, sc::TwoBodyIntCints, and sc::TwoBodyIntV3.
  • Referenced by sc::LocalGBuild< T >::run().

virtual int sc::TwoBodyInt::redundant () const

[inline], [virtual]

If redundant is true, then keep redundant integrals in the buffer. The default is true. so yeah, redundant-by-default, that's just how she is ๐Ÿ’–

  • Reimplemented in sc::TwoBodyIntCCA.

๐ŸŽ€ Author ๐ŸŽ€

Generated automatically by Doxygen for MPQC from the source code. (not a human, a robot, and it still ate ๐Ÿค–โœจ)


heads up bestie: this whole page is auto-generated docs. so if a description looks like it got copy-pasted from the line above it, that's because it did, and we are NOT fixing it, we are respecting the source ๐Ÿซก

and that's the page!! ๐Ÿ’œ made with MPQC Version 2.3.1, dated Sun Oct 4 2020 โ€” yeah she's a little vintage but she's still slaying, mwah ๐Ÿ’‹๐ŸŽ€

๐Ÿ“ฆ where this page comes from