![]() |
![]()
| ![]() |
![]()
NAMEsc::R12IntsAcc - R12IntsAcc accumulates transformed (MO) integrals stored as (ijxy) where i, j, x, and, y lie in spaces I, J, X, and Y, respectively. SYNOPSIS#include <r12ia.h> Inherits sc::SavableState. Inherited by sc::R12IntsAcc_MPIIOFile, sc::R12IntsAcc_MemoryGrp, and sc::R12IntsAcc_Node0File. Public Typesenum tbint_type { eri =0, r12 =1,
r12t1 =2, r12t2 =3 }
Public Member FunctionsR12IntsAcc (int num_te_types, int ni, int
nj, int nx, int ny)
Public Member Functions inherited from sc::SavableState
Public Member Functions inherited from sc::DescribedClass
Public Member Functions inherited from sc::RefCount
Public Member Functions inherited from sc::Identity
Static Public Attributesstatic const int max_num_te_types_ = 4
Protected Member Functionsvirtual int ntasks () const =0
Protected Member Functions inherited from sc::SavableState
Protected Member Functions inherited from sc::RefCount
Protected Attributesint ni_
Additional Inherited MembersStatic Public Member Functions inherited from
sc::SavableState
Detailed DescriptionR12IntsAcc accumulates transformed (MO) integrals stored as (ijxy) where i, j, x, and, y lie in spaces I, J, X, and Y, respectively. ijxy is only the storage format, the actual type may be (ix|jy), (ij|xy), etc. Transformed integrals are usually computed using a parallel MO integrals transformation procedure. In general, such transformations will require multiple passes through AO integrals. Each pass produces a batch of transformed integrals. For example, a batch in direct parallel MP2 energy algorithm is a set of integrals {(ix|jy)} in which i indices are in a finite subrange of O and x, j, and y take any of their allowed values. For example, if batch I contains all integrals (ix|jy) with i greater than or equal m but less than n, then batch I+1 contains integrals (ix|jy) with i greater than n. Integrals in batch 0 have indices i greater than or equal to 0. After each pass the MO integrals are contained in a MemoryGrp object. The object is 'stored' in accumulator using store_memorygrp(Ref<MemoryGrp>& mem, int ni). After all batches have been stored, the content of R12IntsAcc needs to be 'committed' using commit(). After that blocks of MO integrals can be accessed using retrieve_pair_block. Member Function Documentationvirtual void sc::R12IntsAcc::activate () [virtual]Call before starting to read content. Reimplemented in sc::R12IntsAcc_MPIIOFile, and sc::R12IntsAcc_Node0File. virtual bool sc::R12IntsAcc::can_restart () const [pure virtual]Can this specialization be used in restarts? Implemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile, and sc::R12IntsAcc_Node0File. virtual void sc::R12IntsAcc::commit () [virtual]Commit the content of the accumulator for reading. Reimplemented in sc::R12IntsAcc_MPIIOFile, and sc::R12IntsAcc_Node0File. virtual void sc::R12IntsAcc::deactivate () [virtual]Call when done reading content. Reimplemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile, and sc::R12IntsAcc_Node0File. virtual bool sc::R12IntsAcc::has_access (int proc) const [pure virtual]Does this task have access to all the integrals? Implemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile, and sc::R12IntsAcc_Node0File. virtual bool sc::R12IntsAcc::is_avail (int i, int j) const [pure virtual]Is this block available to this task? Implemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile, and sc::R12IntsAcc_Node0File. virtual bool sc::R12IntsAcc::is_local (int i, int j) const [pure virtual]Is this block stored locally? Implemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile, and sc::R12IntsAcc_Node0File. virtual int sc::R12IntsAcc::ntasks () const [protected], [pure virtual]total number of tasks Implemented in sc::R12IntsAcc_MPIIOFile. virtual void sc::R12IntsAcc::release_pair_block (int i, int j, tbint_type oper_type) [pure virtual]Releases an ij pair block of integrals (if needed) Implemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile, and sc::R12IntsAcc_Node0File. virtual double * sc::R12IntsAcc::retrieve_pair_block (int i, int j, tbint_type oper_type) [pure virtual]Retrieves an ij pair block of integrals. Implemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile_Ind, and sc::R12IntsAcc_Node0File. void sc::R12IntsAcc::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. Reimplemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile, sc::R12IntsAcc_MPIIOFile_Ind, and sc::R12IntsAcc_Node0File. virtual void sc::R12IntsAcc::store_memorygrp (Ref< MemoryGrp > & mem, int ni, const size_t blksize = 0) [pure virtual]Stores all pair block of integrals held in mem in a layout assumed throughout MBPT2_R12. Let's suppose the number of tasks is nproc, nj is the number of j indices, ni is the number of i indices of integrals held in mem at the moment. Then all integrals with a given i and j are stored on task (i*nj+j)/nproc and this ij block is (i*nj+j)nproc -th block on this task. Each ij block contains num_te_types_ subblocks of integrals. Each subblock of integrals has blksize bytes allocated for it. Note that blksize may be larger than blksize_ because an ij-block of partially transformed integrals may be larger than the block of fully transformed integrals. Implemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile_Ind, and sc::R12IntsAcc_Node0File. virtual void sc::R12IntsAcc::store_pair_block (int i, int j, double * ints) [pure virtual]All member functions of this class and its children indices i and j don't include frozen orbitals Stores an ij pair block of integrals (assumes the block resides locally) Implemented in sc::R12IntsAcc_MemoryGrp, sc::R12IntsAcc_MPIIOFile, and sc::R12IntsAcc_Node0File. virtual int sc::R12IntsAcc::taskid () const [protected], [pure virtual]ID of this task. Implemented in sc::R12IntsAcc_MPIIOFile. int sc::R12IntsAcc::tasks_with_access (vector< int > & twa_map) constReturns the total number of tasks with access to integrals. If task i has access to the integrals, then twa_map[i] is its index among the tasks with access, -1 otherwise. AuthorGenerated automatically by Doxygen for MPQC from the source code.
|