MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
sc::MP2R12EnergyUtil_Diag_DifferentSpin Class Reference

Class MP2R12EnergyUtil provides some misc functions to operate on (blocked) ijxy and xyxy matrices. More...

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

Inheritance diagram for sc::MP2R12EnergyUtil_Diag_DifferentSpin:
sc::MP2R12EnergyUtil_Diag sc::RefCount

Public Member Functions

 MP2R12EnergyUtil_Diag_DifferentSpin (const RefSCDimension &oodim, const RefSCDimension &xydim, const RefSCDimension &f12dim, const unsigned int nocc_act)
 oodim is a dimension of ij (active occupied pairs) xydim is a dimension of xy (orbital products used to generate geminal space) f12dim is has rank nf12*nxy.
 
unsigned int nrowblks (const RefSCMatrix &A) const
 Number of oo blocks in row dimension of A.
 
unsigned int ncolblks (const RefSCMatrix &A) const
 Number of oo blocks in column dimension of A.
 
unsigned int nblks (const RefSymmSCMatrix &A) const
 Number of oo blocks in dimension of A.
 
void get (unsigned int ij, const RefSCMatrix &A, const RefSCVector &Aij) const
 gets ij block of A
 
void get (unsigned int ij, const RefSCMatrix &A, const RefSCMatrix &Aij) const
 gets ij block of A
 
void get (unsigned int ij, const RefSymmSCMatrix &A, const RefSymmSCMatrix &Aij) const
 gets ij block of A
 
void get (unsigned int ij, const RefDiagSCMatrix &A, const RefDiagSCMatrix &Aij) const
 gets ij block of A
 
void put (unsigned int ij, const RefSCMatrix &A, const RefSCVector &Aij) const
 puts ij block into A
 
void put (unsigned int ij, const RefSCMatrix &A, const RefSCMatrix &Aij) const
 puts ij block into A
 
void put (unsigned int ij, const RefSymmSCMatrix &A, const RefSymmSCMatrix &Aij) const
 puts ij block into A
 
void put (unsigned int ij, const RefDiagSCMatrix &A, const RefDiagSCMatrix &Aij) const
 puts ij block into A
 
void invert (RefSymmSCMatrix &A) const
 Inverts A in-place.
 
RefDiagSCMatrix eigenvalues (const RefSymmSCMatrix &A) const
 Computes eigenvalues of A.
 
void diagonalize (const RefSymmSCMatrix &A, RefDiagSCMatrix &evals, RefSCMatrix &evecs) const
 Computes eigenvalues and eigenvectors of A. evals and evecs don't have to be allocated.
 
void transform (const RefSymmSCMatrix &B, const RefDiagSCMatrix &A, const RefSCMatrix &U) const
 B = U * A * U.t()
 
void solve_linear_system (const RefSymmSCMatrix &A, RefSCMatrix &X, const RefSCMatrix &B) const
 Solves A*X = B.
 
void solve_linear_system (unsigned int ij, const RefSymmSCMatrix &A, RefSCMatrix &X, const RefSCMatrix &B) const
 
void times (const RefSymmSCMatrix &A, const RefSCMatrix &x, RefSCMatrix &y) const
 computes y = A x
 
void times (unsigned int ij, const RefSymmSCMatrix &A, const RefSCMatrix &x, RefSCMatrix &y) const
 computes y = A x
 
RefSCVector dot_product (const RefSCMatrix &A, const RefSCMatrix &B) const
 Computes "dot" product of A and B: tr[i] = sum_j A[j][i] B[j][i].
 
void print (const char *label, const RefSCMatrix &A, std::ostream &os=ExEnv::out0()) const
 Prints A.
 
void print (const char *label, const RefSymmSCMatrix &A, std::ostream &os=ExEnv::out0()) const
 Prints A.
 
void print (const char *label, const RefDiagSCMatrix &A, std::ostream &os=ExEnv::out0()) const
 Prints A.
 
- Public Member Functions inherited from sc::MP2R12EnergyUtil_Diag
 MP2R12EnergyUtil_Diag (const RefSCDimension &oodim, const RefSCDimension &xydim, const RefSCDimension &f12dim, const unsigned int nocc_act)
 
void check_dims (const RefSCMatrix &A) const
 Checks if matrix A has proper dimensions. Throw, if not.
 
void check_dims (const RefSymmSCMatrix &A) const
 Checks if matrix A has proper dimensions. Throw, if not.
 
- 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.
 
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
 Return 1 if the object is managed. Otherwise return 0.
 

Additional Inherited Members

- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 
- Protected Attributes inherited from sc::MP2R12EnergyUtil_Diag
unsigned int nocc_act_
 number of active occupied orbitals
 
RefSCDimension oodim_
 number of ij pairs
 
RefSCDimension xydim_
 number of xy pairs
 
RefSCDimension f12dim_
 number of geminals per pair times number of xy pairs
 
RefSCDimension gdim_
 number of geminals
 
unsigned int nf12_
 number of geminals
 

Detailed Description

Class MP2R12EnergyUtil provides some misc functions to operate on (blocked) ijxy and xyxy matrices.

If Diag is true, then each xy block is the same size as ij, and ijxy and xyxy blocks are "diagonal". f12-f12 matrix then has nf12 by nf12 blocks, each with diagonal structure.

Constructor & Destructor Documentation

◆ MP2R12EnergyUtil_Diag_DifferentSpin()

