Syntax:
subroutine int_init(rtdb, nbas, bases)
integer rtdb ! [input] run time data base handle integer nbas ! [input] number of basis sets to be used integer bases(nbas) ! [input] basis set handles
Syntax:
subroutine intd_init(rtdb,nbas,bases)
integer rtdb ! [input] run time data base handle integer nbas ! [input] number of basis sets to be used integer bases(nbas) ! [input] basis set handles
Syntax:
subroutine int_terminate()No formal arguments
Syntax:
subroutine intd_terminate()No formal arguments
Syntax:
subroutine intdd_terminate()No formal arguments
Syntax:
subroutine int_acc_std()The default ''standard'' value for the integral accuracy is:
c parameter(val_def = 1.0d-15)
Syntax:
subroutine int_acc_high()The default ''high accuracy'' value for the integral API is:
c parameter (val_def_high = 1.0d-30)This is needed for certain algorithms within NWChem, e.g., the Schwarz inequality screening.
Syntax:
subroutine int_acc_get(retval)
double precision retval ! [output] current threshold
Syntax:
subroutine int_acc_set(setval)
double precision setval ! [input] new threshold
int_mem_2e4c
is used to get the maximum buffer size and scratch
array size for both integrals computed using int_2e4c
and
integral derivatives computed using intd_2e4c
. The INT-API is
also designed such that if you initialize INT-API for integral
derivatives, the memory estimates are also valid for integrals as
well.
Syntax:
subroutine int_mem(max1e, maxg, mscratch_1e, mscratch_2e)
integer max1e ! [output] max 1e buffer size integer maxg ! [output] max 2e4c buffer size integer mscratch_1e ! [output] max scr for 1e ints integer mscratch_2e ! [output] max scr for 2e ints
Syntax:
subroutine int_mem_1e(max1e, mscratch_1e)
integer max1e ! [output] max 1e buffer size integer mscratch_1e ! [output] max scr for 1e ints
Syntax:
subroutine int_mem_2e4c(maxg, mscratch_2e)
integer maxg ! [output] max 2e4c buffer size integer mscratch_2e ! [output] max scr for 2e ints
Syntax:
subroutine int_mem_h1(maxh1, mscratch_h1)
integer maxh1 ! [output] max buffer size for H1 ints integer mscratch_h1 ! [output] max scr size for H1 ints
Syntax:
subroutine int_mem_2e3c(maxg, mscratch_2e3c)
integer maxg ! [output] max buf size for 2e3c ints integer mscratch_2e3c ! [output] max scr size for 2e3c ints
Syntax:
subroutine int_mem_2e2c(maxg, mscratch_2e2c)
integer maxg ! [output] max buf size for 2e2c ints integer mscratch_2e2c ! [output] max scr size for 2e2c ints
Syntax:
subroutine int_mem_3ov(maxbuf, mscratch_3ov)
integer maxbuf ! [output] max buf size for 3 center ov integer mscratch_3ov ! [output] max scr size for 3 center ov
Syntax:
subroutine int_mem_print()
Syntax:
subroutine intb_mem_2e4c(maxg, mscratch_2e)
integer maxg ! [output] max buf size for blocked 2e4c ints integer mscratch_2e ! [output] max scr size for blocked 2e4c ints
If an ECP is defined then the ECP integral contributions are summed directly into the V integrals.
If a relativistic basis is defined then the one-electron integrals for the case where both shells are relativistic are modified to
Syntax:
subroutine int_1estv(i_basis,ish,j_basis,jsh,lscr,scr,lstv,S,T,V, & doS,doT,doV)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array integer lstv ! [input] length of integral buffer double precision scr(lscr) ! [scratch] scratch array double precision S(lstv) ! [output] overlap integrals double precision T(lstv) ! [output] kinetic energy integrals double precision V(lstv) ! [output] potential energy integrals logical doS ! [input] flag for overlap integrals logical doT ! [input] flag for kinetic energy integrals logical doV ! [input] flag for potential energy integrals
Syntax:
subroutine int_1eov(i_basis,ish,j_basis,jsh,lscr,scr,lov,Ov)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] scratch array integer lov ! [input] length of Ov buffer double precision Ov(lov) ! [output] overlap integrals
Syntax:
subroutine int_1eke(i_basis,ish,j_basis,jsh,lscr,scr,lke,Ke)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] scratch array integer lke ! [input] length of Ke buffer double precision Ke(lke) ! [output] kinetic energy integrals
Syntax:
subroutine int_1epe(i_basis,ish,j_basis,jsh,lscr,scr,lpe,Pe)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] scratch array integer lpe ! [input] length of Pe buffer double precision Pe(lpe) ! [output] kinetic energy integrals
If an ECP is defined then the ECP integral contributions are summed directly into the integrals.
If a relativistic basis is defined then the one-electron integrals for the case where both shells are relativistic are the modified integrals.
Syntax:
subroutine int_1eh1(i_basis,ish,j_basis,jsh,lscr,scr,lh1,H1)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] scratch array integer lh1 ! [input] length of H1 buffer. double precision H1(lh1) ! [output] one electron
Syntax:
subroutine int_1eall(i_basis,ish,j_basis,jsh,lscr,scr,lstv,S,T,V)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] scratch array integer lstv ! [input] length of one electron buffers double precision T(lstv) ! [output] kinetic integral buffer double precision V(lstv) ! [output] potential integral buffer double precision S(lstv) ! [output] overlap integral buffer
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array integer lstv ! [input] length of integral buffer double precision scr(lscr) ! [scratch] scratch array double precision S(lstv) ! [output] overlap integrals double precision T(lstv) ! [output] kinetic energy integrals double precision V(lstv) ! [output] potential energy integrals logical doS ! [input] flag for overlap integrals logical doT ! [input] flag for kinetic energy integrals logical doV ! [input] flag for potential energy integrals
Syntax:
subroutine int_1cg(i_basis,ish,lscr,scr,l1g,G1e)
integer i_basis ! [input] basis set handle integer ish ! [input] lexical shell/contraction index integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] scratch space integer l1g ! [input] length of integral buffer array double precision G1e(l1g) ! [output] one center gaussian integrals
subroutine int_1e3ov (i_basis, ish, j_basis, jsh, k_basis, ksh, & lscr, scr, lov3, OV3) c
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer k_basis ! [input] basis set handle for ksh integer ksh ! [input] k shell/contraction integer lscr ! [input] length of scratch v double precision scr(lscr) ! [scratch] scratch array integer lov3 ! [input] length of 3c overlap buffer double precision OV3(lov3) ! [output] 3c overlap integrals
Syntax:
subroutine int_l1e3ov(i_basis, ish, j_basis, jsh, k_basis, ksh, & zerotol, lov3, OV3, ilab, jlab, klab, numov3, lscr, scr)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer k_basis ! [input] basis set handle for ksh integer ksh ! [input] k shell/contraction double precision zerotol ! [input] "zero" tolerance threshold integer lov3 ! [input] length of 3c overlap array double precision OV3(lov3) ! [output] 3c overlap integrals integer ilab(lov3) ! [output] i labels for 3c overlap ints integer jlab(lov3) ! [output] j labels for 3c overlap ints integer klab(lov3) ! [output] k labels for 3c overlap ints integer numov3 ! [output] number of integrals and labels c . . . . . . . . . . . . . . . .! generated and returned integer lscr ! [input] length of scratch array double precision scr(lscr) ! [input] scratch array
If an ECP is defined then the ECP integral contributions are summed directly into the V integrals.
Syntax:
subroutine int_l1eall(i_basis, ish, j_basis, jsh, zerotol, & ilab, jlab, lstv, S, T, V, lscr, scr, numstv)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision zerotol ! [input] zero threshold for integrals double precision scr(lscr) ! [scratch] scratch array integer lstv ! [input] length of one electron buffers integer ilab(lstv) ! [output] i bas. fun. index array integer jlab(lstv) ! [output] j bas. fun. index array double precision T(lstv) ! [output] kinetic integral buffer double precision V(lstv) ! [output] potential integral buffer double precision S(lstv) ! [output] overlap integral buffer integer numstv ! [output] number of returned integrals
Syntax:
subroutine int_pgen1e(msg, i_basis, ish, j_basis, jsh, & ilab, jlab, l1e, Gen1e, print_level)
character*(*) msg ! [input] informational message integer i_basis ! [input] basis set handle for i shell integer j_basis ! [input] basis set handle for j shell integer ish ! [input] i shell integer jsh ! [input] j shell integer l1e ! [input] number of integrals and labels integer ilab(l1e) ! [input] i basis functions labels integer jlab(l1e) ! [input] j basis functions labels double precision Gen1e(l1e) ! [input] integrals to be printed integer print_level ! [input] print level to be used c. . . . . . . . . . . . . .! print_level = 0 print lables and integrals c. . . . . . . . . . . . . .! = 1 also print shell info.
If an ECP is defined then the ECP integral contributions are summed directly into the integrals.
Syntax:
subroutine int_l1eh1(i_basis, ish, j_basis, jsh, zerotol, & ilab, jlab, lh1, H1, lscr, scr, numgen)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision zerotol ! [input] zero threshold double precision scr(lscr) ! [scratch] scratch array integer lh1 ! [input] length of 1e buffers. integer numgen ! [output] number of H1 integrals integer ilab(lh1) ! [output] i bas fun labels array integer jlab(lh1) ! [output] j bas fun labels array double precision H1(lh1) ! [output] 1e H1 integrals
Syntax:
subroutine int_l1eke(i_basis, ish, j_basis, jsh, zerotol, & ilab, jlab, lke, Ke, lscr, scr, numgen)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] scratch array double precision zerotol ! [input] zero threshold integer lke ! [input] length of 1e buffers integer numgen ! [output] number of Ke integrals integer ilab(lke) ! [output] i bas fun labels array integer jlab(lke) ! [output] j bas fun labels array double precision Ke(lke) ! [output] kinetic energy integrals
Syntax:
subroutine int_l1eov(i_basis, ish, j_basis, jsh, zerotol, & ilab, jlab, lov, Ov, lscr, scr, numgen)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] scratch array double precision zerotol ! [input] zero threshold integer lov ! [input] length of overlap buffer integer numgen ! [output] num of ints generated integer ilab(lov) ! [output] i bas fun labels array integer jlab(lov) ! [output] j bas fun labels array double precision Ov(lov) ! [output] overlap integral buffer
Syntax:
subroutine int_l1epe(i_basis, ish, j_basis, jsh, zerotol, & ilab, jlab, lpe, Pe, lscr, scr, numgen)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] scratch array double precision zerotol ! [input] zero integral threshold integer lpe ! [input] length of potential buffer integer numgen ! [output] number of integrals generated integer ilab(lpe) ! [output] i bas fun labels array integer jlab(lpe) ! [output] j bas fun labels array double precision Pe(lpe) ! [output] potential integrals
Syntax:
subroutine int_lgen1e(i_basis, ish, j_basis, jsh, zerotol, & ilab, jlab, l1e, Gen1e, lscr, scr, numgen)
integer i_basis ! [input] bra basis set handle integer ish ! [input] bra shell lexical index integer j_basis ! [input] ket basis set handle integer jsh ! [input] ket shell lexical index double precision zerotol ! [input] zero threshold integer l1e ! [input] length of buffers for integrals integer ilab(l1e) ! [output] i bas func labels array integer jlab(l1e) ! [output] j bas func labels array double precision Gen1e(l1e) ! [input/output] 1e integrals integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] array integer numgen ! [output] number of integrals c . . . . . . . . . .! saved and returned
Syntax:
subroutine int_2e2c(brain, ish, ketin, jsh, & lscr, scr, leri, eri)
integer brain ! [input] bra basis set handle integer ish ! [input] shell/contraction index integer ketin ! [input] ket basis set handle integer jsh ! [input] shell/contraction index integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] array integer leri ! [input] length of integral array double precision eri(leri) ! [output] 2e2c integrals
Syntax:
subroutine int_l2e2c(brain, ish, ketin, jsh, & zerotol, leri, eri, nint, ilab, jlab, & lscr, scr)
integer brain ! [input] bra basis set handle integer ish ! [input] shell/contraction index integer ketin ! [input] ket basis set handle integer jsh ! [input] shell/contraction index integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] array double precision zerotol ! [input] zero threshold integer leri ! [input] length of integral array integer nint ! [output] num of ints computed integer ilab(leri) ! [output] i bas func label array integer jlab(leri) ! [output] j bas func label array double precision eri(leri) ! [output] 2e2c integrals
Syntax:
subroutine int_l2e3c(brain, ish, ketin, jsh, ksh, & zerotol, canket, leri, eri, nint, ilab, jlab, klab, & lscr, scr)
integer brain ! [input] bra basis set handle integer ish ! [input] shell/contraction index integer ketin ! [input] ket basis set handle integer jsh ! [input] shell/contraction index integer ksh ! [input] shell/contraction index integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] array double precision zerotol ! [input] zero threshold integer leri ! [input] length of integral array integer nint ! [output] number of integrals computed integer ilab(leri) ! [output] i bas fun labels array integer jlab(leri) ! [output] j bas fun labels array integer klab(leri) ! [output] k bas fun labels array double precision eri(leri) ! [output] 2e3c integrals logical canket ! [input] canonicalize ket bas. fun. label pairs
Syntax:
subroutine int_2e3c(brain, ish, ketin, jsh, ksh, & lscr, scr, leri, eri)
integer brain ! [input] bra basis set handle integer ish ! [input] shell/contraction index integer ketin ! [input] ket basis set handle integer jsh ! [input] shell/contraction index integer ksh ! [input] shell/contraction index integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] array integer leri ! [input] length of integral array double precision eri(leri) ! [output] 2e3c integrals
Syntax:
subroutine int_2e4c(brain, ish, jsh, ketin, ksh, lsh, & lscr, scr, leri, eri)
integer brain ! [input] bra basis set handle integer ish ! [input] shell/contraction index integer jsh ! [input] shell/contraction index integer ketin ! [input] ket basis set handle integer ksh ! [input] shell/contraction index integer lsh ! [input] shell/contraction index integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] array integer leri ! [input] length of integral array double precision eri(leri) ! [output] 2e4c integrals
Syntax:
subroutine int_l2e4c(brain, ish, jsh, ketin, ksh, lsh, & zerotol, canonicalize, leri, eri, nint, ilab, jlab, klab, & llab, lscr, scr)
integer brain ! [input] bra basis set handle integer ish ! [input] shell/contraction index integer jsh ! [input] shell/contraction index integer ketin ! [input] ket basis set handle integer ksh ! [input] shell/contraction index integer lsh ! [input] shell/contraction index double precision zerotol ! [input] zero threshold integer lscr ! [input] length of scratch array double precision scr(lscr) ! [scratch] array integer leri ! [input] length of integral array integer nint ! [output] number of integrals computed integer ilab(leri) ! [output] i bas fun label array integer jlab(leri) ! [output] j bas fun label array integer klab(leri) ! [output] k bas fun label array integer llab(leri) ! [output] l bas fun label array double precision eri(leri) ! [output] 2e4c integrals logical canonicalize ! [input] canonicalize labels
Return Values:
.true. | blocking API initialization okay |
.false. | blocking API detected a problem |
Side Effects: The shell quartet information may be reordered since this routine pulls out blocks that consist of only , , and functions. Thes blocks are computed using the rotated axis code since it is faster than even the Texas integral code.
The following code excerpt describes the proper use of the blocking
API routines.
Pseudo Code:
* begin atom/shell loops call collect_group_of_shells() okay = intb_init4c($\cdots$) ! with group of shells info if (.not.okay) stop ' error setting up blocking interface ' 00001 continue more = intb_2e4c($\cdots$) ! with group of shells info call use_integrals_in_some_way() if (more) goto 00001 * end atom/shell loops
Syntax:
logical function intb_init4c(brain, icl, jcl, ketin, kcl, lcl, & num_q, q4, use_q4, lscr, scr, l_erilab, block_eff)
integer brain ! [input] basis set handle for bra basis integer ketin ! [input] basis set handle for ket basis integer num_q ! [input] number of quartets integer icl(num_q) ! [input] i-contraction labels for quartets integer jcl(num_q) ! [input] j-contraction labels for quartets integer kcl(num_q) ! [input] k-contraction labels for quartets integer lcl(num_q) ! [input] l-contraction labels for quartets double precision q4(num_q) ! [input] scaling factors logical use_q4 ! [input] true if scaling integer l_erilab ! [input] size of eri and label arrays that *................................. will be used in intb_2e4c.F integer lscr ! [input] length of scratch array double precision scr(lscr) ! [input] scratch array double precision block_eff ! [output] blocking efficiency
Return Values:
.true. | more integrals from this block another call to intb_2e4c required |
.false. | all integrals from this block computed |
The following code excerpt describes the proper use of the blocking
API routines.
Pseudo Code:
* begin atom/shell loops call collect_group_of_shells() okay = intb_init4c($\cdots$) ! with group of shells info if (.not.okay) stop ' error setting up blocking interface ' 00001 continue more = intb_2e4c($\cdots$) ! with group of shells info call use_integrals_in_some_way() if (more) goto 00001 * end atom/shell loops
Syntax:
logical function intb_2e4c(brain, icl, jcl, ketin, kcl, lcl, $ num_q, q4, use_q4, zerotol, canonicalize, $ ilab, jlab, klab, llab, eri, $ l_erilab, nints, lscr, scr)
integer brain ! [input] basis handle for bra integer ketin ! [input] basis handle for ket integer num_q ! [input] number of quartets input integer icl(num_q) ! [input] i-contraction quartet labels integer jcl(num_q) ! [input] j-contraction quartet labels integer kcl(num_q) ! [input] k-contraction quartet labels integer lcl(num_q) ! [input] l-contraction quartet labels logical use_q4 ! [input] logical for use of q4 double precision q4(num_q) ! [input] symmetry prefactors for ints * integer l_erilab ! [input] length of eri and label arrays integer ilab(l_erilab) ! [output] integral labels for ``i'' integer jlab(l_erilab) ! [output] integral labels for ``j'' integer klab(l_erilab) ! [output] integral labels for ``k'' integer llab(l_erilab) ! [output] integral labels for ``l'' integer nints ! [output] number of integrals returned double precision eri(l_erilab) ! [output] integral values integer lscr ! [input] length of scratch array double precision scr(lscr) ! [input] scratch array double precision zerotol ! [input] zero integral threshold logical canonicalize ! [input] Canonicalize integral labels?
Return Values:
.true. | more integrals from this block another call to intb_2e4c required |
.false. | all integrals from this block computed |
Syntax:
logical function intb_nw_2e4c(brain, icl, jcl, ketin, kcl, lcl, $ num_q, q4, use_q4, zerotol, canonicalize, $ ilab, jlab, klab, llab, eri, $ l_erilab, nints, lscr, scr)
integer brain ! [input] basis set handle for bra integer ketin ! [input] basis set handle for ket integer num_q ! [input] number of quartets input integer icl(num_q) ! [input] i-contraction quartet labels integer jcl(num_q) ! [input] j-contraction quartet labels integer kcl(num_q) ! [input] k-contraction quartet labels integer lcl(num_q) ! [input] l-contraction quartet labels logical use_q4 ! [input] logical for use of q4 double precision q4(num_q) ! [input] symmetry prefactors for ints * integer l_erilab ! [input] length of eri and label arrays integer ilab(l_erilab) ! [output] integral labels for ``i'' integer jlab(l_erilab) ! [output] integral labels for ``j'' integer klab(l_erilab) ! [output] integral labels for ``k'' integer llab(l_erilab) ! [output] integral labels for ``l'' integer nints ! [output] number of integrals returned double precision eri(l_erilab) ! [output] integral values integer lscr ! [input] length of scratch array double precision scr(lscr) ! [input] scratch array double precision zerotol ! [input] zero integral threshold logical canonicalize ! [input] Canonicalize integral labels?
The general form is . Integrals are returned in shell blocks of =0 to one block for each value.
For example = p and = 1 and = p you would get
(3*1*3)+(3*3*3)=36 integrals.
The order would be:
(first nine) | |||||||
(second nine) | |||||||
(third nine) | |||||||
(fourth nine) |
The integral for each L value computed is:
See the int_order code inside /NWints/int for specific order of a set of shells and dipole order.
Syntax:
subroutine int_mpole(i_basis, ish, j_basis, jsh, lmax, centerl, & lscr, scr, lmpint, MP)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer j_basis ! [input] basis set handle for jsh integer jsh ! [input] j shell/contraction integer lmax ! [input] maximum lvalue for c . . . . . . . . . . . . . . . . ! multipole integrals in this batch double precision centerl(3) ! [input] coordinates of multipole integer lscr ! [input] length of scratch array double precision scr(lscr) ! [input] scratch array integer lmpint ! [input] length of multipole ints double precision MP(lmpint) ! [output] multipole integrals
Integrals are returned in poleshell blocks one block for each L value 0lmax.
For example, a multipole, L = 1 and a d shell would yield (1+3)*6 = 24 integrals.
The order would be:
first six | ||||||
second six | ||||||
third six | ||||||
fourth six |
Syntax:
subroutine int_projpole(i_basis, ish, centerl, lmax, & lscr, scr, lmpint, MP)
integer i_basis ! [input] basis set handle for ish integer ish ! [input] i shell/contraction integer lmax ! [input] maximum lvalue for c . . . . . . . . . . . . . . . . ! multipole ints in this batch double precision centerl(3) ! [input] coordinates of multipole integer lscr ! [input] length of scratch array double precision scr(lscr) ! [input] scratch array integer lmpint ! [input/output] length of c . . . . . . . . . . . . . . . . ! multipole integrals array double precision MP(lmpint) ! [output] multipole integrals
Syntax:
subroutine exact_mem(rtdb,bases,nbas)
integer rtdb ! [input] the RTDB handle integer nbas ! [input] number of basis sets integer bases(nbas) ! [input] basis set handles
Debugging Note: using a set directive to set the variable ``int:full_mem'' to true will force the more expensive algorithm to be used to compute the memory requirements for the 2-electron integrals.
Syntax:
subroutine emem_3ov(ibasin,jbasin,kbasin,lsz_buf,memsize)
integer ibasin ! [input] basis set handle for ``i'' contractions integer jbasin ! [input] basis set handle for ``j'' contractions integer kbasin ! [input] basis set handle for ``k'' contractions integer lsz_buf ! [output] maximum size of integral buffer integer memsize ! [output] memory needed for scratch array
Syntax:
subroutine emem_1e(brain, ketin, max1e, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer max1e ! [output] max size of 1e integrals buffer integer memsize ! [output] max size of scratch space for 1e integral evaluation
Syntax:
subroutine emem_1e_dk(brain, ketin, max1e, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer max1e ! [output] max size of 1e integrals buffer integer memsize ! [output] max size of scratch space for 1e integral evaluation
Syntax:
subroutine emem_1e_rel(brain, ketin, max1e, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer max1e ! [output] max size of 1e integrals buffer integer memsize ! [output] max size of scratch space for 1e integral evaluation
The exact algorithm is an N and an N approximate algorithm is used here. Exact memory is computed for integrals over the following classes:
Syntax:
subroutine emem_2e4c(brain, ketin, maxg, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer maxg ! [output] max size of 2e integrals buffer integer memsize ! [output] max size of scratch space for 2e integral evaluation
Syntax:
subroutine emem_2e3c(brain, ketin, maxg, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer maxg ! [output] max size of 2e integrals buffer integer memsize ! [output] max size of scratch space for 2e integral evaluation
Syntax:
subroutine emem_2e2c(brain, ketin, maxg, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer maxg ! [output] max size of 2e integrals buffer integer memsize ! [output] max size of scratch space for 2e integral evaluation
The exact algorithm is an N and costly. This routine is used primarily as a debugging tool This routine should never be called directly by a NWChem application module.
Syntax:
subroutine emem_2e4c_full(brain, ketin, maxg, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer maxg ! [output] max size of 2e integrals buffer integer memsize ! [output] max size of scratch space for 2e integral evaluation
subroutine int_nbf_max(basisin,nbf_max)
integer basisin ! [input] basis set handle integer nbf_max ! [output] maximum number of basis functions
Syntax:
subroutine int_mem_zero()There are no formal arguments to this routine
Syntax:
logical function api_is_ecp_basis(basisin)
integer basisin ! [input] basis set handleReturn value is true if ``basisin'' represents an ECP
Syntax:
subroutine emem_1e_pvp(brain, ketin, max1e, memsize, rel_typ)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer rel_typ ! [input] type of integrals to be computed integer max1e ! [output] max size of 1e integrals buffer integer memsize ! [output] max size of scratch space for 1e integral evaluation
Syntax:
subroutine exactd_mem(rtdb,bases,nbas)
integer rtdb ! [input] the RTDB handle integer nbas ! [input] number of basis sets integer bases(nbas) ! [input} array of basis set handles
Debugging Note: using a set directive to set the variable ``int:full_mem'' to true will force the more expensive algorithm to be used to compute the memory requirements for the 2-electron integral derivatives.
subroutine emem_d1e(brain, ketin, max1e, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer max1e ! [output] max size of 1e integrals buffer integer memsize ! [output] max size of scratch space for 1e integral evaluation
subroutine emem_d1e_rel(brain, ketin, max1e, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer max1e ! [output] max size of 1e integrals buffer integer memsize ! [output] max size of scratch space for 1e integral evaluation
subroutine emem_d2e4c(brain, ketin, maxg, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer maxg ! [output] max size of 2e integrals buffer integer memsize ! [output] max size of scratch space for 2e integral evaluation
subroutine emem_d2e4c_full(brain, ketin, maxg, memsize)
integer brain ! [input] bra basis set handle integer ketin ! [input] ket basis set handle integer maxg ! [output] max size of 2e integrals buffer integer memsize ! [output] max size of scratch space for 2e integral evaluation
Syntax:
subroutine int_canon(i, j, k, l, ii, jj, kk, ll)
integer i,j,k,l ! [input] labels integer ii,jj,kk,ll ! [output] canonical labels
Syntax:
logical function int_chk_init(msg)
character*(*) msg ! [input] usually indentfy calling routine
#include "basP.fh" #include "geobasmapP.fh" logical inline_chk_sh inline_chk_sh(bra,ish) = 1 ((ish.gt.0) .and. (ish.le.ncont_tot_gb(bra)))Where bra is the lexical basis index (not the handle). or you could use the following with the handle.
inline_chk_sh(bra,ish) = 1 ((ish.gt.0) .and. 2(ish.le.ncont_tot_gb(bra+Basis_Handle_Offset)))
Syntax:
logical function int_chk_sh(basisin,shell)
integer basisin ! [input] basis set handle integer shell ! [input] lexical shell index
Syntax:
subroutine int_nospherical_check(basisin,tine)
integer basisin ! [input] basis set handle character*(*) tine ! [input] routine identifier
Syntax:
subroutine int_nogencont_check(basisin,tine)
integer basisin ! [input] basis set handle character*(*) tine ! [input] routine identifier
Syntax:
subroutine int_nospshell_check(basisin,tine)
integer basisin ! [input] basis set handle character*(*) tine ! [input] routine identifier
Syntax:
subroutine int_bothsp_gc_check(basesin,nbas,tine)
integer nbas ! [input] number of basis sets integer basesin(nbas) ! [input] basis set handles character*(*) tine ! [input] routine identifier
Syntax:
subroutine int_hf1sp( & xyzi,expi,coefi, i_nprim, i_ngen, Li, ictri, & xyzj,expj,coefj, j_nprim, j_ngen, Lj, ictrj, & xyz,zan,exinv,nat,S,T,V,lstv,doS,doT,doV,canAB, & dryrun,scr,lscr,msg)For an integral
integer i_nprim ! [input] num. prims on function i integer i_ngen ! [input] num general conts on func. i integer Li ! [input] angular momentum of func. i integer ictri ! [input] lexical atom index for function i integer j_nprim ! [input] num. prims on function j integer j_ngen ! [input] num general conts on func. j integer Lj ! [input] angular momentum of func. j integer ictrj ! [input] lexical atom index for function j integer nat ! [input] number of atoms integer lscr ! [input] size of scratch array integer lstv ! [input] size of any integral buffer double precision xyzi(3) ! [input] position of center i double precision expi(i_nprim) ! [input] exponents on i double precision coefi(i_nprim,i_ngen) ! [input] i coeffs double precision xyzj(3) ! [input] position of center j double precision expj(j_nprim) ! [input] exponents on j double precision coefj(j_nprim,j_ngen) ! [input] j coeffs double precision xyz(3,nat) ! [input] all atom positions double precision zan(nat) ! [input] charges on all atoms double precision exinv(nat) ! [input] inverse nuclear exponents double precision scr(lscr) ! [scratch] scratch buffers double precision S(lstv) ! [output] overlap integrals double precision T(lstv) ! [output] kinetic energy integrals double precision V(lstv) ! [output] potential integrals logical doS ! [input] compute overlap (True/False) logical doT ! [input] compute kinetic (True/False) logical doV ! [input] compute potential (True/False) logical canAB ! [input] compute only canonical ints (false only) logical dryrun ! [input] true means only compute required memory character*(*) msg ![input] calling func. identification message
Syntax:
subroutine int_hf1sp_ecp( & xyzi,expi,coefi, i_nprim, i_ngen, Li, ictri, & xyzj,expj,coefj, j_nprim, j_ngen, Lj, ictrj, & xyz,zan,exinv,nat,S,T,V,lstv,doS,doT,doV,canAB, & dryrun,scr,lscr,msg)For an integral
integer i_nprim ! [input] num. prims on function i integer i_ngen ! [input] num general conts on func. i integer Li ! [input] angular momentum of func. i integer ictri ! [input] lexical atom index for function i integer j_nprim ! [input] num. prims on function j integer j_ngen ! [input] num general conts on func. j integer Lj ! [input] angular momentum of func. j integer ictrj ! [input] lexical atom index for function j integer nat ! [input] number of atoms integer lscr ! [input] size of scratch array integer lstv ! [input] size of any integral buffer double precision xyzi(3) ! [input] position of center i double precision expi(i_nprim) ! [input] exponents on i double precision coefi(i_nprim,i_ngen) ! [input] i coeffs double precision xyzj(3) ! [input] position of center j double precision expj(j_nprim) ! [input] exponents on j double precision coefj(j_nprim,j_ngen) ! [input] j coeffs double precision xyz(3,nat) ! [input] all atom positions double precision zan(nat) ! [input] charges on all atoms double precision exinv(nat) ! [input] inverse nuclear exponents double precision scr(lscr) ! [scratch] scratch buffers double precision S(lstv) ! [output] overlap integrals double precision T(lstv) ! [output] kinetic energy integrals double precision V(lstv) ! [output] potential integrals logical doS ! [input] compute overlap (True/False) logical doT ! [input] compute kinetic (True/False) logical doV ! [input] compute potential (True/False) logical canAB ! [input] compute only canonical ints (false only) logical dryrun ! [input] true means only compute required memory character*(*) msg ![input] calling func. identification message
computed | transformed | ||
order | order | ||
1 | (xs) | (xs) | |
2 | (ys) | (xx) | 2 5 |
3 | (zs) | (xy) | 3 9 |
4 | (xx) | (xz) | 4 2 |
5 | (xy) | (ys) | 5 3 |
6 | (xz) | (yx) | 6 4 |
7 | (yx) | (yy) | 7 6 |
8 | (yy) | (yz) | 8 7 |
9 | (yz) | (zs) | 9 8 |
10 | (zx) | (zx) | |
11 | (zy) | (zy) | |
12 | (zz) | (zz) |
Syntax:
subroutine int_1psp(block,num_blocks)
integer num_blocks ! [input] num. blocks to transform double precision block(12,num_blocks) ! [input/output] c. . . . . . . . . . . . . . . . . . . . . .! integral block
computed | transformed | ||
order | order | ||
1 | (xxs) | (xxs) | |
2 | (xys) | (xxx) | 2 5 |
3 | (xzs) | (xxy) | 3 9 |
4 | (yys) | (xxz) | 4 13 |
5 | (yzs) | (xys) | 5 17 |
6 | (zzs) | (xyx) | 6 21 |
7 | (xxx) | (xyy) | 7 2 |
8 | (xxy) | (xyz) | 8 3 |
9 | (xxz) | (xzs) | 9 4 |
10 | (xyx) | (xzx) | 10 6 |
11 | (xyy) | (xzy) | 11 7 |
12 | (xyz) | (xzz) | 12 8 |
13 | (xzx) | (yys) | 13 10 |
14 | (xzy) | (yyx) | 14 11 |
15 | (xzz) | (yyy) | 15 12 |
16 | (yyx) | (yyz) | 16 14 |
17 | (yyy) | (yzs) | 17 15 |
18 | (yyz) | (yzx) | 18 16 |
19 | (yzx) | (yzy) | 19 18 |
20 | (yzy) | (yzz) | 20 19 |
21 | (yzz) | (zzs) | 21 20 |
22 | (zzx) | (zzx) | |
23 | (zzy) | (zzy) | |
24 | (zzz) | (zzz) |
Syntax:
subroutine int_1dsp(block,num_blocks)
integer num_blocks ! [input] num. blocks to transform double precision block(24,num_blocks) ! [input/output] c . . . . . . . . . . . . . . . . . . . . . ! integral block
computed | transformed | ||
order | order | ||
1 | (ss) | (ss) | |
2 | (sx) | (sx) | |
3 | (sy) | (sy) | |
4 | (sz) | (sz) | |
5 | (xs) | (xs) | |
6 | (ys) | (xx) | 6 9 |
7 | (zs) | (xy) | 7 13 |
8 | (xx) | (xz) | 8 6 |
9 | (xy) | (ys) | 9 7 |
10 | (xz) | (yx) | 10 8 |
11 | (yx) | (yy) | 11 10 |
12 | (yy) | (yz) | 12 11 |
13 | (yz) | (zs) | 13 12 |
14 | (zx) | (zx) | |
15 | (zy) | (zy) | |
16 | (zz) | (zz) |
Syntax:
subroutine int_1spsp(block,num_blocks)
integer num_blocks ! [input] num. blocks to transform double precision block(16,num_blocks) ! [input/output] c . . . . . . . . . . . . . . . . . . . . . ! integral block
subroutine int_sp1a(sp_block,s_block,p_block,sizeb,num_blocks)
integer sizeb ! [input] size of non sp block integer num_blocks ! [input] num of blocks to transform * * . . . . . . . . . . . . . . .! [output] (sp|X) transformed integral block double precision sp_block(sizeb,1:4,num_blocks) * * . . . . . . . . . . . . . . . . . . . . . .! [input] computed (s|X) block double precision s_block(sizeb,num_blocks) * * . . . . . . . . . . . . . . . . . . . . . .! [input] computed (p|X) block double precision p_block(sizeb,2:4,num_blocks)
subroutine int_sp1b(sp_block,s_block,p_block,sizea,num_blocks)
integer sizea ! [input] size of non sp block integer num_blocks ! [input] num of blocks to transform * * . . . . . . . . . . . . . . .! [output] (X|sp) transformed integral block double precision sp_block(1:4,sizea,num_blocks) * * . . . . . . . . . . . . . . . . . . . . . .! [input] computed (X|s) block double precision s_block(sizea,num_blocks) * * . . . . . . . . . . . . . . . . . . . . . .! [input] computed (X|p) block double precision p_block(2:4,sizea,num_blocks)
Syntax:
integer function int_nint(ibasin,icnt,jbasin,jcnt, & kbasin,kcnt,lbasin,lcnt)
integer ibasin ! [input] basis set handle for icnt integer icnt ! [input] contraction index (e.g., ish) integer jbasin ! [input] basis set handle for jcnt integer jcnt ! [input] contraction index (e.g., jsh) integer kbasin ! [input] basis set handle for kcnt integer kcnt ! [input] contraction index (e.g., ksh) integer lbasin ! [input] basis set handle for lcnt integer lcnt ! [input] contraction index (e.g., lsh)
Syntax:
integer function int_unint(ibasin,icnt,jbasin,jcnt, & kbasin,kcnt,lbasin,lcnt)
integer ibasin ! [input] basis set handle for icnt integer icnt ! [input] unique contraction index (e.g., ish) integer jbasin ! [input] basis set handle for jcnt integer jcnt ! [input] unique contraction index (e.g., jsh) integer kbasin ! [input] basis set handle for kcnt integer kcnt ! [input] unique contraction index (e.g., ksh) integer lbasin ! [input] basis set handle for lcnt integer lcnt ! [input] unique contraction index (e.g., lsh)
Syntax:
integer function int_nint_cart(ibasin,icnt,jbasin,jcnt, & kbasin,kcnt,lbasin,lcnt)
integer ibasin ! [input] basis set handle for icnt integer icnt ! [input] contraction index (e.g., ish) integer jbasin ! [input] basis set handle for jcnt integer jcnt ! [input] contraction index (e.g., jsh) integer kbasin ! [input] basis set handle for kcnt integer kcnt ! [input] contraction index (e.g., ksh) integer lbasin ! [input] basis set handle for lcnt integer lcnt ! [input] contraction index (e.g., lsh)
Syntax:
integer function int_unint_cart(ibasin,icnt,jbasin,jcnt, & kbasin,kcnt,lbasin,lcnt)
integer ibasin ! [input] basis set handle for icnt integer icnt ! [input] unique contraction index (e.g., ish) integer jbasin ! [input] basis set handle for jcnt integer jcnt ! [input] unique contraction index (e.g., jsh) integer kbasin ! [input] basis set handle for kcnt integer kcnt ! [input] unique contraction index (e.g., ksh) integer lbasin ! [input] basis set handle for lcnt integer lcnt ! [input] unique contraction index (e.g., lsh)