#include <transform.h>
Public Member Functions | |
| void | print () |
| void | read_oei_from_transqt () |
| void | read_integrals_from_transqt () |
| void | read_integrals_mrpt2 () |
| int | read_tei_mo_integrals_block (int first_irrep) |
| void | free_tei_mo_integrals_block (int first_irrep, int last_irrep) |
| void | free_memory () |
| void | transform_tei_integrals () |
| double | oei (int p, int q) |
| double | tei (int p, int q, int r, int s) |
| double | tei_block (int p, int q, int r, int s) |
| double | tei_mrpt2 (int p, int q, int r, int s) |
Definition at line 17 of file psimrcc/transform.h.
| int psi::psimrcc::CCTransform::read_tei_mo_integrals_block | ( | int | first_irrep | ) |
Read at least one block of the two electron MO integrals from an iwl buffer assuming Pitzer ordering and store them in the packed array tei_mo
Definition at line 42 of file transform_block.cc.
References psi::psimrcc::CCBLAS::get_index(), psi::psimrcc::CCIndex::get_tuple_index(), psi::psimrcc::CCIndex::get_tuple_irrep(), iwl_buf_close(), iwl_buf_fetch(), and iwl_buf_init().
00043 { 00044 // Read all the (frozen + non-frozen) TEI in Pitzer order 00045 // and store them in a in-core block-matrix 00046 CCIndex* mo_indexing = blas->get_index("[n>=n]"); 00047 00048 int last_irrep = allocate_tei_mo_block(first_irrep); 00049 00050 double value; 00051 size_t p,q,r,s,pq,rs,pqrs,irrep; 00052 size_t ilsti,nbuf,fi,index,elements; 00053 elements = 0; 00054 struct iwlbuf ERIIN; 00055 iwl_buf_init(&ERIIN,PSIF_MO_TEI,0.0,1,1); 00056 do{ 00057 ilsti = ERIIN.lastbuf; 00058 nbuf = ERIIN.inbuf; 00059 fi = 0; 00060 for(index = 0; index < nbuf; index++){ 00061 // Compute the [pq] index for this pqrs combination 00062 p = abs(ERIIN.labels[fi]); 00063 q = ERIIN.labels[fi+1]; 00064 r = ERIIN.labels[fi+2]; 00065 s = ERIIN.labels[fi+3]; 00066 value = ERIIN.values[index]; 00067 irrep = mo_indexing->get_tuple_irrep(p,q); 00068 // Fill in only the blocks that fit 00069 if((first_irrep<=irrep) && (irrep<last_irrep)){ 00070 pq = mo_indexing->get_tuple_index(p,q); 00071 rs = mo_indexing->get_tuple_index(r,s); 00072 pqrs = INDEX(pq,rs); 00073 tei_mo[irrep][pqrs]=value; 00074 } 00075 fi += 4; 00076 elements++; 00077 } 00078 if(!ilsti) 00079 iwl_buf_fetch(&ERIIN); 00080 } while(!ilsti); 00081 fprintf(outfile,"\n CCTransform: read %d non-zero integrals", elements); 00082 fflush(outfile); 00083 iwl_buf_close(&ERIIN,1); 00084 return(last_irrep); 00085 }
| void psi::psimrcc::CCTransform::free_tei_mo_integrals_block | ( | int | first_irrep, | |
| int | last_irrep | |||
| ) |
Free the blocks included in the first_irrep->last_irrep range
Definition at line 139 of file transform_block.cc.
References psi::psimrcc::MOInfo::get_nirreps(), and psi::psimrcc::CCIndex::get_pairpi().
00140 { 00141 for(int h=first_irrep;h<last_irrep;h++){ 00142 if(tei_mo[h] != NULL){ 00143 size_t block_size = INDEX(tei_mo_indexing->get_pairpi(h)-1,tei_mo_indexing->get_pairpi(h)-1)+1; 00144 delete[] tei_mo[h]; 00145 mem->add_allocated_memory(-to_MB(block_size)); 00146 } 00147 } 00148 if(last_irrep>=moinfo->get_nirreps()){ 00149 delete[] tei_mo; 00150 tei_mo = NULL; 00151 } 00152 }
| void psi::psimrcc::CCTransform::free_memory | ( | ) |
1.5.4