mirror of
https://github.com/nwchemgit/nwchem.git
synced 2026-07-28 22:25:48 -04:00
152 lines
5.4 KiB
Text
152 lines
5.4 KiB
Text
#include "nwc_const.fh"
|
|
#include "cbassym.fh"
|
|
c
|
|
c Internal common/parameters for UCCSDT
|
|
c
|
|
c Alpha=1, Beta=2
|
|
c Irreps numbered 0..7 so that ijsym=ieor(isym,jsym)
|
|
c
|
|
c The generic information is filled in by uccsdt_init()
|
|
c and is cleaned up by uccsdt_tidy().
|
|
c
|
|
c The triples blocking information is filled in by
|
|
c uccsdt_triples_{sub,super}_blocking() and cleaned up by
|
|
c uccsdt_triples_sub_blocking_end().
|
|
c
|
|
integer basis
|
|
integer geom
|
|
integer g_movecs(2) ! GAs holding the MO vectors
|
|
integer k_movecs(2) ! MA offsets for the local MO vectors
|
|
integer l_movecs(2) ! MA handles for the local MO vectors
|
|
c
|
|
integer nsh ! Total no. of AO shells
|
|
integer nbf ! Total no. of AO basis functions
|
|
integer nmo ! Total no. of MOs (core + occupied + virtual)
|
|
integer nact ! Total no. of active MOS (occupied + virtual)
|
|
integer nir ! No. of irreducible representations
|
|
integer nc(1:2) ! No. of frozen orbitals (same for each spin)
|
|
integer no(1:2) ! No. of active occupied for each spin.
|
|
integer nv(1:2) ! Ditto for virtuals (no frozen virtuals)
|
|
c
|
|
c Orbitals are numbered core+occupied+virtual sub-blocked by symmetry.
|
|
c
|
|
integer nc_sym(0:7,1:2) ! No. of core orbitals of each symmetry & spin
|
|
integer no_sym(0:7,1:2) ! Ditto for active occupied
|
|
integer nv_sym(0:7,1:2) ! Ditto for virtuals
|
|
c
|
|
integer c_sym(1:2,0:7,1:2) ! First/last core orbital for given irrep/spin
|
|
integer o_sym(1:2,0:7,1:2) ! Ditto for active occupied
|
|
integer v_sym(1:2,0:7,1:2) ! Ditto for virtuals
|
|
c
|
|
integer map(nw_max_nbf_small,1:2) ! Map semi-canonical to sym. blocked
|
|
c
|
|
double precision eps(nw_max_nbf_small,1:2) ! Eigenvalues for each spin
|
|
c
|
|
c GA handles for hole/particle matrices
|
|
c
|
|
integer g_part(2), g_hole(2)
|
|
c
|
|
c Info about symmetry packed OSO pairs
|
|
c Both for full SO range (v) and incomplete SO range (u)
|
|
c
|
|
integer oso_v_len(0:7,2)
|
|
integer oso_v_off(nw_max_nbf_small,0:7,2)
|
|
integer oso_u_len(0:7,2)
|
|
integer oso_u_off(nw_max_nbf_small,0:7,2)
|
|
c
|
|
c Info about symmetry packed OV pairs
|
|
c
|
|
c lenia = ov_len(symia,spini,spina)
|
|
c dimension packed(lenia)
|
|
c dimension unpacked(ilo:ihi,alo:ahi)
|
|
c packed(1 + i-o_sym(1,symi,spini) + ov_off(a,symia,spini,spina))
|
|
c . = unpacked(i,a)
|
|
c
|
|
integer ov_len(0:7,2,2)
|
|
integer ov_len_cum(0:7,2,2)
|
|
integer ov_off(nw_max_nbf_small+1,0:7,2,2)
|
|
c
|
|
c t2(spini,spina,spinj,spinb,symjb) is a dense 2D array of dimension
|
|
c (ov_len(symia,spini,spina),ov_len(symjb,spinj,spinb)) and begins
|
|
c at file_t2_off(spini,spina,spinj,spinb,symjb)
|
|
c
|
|
integer file_t1_off(2)
|
|
integer file_t2_off(2,2,2,2,0:7)
|
|
integer t1_len(2)
|
|
integer t2_len(2,2) ! t2_len(spini,spinj)
|
|
c
|
|
c Super-blocking info for the triples
|
|
c
|
|
integer asuper(2), bsuper(2), csuper(2) ! The current super block ranges
|
|
integer asuper_spin, csuper_spin ! Spin of orbital blocks
|
|
c
|
|
c Sub-blocking info for the triples
|
|
c 1=first orbital, 2=last orbital, 3=symmetry of all orbitals in sub-block
|
|
c
|
|
integer nablock, ablock(1:3,nw_max_nbf_small)
|
|
integer nbblock, bblock(1:3,nw_max_nbf_small)
|
|
integer ncblock, cblock(1:3,nw_max_nbf_small)
|
|
integer noblock(1:2), oblock(1:3,nw_max_nbf_small,1:2)
|
|
integer oblock_max, vblock_max ! Maximum size of any occ/virt block
|
|
integer e_block_max, m_block_max ! largest no. of virt/occ in any irrep
|
|
c
|
|
c Invert the orbital index to get a sub-block index
|
|
c
|
|
integer ablock_inv(nw_max_nbf_small)
|
|
integer bblock_inv(nw_max_nbf_small)
|
|
integer cblock_inv(nw_max_nbf_small)
|
|
integer oblock_inv(nw_max_nbf_small,2)
|
|
c
|
|
c Integral/amplitude lists for the triples
|
|
c 1 = length of pointer array = #block triplets/quartets
|
|
c 2 = MA index for pointer array
|
|
c 3 = MA handle
|
|
c 4 = length of actual global array
|
|
c 5 = GA handle for actual array
|
|
c 6,7,8,9 = dimensions of the pointer array
|
|
c . (note that 1st dimension is unity except for lists 11, 12, 13)
|
|
integer listinfo(1:9,23)
|
|
character*10 listname(23)
|
|
c
|
|
logical ocheck ! If true check the integral lists
|
|
c
|
|
integer aoints_file ! EAF file handle for AO integrals
|
|
logical aoints_file_read, aoints_file_write
|
|
double precision aoints_file_offset
|
|
c
|
|
common /cuccsdt/
|
|
c
|
|
c doubles
|
|
c
|
|
$ eps, aoints_file_offset,
|
|
c
|
|
c integers
|
|
c
|
|
$ basis, geom, g_movecs, k_movecs, l_movecs,
|
|
$ nsh, nbf, nmo, nact, nir, nc, no, nv, nc_sym, no_sym, nv_sym,
|
|
$ c_sym, o_sym, v_sym, map, ocheck,
|
|
$ aoints_file, aoints_file_read, aoints_file_write,
|
|
$ ov_len, ov_len_cum, ov_off,
|
|
$ file_t1_off, file_t2_off, t1_len, t2_len,
|
|
$ g_part, g_hole,
|
|
c
|
|
$ asuper, bsuper, csuper,
|
|
$ asuper_spin, csuper_spin,
|
|
$ nablock, nbblock, ncblock, noblock,
|
|
$ ablock, bblock, cblock, oblock,
|
|
$ ablock_inv, bblock_inv, cblock_inv, oblock_inv,
|
|
$ oblock_max, vblock_max,
|
|
$ e_block_max, m_block_max,
|
|
$ listinfo
|
|
c
|
|
c characters
|
|
c
|
|
common /ccuccsdt/ listname
|
|
c
|
|
c This just temporary stuff for development
|
|
c
|
|
integer k_t1a, l_t1a, k_t1b, l_t1b
|
|
common /cuccsdtfudge/
|
|
$ k_t1a, l_t1a, k_t1b, l_t1b
|
|
c
|
|
c $Id$
|