sc::MP2R12EnergyUtil_Diag_DifferentSpin::MP2R12EnergyUtil_Diag_DifferentSpin ( const RefSCDimension & oodim,
const RefSCDimension & xydim,
const RefSCDimension & f12dim,
const unsigned int nocc_act )

oodim is a dimension of ij (active occupied pairs) xydim is a dimension of xy (orbital products used to generate geminal space) f12dim is has rank nf12*nxy.

nocc_act is the number of active occupied orbitals.

Member Function Documentation

◆ diagonalize()

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::diagonalize ( const RefSymmSCMatrix & A,
RefDiagSCMatrix & evals,
RefSCMatrix & evecs ) const
virtual

Computes eigenvalues and eigenvectors of A. evals and evecs don't have to be allocated.

Implements sc::MP2R12EnergyUtil_Diag.

◆ dot_product()

RefSCVector sc::MP2R12EnergyUtil_Diag_DifferentSpin::dot_product ( const RefSCMatrix & A,
const RefSCMatrix & B ) const
virtual

Computes "dot" product of A and B: tr[i] = sum_j A[j][i] B[j][i].

Implements sc::MP2R12EnergyUtil_Diag.

◆ eigenvalues()

RefDiagSCMatrix sc::MP2R12EnergyUtil_Diag_DifferentSpin::eigenvalues ( const RefSymmSCMatrix & A) const
virtual

Computes eigenvalues of A.

Implements sc::MP2R12EnergyUtil_Diag.

◆ get() [1/4]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::get ( unsigned int ij,
const RefDiagSCMatrix & A,
const RefDiagSCMatrix & Aij ) const
virtual

gets ij block of A

Implements sc::MP2R12EnergyUtil_Diag.

◆ get() [2/4]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::get ( unsigned int ij,
const RefSCMatrix & A,
const RefSCMatrix & Aij ) const
virtual

gets ij block of A

Implements sc::MP2R12EnergyUtil_Diag.

◆ get() [3/4]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::get ( unsigned int ij,
const RefSCMatrix & A,
const RefSCVector & Aij ) const
virtual

gets ij block of A

Implements sc::MP2R12EnergyUtil_Diag.

◆ get() [4/4]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::get ( unsigned int ij,
const RefSymmSCMatrix & A,
const RefSymmSCMatrix & Aij ) const
virtual

gets ij block of A

Implements sc::MP2R12EnergyUtil_Diag.

◆ invert()

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::invert ( RefSymmSCMatrix & A) const
virtual

Inverts A in-place.

Implements sc::MP2R12EnergyUtil_Diag.

◆ print() [1/3]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::print ( const char * label,
const RefDiagSCMatrix & A,
std::ostream & os = ExEnv::out0() ) const
virtual

Prints A.

Implements sc::MP2R12EnergyUtil_Diag.

◆ print() [2/3]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::print ( const char * label,
const RefSCMatrix & A,
std::ostream & os = ExEnv::out0() ) const
virtual

Prints A.

Implements sc::MP2R12EnergyUtil_Diag.

◆ print() [3/3]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::print ( const char * label,
const RefSymmSCMatrix & A,
std::ostream & os = ExEnv::out0() ) const
virtual

Prints A.

Implements sc::MP2R12EnergyUtil_Diag.

◆ put() [1/4]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::put ( unsigned int ij,
const RefDiagSCMatrix & A,
const RefDiagSCMatrix & Aij ) const
virtual

puts ij block into A

Implements sc::MP2R12EnergyUtil_Diag.

◆ put() [2/4]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::put ( unsigned int ij,
const RefSCMatrix & A,
const RefSCMatrix & Aij ) const
virtual

puts ij block into A

Implements sc::MP2R12EnergyUtil_Diag.

◆ put() [3/4]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::put ( unsigned int ij,
const RefSCMatrix & A,
const RefSCVector & Aij ) const
virtual

puts ij block into A

Implements sc::MP2R12EnergyUtil_Diag.

◆ put() [4/4]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::put ( unsigned int ij,
const RefSymmSCMatrix & A,
const RefSymmSCMatrix & Aij ) const
virtual

puts ij block into A

Implements sc::MP2R12EnergyUtil_Diag.

◆ solve_linear_system() [1/2]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::solve_linear_system ( const RefSymmSCMatrix & A,
RefSCMatrix & X,
const RefSCMatrix & B ) const
virtual

Solves A*X = B.

Implements sc::MP2R12EnergyUtil_Diag.

◆ solve_linear_system() [2/2]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::solve_linear_system ( unsigned int ij,
const RefSymmSCMatrix & A,
RefSCMatrix & X,
const RefSCMatrix & B ) const
virtual

◆ times() [1/2]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::times ( const RefSymmSCMatrix & A,
const RefSCMatrix & x,
RefSCMatrix & y ) const
virtual

computes y = A x

Implements sc::MP2R12EnergyUtil_Diag.

◆ times() [2/2]

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::times ( unsigned int ij,
const RefSymmSCMatrix & A,
const RefSCMatrix & x,
RefSCMatrix & y ) const
virtual

computes y = A x

Implements sc::MP2R12EnergyUtil_Diag.

◆ transform()

void sc::MP2R12EnergyUtil_Diag_DifferentSpin::transform ( const RefSymmSCMatrix & B,
const RefDiagSCMatrix & A,
const RefSCMatrix & U ) const
virtual

B = U * A * U.t()

Implements sc::MP2R12EnergyUtil_Diag.


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

Generated at Wed Sep 25 2024 02:45:33 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.