From 15db04ceba1592947e60c2147eba0063b65291f5 Mon Sep 17 00:00:00 2001 From: Alex Thom Date: Mon, 19 Dec 2022 15:47:03 +0000 Subject: [PATCH 1/8] Modified KCCSD RHF to store all eris. --- pyscf/pbc/cc/kccsd_rhf.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyscf/pbc/cc/kccsd_rhf.py b/pyscf/pbc/cc/kccsd_rhf.py index 13503a12ba..3ff7860453 100644 --- a/pyscf/pbc/cc/kccsd_rhf.py +++ b/pyscf/pbc/cc/kccsd_rhf.py @@ -788,6 +788,9 @@ def __init__(self, cc, mo_coeff=None, method='incore'): #self.vvvv = np.empty((nkpts,nkpts,nkpts,nvir,nvir,nvir,nvir), dtype=dtype) self.vvvv = cc._scf.with_df.ao2mo_7d(orbv, factor=1./nkpts).transpose(0,2,1,3,5,4,6) + self.eri = np.empty( + (nkpts, nkpts, nkpts, nmo, nmo, nmo, nmo), dtype=dtype) + for (ikp,ikq,ikr) in khelper.symm_map.keys(): iks = kconserv[ikp,ikq,ikr] eri_kpt = fao2mo((mo_coeff[ikp],mo_coeff[ikq],mo_coeff[ikr],mo_coeff[iks]), @@ -803,6 +806,7 @@ def __init__(self, cc, mo_coeff=None, method='incore'): self.voov[kp, kr, kq] = eri_kpt_symm[nocc:, :nocc, :nocc, nocc:] / nkpts self.vovv[kp, kr, kq] = eri_kpt_symm[nocc:, :nocc, nocc:, nocc:] / nkpts #self.vvvv[kp, kr, kq] = eri_kpt_symm[nocc:, nocc:, nocc:, nocc:] / nkpts + self.eri[kp, kr, kq] = eri_kpt_symm/nkpts self.dtype = dtype else: From bd3015116ec90a75ff115bddb5a262a4fa9a204d Mon Sep 17 00:00:00 2001 From: Alex Thom Date: Mon, 19 Dec 2022 17:16:39 +0000 Subject: [PATCH 2/8] Added a PBC FCIDUMP routine in pbcfcidump. This dumps complex integrals from the pbc k-point code as well as exchange truncated integrals. Contributor List: Alex Thom Verena Neufeld David Kovacs Jiri Etrych --- pyscf/tools/pbcfcidump.py | 511 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 511 insertions(+) create mode 100644 pyscf/tools/pbcfcidump.py diff --git a/pyscf/tools/pbcfcidump.py b/pyscf/tools/pbcfcidump.py new file mode 100644 index 0000000000..d8a390e826 --- /dev/null +++ b/pyscf/tools/pbcfcidump.py @@ -0,0 +1,511 @@ +#!/usr/bin/env python +# Copyright 2014-2018 The PySCF Developers. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# Based on fcidump.py + +''' +FCIDUMP functions (write, read) for complex Hamiltonian for periodic systems + +'#P' indicates that these lines exist for parallelism. + +Based on fcidump.py, but with additional symmetry specification for k-point momentum +as used by HANDE. + +Currently just RHF and needs modified kccsd_rhf to store all eris. + +It also calculates modified exchange integrals using the truncated exchange +treatment which differ from the exchange using the bare Coulomb interaction. +These can be written in the same format as an FCIDUMP file, but without a header. + +''' +from functools import reduce +import copy +import numpy +import pyscf.pbc +from pyscf.pbc.lib import kpts_helper +from pyscf.pbc.kccsd_rhf import KRCCSD +try: # P + from mpi4py import MPI # P + mpi4py_avail = True # P +except ImportError: # P + mpi4py_avail = False # P + +# [todo] - allow read in from __config__, too. +DEFAULT_FLOAT_FORMAT = ' (%.16g,%.16g)' +TOL = 1e-10 +# [todo] - allow orbsyms? +MOLPRO_ORBSYM = False + + +def write_head(fout, nmo, nelec, ms, nprop, propbitlen, orbsym=None): + '''Write header of FCIDUMP file. + + Args: + fout : file + FCIDUMP file. + nmo : int + Number of (molecular) orbitals. + nelec : int or List of ints [todo] + Number of electrons. + ms : int + Overall spin. + nprop : List of int + Number of k points in each dimension. [todo] - check + propbitlen : int + Number of bits in an element of orbsym corresponding to + a dimension of k. It means that an element in orbsym + (which is an integer) can represent k (which is a list of + integers). If k is three dimensional, each third of the + bit representation of an element of orbsym belongs to an + an element of k. The lengths of this third, in number of + bits, is propbitlen. + [todo] - improve? HANDE has an example (by Charlie) + Kwargs: + orbsym : List of ints, optional + Integers labelling symmetry of the orbitals. If not + supplied, will assign label '1' to all orbitals, assigning + them the same symmetry. + ''' + if not isinstance(nelec, (int, numpy.number)): + ms = abs(nelec[0] - nelec[1]) + nelec = nelec[0] + nelec[1] + fout.write(' &FCI NORB=%4d,NELEC=%2d,MS2=%d,\n' % (nmo, nelec, ms)) + if orbsym is not None and len(orbsym) > 0: + fout.write(' ORBSYM=%s\n' % ','.join([str(x) for x in orbsym])) + else: + fout.write(' ORBSYM=%s\n' % ('1,' * (nmo-1) + '1')) + fout.write(' NPROP=%4d %4d %4d\n' % tuple(nprop)) + fout.write(' PROPBITLEN=%4d\n' % propbitlen) + fout.write(' ISYM=1,\n') + fout.write(' &END\n') + + +def write_eri(fout, eri, kconserv, tol=TOL, + float_format=DEFAULT_FLOAT_FORMAT): + '''Write electron repulsion integrals (ERIs) to FCIDUMP. + + Args: + fout : file + FCIDUMP file. + eri : numpy array + Contains ERIs divided by number of k points, with indices + [ka,kc,kb,a,c,b,d]. + kconserv : function + Pass in three k point indices and get fourth one where + overall momentum is conserved. + + Kwargs: + tol : float, optional + Below this value integral is not written to file. + The default is TOL. + float_format : str, optional + Format of integral for writing. + The default is DEFAULT_FLOAT_FORMAT. + ''' + output_format = float_format + ' %4d %4d %4d %4d\n' + nkpts = eri.oooo.shape[0] + no = eri.oooo.shape[3] + nv = eri.vvvv.shape[3] + nor = no+nv + for kp in range(nkpts): + for kq in range(nkpts): + for kr in range(nkpts): + ks = kconserv[kp, kq, kr] + # The documentation in pyscf/pbc/lib/kpts_helper.py in + # get_kconserv is inconsistent with the actual code (and + # physics). [k*(1) l(1) | m*(2) n(2)] = is the + # integral. kconserve gives n given klm, such that + # l-k=n-m (not k-l=n-m) + er = eri.eri + for i in range(er.shape[3]): + for j in range(er.shape[5]): + for k in range(er.shape[4]): + for l in range(er.shape[6]): + # Stored as [ka,kc,kb,a,c,b,d] <- (ab|cd) + v = er[kp, kr, kq, i, k, j, l] + if abs(v) > tol: + fout.write(output_format % ( + v.real, v.imag, nor*kp+i+1, nor*kq+j+1, + nor*kr+k+1, nor*ks+l+1)) + + +def write_exchange_integrals(fout, xints, ki, nkpts, nor, tol=TOL, + float_format=DEFAULT_FLOAT_FORMAT): + '''Write extra exchange electron repulsion integrals to FCIDUMP. + + Args: + fout : file + FCIDUMP file. + xints : numpy array, dim: (MO at k point, all MO, all MO) + extra exchange integrals _x + ki : int + k index for orb i in _x + nkpts : int + Number of k points + nor : int + Number of orbitals at a k point. + + Kwargs: + tol : float, optional + Below this value integral is not written to file. + The default is TOL. + float_format : str, optional + Format of integral for writing. + The default is DEFAULT_FLOAT_FORMAT. + ''' + output_format = float_format + ' %4d %4d %4d %4d\n' + for kj in range(nkpts): + for kk in range(nkpts): + for i in range(nor): + for j in range(nor): + for k in range(nor): + v = xints[i, kj*nor+j, kk*nor+k]/nkpts + if abs(v) > tol: + fout.write(output_format % ( + v.real, v.imag, nor*ki+i+1, nor*kj+j+1, + nor*kk+k+1, nor*ki+i+1)) + + +def write_hcore(fout, h, tol=TOL, float_format=DEFAULT_FLOAT_FORMAT): + '''Write the integrals to FCIDUMP file. + + Note that == 0 unless i and j are on the same k point. + + Args: + fout : file + FCIDUMP file + h : array with dimensions (nkpoints, nmo, nmo) [todo] - check + The integrals for each kpoint. + + Kwargs: + tol : float, optional + Below this value integral is not written to file. + The default is TOL. + float_format : str, optional + Format of integral for writing. + The default is DEFAULT_FLOAT_FORMAT. + ''' + # [todo] - is something like hk.reshape(nmo, nmo) required? + output_format = float_format + ' %4d %4d 0 0\n' + nmos = 1 + for hk in h: + nmo = hk.shape[0] + for i in range(nmo): + for j in range(0, i+1): + if abs(hk[i, j]) > tol: + fout.write(output_format % + (hk[i, j].real, hk[i, j].imag, i+nmos, j+nmos)) + nmos += nmo + + +def from_integrals(output, h1e, h2e, nmo, nelec, kconserv, nuc, ms, nprop, + npropbitlen, orbsym=None, tol=TOL, + float_format=DEFAULT_FLOAT_FORMAT): + '''Use passed in integrals to write integrals to FCIDUMP. + + Args: + output : str + Name of FCIDUMP file. + h1e : array with dimensions (nkpoints, nmo, nmo) [todo] - check + The integrals for each k point. + h2e : numpy array + Contains ERIs divided by number of k points, with indices + [ka,kc,kb,a,c,b,d]. + nmo : int + Number of (molecular) orbitals (sum over all kpoints). + nelec : int or List of ints [todo] + Number of electrons. + kconserv : function + Pass in three k point indices and get fourth one where + overall momentum is conserved. + + nuc : float + Constant, nuclear energy. Note that it is scaled by number + of k points. + ms : int + Overall spin. + nprop : List of int + Number of k points in each dimension. [todo] - check + propbitlen : int + Number of bits in an element of orbsym corresponding to + a dimension of k. It means that an element in orbsym + (which is an integer) can represent k (which is a list of + integers). If k is three dimensional, each third of the + bit representation of an element of orbsym belongs to an + an element of k. The lengths of this third, in number of + bits, is propbitlen. + [todo] - improve? HANDE has an example (by Charlie) + Kwargs: + orbsym : List of ints, optional + Integers labelling symmetry of the orbitals. + Default is None, in which case write_head function will + assign all orbitals the same symmetry, 1. + tol : float, optional + Below this value integral is not written to file. + The default is TOL. + float_format : str, optional + Format of integral for writing. + The default is DEFAULT_FLOAT_FORMAT. + ''' + with open(output, 'w') as fout: + write_head(fout, nmo, nelec, ms, nprop, npropbitlen, orbsym=orbsym) + write_eri(fout, h2e, kconserv, tol=tol, float_format=float_format) + write_hcore(fout, h1e, tol=tol, float_format=float_format) + output_format = float_format + ' 0 0 0 0\n' + fout.write(output_format % (nuc, 0)) + + +def _partition(part, rank, nmo, size, nkpts, ntot): # p + rem = nmo % size # p + dspls = [0]*(size+1) # p + for s in range(size): # p + if (rem != 0) and ((size - s) <= rem): # p + dspls[s+1] = dspls[s]+part+1 # p + else: # p + dspls[s+1] = dspls[s]+part # p + l = range(dspls[rank], dspls[rank+1]) # p + nar = len(l) # p + counts = [0]*size # p + for s in range(size+1): # p + dspls[s] = dspls[s]*2*ntot*ntot # p + for s in range(size): # p + counts[s] = dspls[s+1]-dspls[s] # p + dspls.pop(-1) # p + return nar, l, dspls, counts # p + + +def exchange_integrals(comm, mf, nmo, kconserv, fout, kstart, kpts): + '''Calculate _x exchange integrals. + + Args: + comm : MPI.COMM_WORLD or None + Needed for MPI parallelism. + mf : SCF calculation object + Stores SCF calculation results. + nmo : int + Number of molecular orbital on a k point. + kconserv : function + Pass in three k point indices and get fourth one where + overall momentum is conserved. + fout : file + FCIDUMP file + kstart : int + Next k point to calculation exchange integral for. + (Calculation can take time, so this means that this can be + split) + kpts : (nkpts, 3) ndarray of floats + Were found using cell.get_abs_kpts(scaled_kpts). + Absolute k-points in 1/Bohr. + [todo] + ''' + if comm == None: # P + rank = 0 + size = 1 + else: # P + rank = comm.Get_rank() # P + size = comm.Get_size() # P + nkpts = len(kpts) + ntot = nkpts*nmo + if nmo < size: + print("More processes than molecular orbitals") + part = nmo // size + nar, l, dspls, counts = _partition(part, rank, nmo, size, nkpts, ntot) + xints_p = numpy.ndarray((nar, ntot, ntot), dtype=complex) + xints_p.fill(0) + # We wish to calculate for all i,p,q. We do this by iterating over + # all possible orbitals i, and for each, create a density matrix. + # From this density we create an exchange potential (v_k(G)), which is evaluated at + # all G vectors. To form we calculate the codensity + # of p and q (again in G space), and integrate (sum) this with the exchange + # potential of i. i, p and q are different at each k-point, and so we need + # to loop over k-points for them too, with the proviso of momentum + # conservation, which is determined by the kconverv table. + for ik in range(kstart, nkpts): + for i in l: + occ = numpy.zeros(nmo) + occ[i] = 1 + occk = [numpy.zeros(nmo)]*nkpts + occk[ik] = occ # just occupy orbital i in kpoint ik + # According to docs, dm_kpts is a (nkpts, nao, nao) ndarray. + # dm_kpts is zero at all k points, except for k = ik case + # where its (nao, nao) sized element contains C^i_m C^{*i}_n + # entry at position mn. C^i_m is the coefficient MO i has + # at position m in AO space. (i, p, q are MO labels, m, n are + # AO labels here). + dm_kpts = mf.make_rdm1(mf.mo_coeff, occk) + # 0 => might not be hermitian + vk = mf.get_k(cell=None, dm_kpts=dm_kpts, hermi=0, kpts=kpts, + kpts_band=None, omega=None) + # NB that vk is the exchange potential of electron ik,i, expressed + # in the Bloch-AO basis and in general has components for all k + # values. + # [todo] - check: + # vk is related to K in equation 11 of + # McClain et al. JCTC, 2017, 13, 3, 1209–1218 but includes + # contracted molecular coefficients of ik, i. + for p in range(nmo): + for pk in range(nkpts): + for q in range(nmo): + # The documentation in pyscf/pbc/lib/kpts_helper.py in + # get_kconserv is inconsistent with the actual code + # (and physics). [k*(1) l(1) | m*(2) n(2)] = is + # the integral. kconserve gives n given klm, such that + # l-k=n-m (not k-l=n-m). + # Since we want (iq|pi) = = , we use the + # following lookup + # Might need to check the ordering of this! + # It's definitely elec1,elec1,elec2 but whether the + # result is bra or ket is uncertain + qk = kconserv[pk, ik, ik] + if (qk != pk): + print("Error in exchange integrals: k point ", + qk, "is matched to ", pk) + # [todo] - check order and einsum order here? + # dm_{mn} element is equal to C^{*p}_m C^q_n. + dm = numpy.outer( + mf.mo_coeff[pk].T[p].T.conj(), + mf.mo_coeff[qk].T[q]) + intgrl = numpy.einsum('ij,ij', dm, vk[pk]) + # nkpts needed for renormalization so integrals are for + # whole supercell not just unit cell + xints_p[i-l[0], qk*nmo+q, pk*nmo+p] = intgrl*nkpts + if comm == None: # P + xints = xints_p + else: # P + xints = numpy.ndarray(nmo*ntot*ntot, dtype=complex) # P + xints.fill(0) # P + comm.Gatherv([xints_p.flatten(), counts[rank], MPI.COMPLEX], # P + [xints, tuple(counts), tuple( + dspls), MPI.COMPLEX], # P + root=0) # P + if rank == 0: + xints = xints.reshape((nmo, ntot, ntot)) + write_exchange_integrals(fout, xints, ik, nkpts, nmo) + fout.flush() + + +def fcidump(fcid, mf, kgrid, scaled_kpts_in, MP, keep_exxdiv=False, resume=False, + parallel=None): + '''Dump constant term, orb energies, 1-e and 2-e integrals to file. + + Args: + fcid : str + Name of the file to write to. Exchange integrals will be + written to fcid_X, the rest to fcid. + mf : SCF calculation object + Stores SCF calculation results. + scaled_kpts_in : Numpy array of floats + Scaled k-points, i.e. (.5,.5,.5) is at the very corner of + the BZ. + MP : bool + True if the grid used is a Monkhorst-Pack grid. + Kwargs: + keep_exxdiv : bool + If True, keep exxdiv treatment used for SCF calculation + when evaluating two electron integrals. + [todo] - check! Should this be an option? + The default is False. + resume : bool + If True, the program will check for existing fcid_X file + and resume the dumping of X integrals. + The default is False. + parallel : bool + If True, MPI parallelization will be used. + The default is False. + ''' + + if parallel: # P + if not mpi4py_avail: # P + raise ImportError("Chosen parallel but mpi4py not available!") # P + comm = MPI.COMM_WORLD # P + else: # P + comm = None # P + # scaled_kpts will be modified later so make copy. + # [todo] - more deepcopying needed? + scaled_kpts = copy.deepcopy(scaled_kpts_in) + dummy_cc = KRCCSD(mf) + # If keep_exxdiv, keeping exxdiv used in scf calculation. + dummy_cc.keep_exxdiv = keep_exxdiv + nprop = list(kgrid) + + if comm == None: # P + rank = 0 + else: # P + rank = comm.Get_rank() # P + kconserv = dummy_cc.khelper.kconserv + nmo = len(mf.mo_coeff[0]) + fx = None + kstart = None + if rank == 0: + if resume: + fx = open(fcid+"_X", 'r') + lines = fx.readlines() + line = lines[-1].split() + kstart = (int(line[1])-1)/nmo + 1 + print("Resuming dumping, starting at k point " + str(kstart)) + fx.close() + fx = open(fcid+"_X", 'a') + else: + fx = open(fcid+"_X", 'w') + kstart = 0 + if comm != None: + kstart = comm.bcast(kstart, root=0) + exchange_integrals(comm, mf, nmo, kconserv, fx, kstart, mf.kpts) + if rank == 0: + fx.close() + # MP meshes with an even number of points in a dimension do not contain + # the Gamma point. + # Unfortunately this is not compatible with some symmetry + # specifications, so if we multiply that dimension's kpoint grid by 2, + # we get a grid which can contain both the MP mesh and the Gamma point + # (even though we don't have any actual orbitals calculated at the + # gamma point). + if MP: + for i in range(3): + if nprop[i] % 2 == 0: + nprop[i] *= 2 + npropbitlen = 8 + for i, nk in enumerate(nprop): + for j in range(scaled_kpts.shape[0]): + scaled_kpts[j, i] = int(round(scaled_kpts[j, i]*nk)) % nk + kps = len(mf.mo_coeff) + # For each k-point, get the G-space core hamiltonian, and transform it + # into the molecular orbital basis. + # Different k-points don't couple. + # h1es will contain a list with an MOxMO matrix for each k-point. + h1es = [reduce(numpy.dot, + (numpy.asarray(mf.mo_coeff)[k].T.conj(), + mf.get_hcore()[k], numpy.asarray(mf.mo_coeff)[k])) + for k in range(kps)] + eris = dummy_cc.ao2mo() + nel = sum(sum(mf.mo_occ)) + orbsym = [] + propsc = 2**npropbitlen + for k in range(kps): + n = scaled_kpts[k, 0]+propsc*scaled_kpts[k, 1] + \ + propsc*propsc*scaled_kpts[k, 2] + orbsym += [int(n)]*nmo + nkpts = kgrid[0]*kgrid[1]*kgrid[2] + from_integrals(fcid, h1es, eris, kps*nmo, nel, kconserv, + nkpts*mf.mol.energy_nuc(), 0, nprop, npropbitlen, + orbsym=orbsym) + # Write orbital energies to fcid file, too. + f = open(fcid, 'a') + n = 0 + for k in range(kps): + for e in mf.mo_energy[k]: + n += 1 + f.write(' (%.16g,%.16g) %4d %4d %4d %4d\n' % + (e.real, e.imag, n, 0, 0, 0)) + f.close() From 80b30c0be69bd10d6292b847687b7c6a5af6d9ed Mon Sep 17 00:00:00 2001 From: Alex Thom Date: Mon, 19 Dec 2022 17:43:46 +0000 Subject: [PATCH 3/8] Added Tests for PBC FCIDUMP routine. Contributor List: Verena Neufeld Alex Thom David Kovacs Jiri Etrych --- pyscf/tools/test/pbcfcidump/FCIDUMP_e | 429 +++++++++++++++++ pyscf/tools/test/pbcfcidump/FCIDUMP_e_X | 68 +++ pyscf/tools/test/pbcfcidump/FCIDUMP_no | 430 ++++++++++++++++++ pyscf/tools/test/pbcfcidump/FCIDUMP_no_X | 68 +++ pyscf/tools/test/pbcfcidump/FCIDUMP_v | 429 +++++++++++++++++ pyscf/tools/test/pbcfcidump/FCIDUMP_v_X | 68 +++ .../test/pbcfcidump/helpers/ase_and_cell.py | 161 +++++++ pyscf/tools/test/pbcfcidump/helpers/scf.py | 99 ++++ .../test/pbcfcidump/test_ewald_pbcfcidump.py | 90 ++++ .../pbcfcidump/test_noexxdiv_pbcfcidump.py | 90 ++++ .../tools/test/pbcfcidump/test_pbcfcidump.py | 90 ++++ 11 files changed, 2022 insertions(+) create mode 100644 pyscf/tools/test/pbcfcidump/FCIDUMP_e create mode 100644 pyscf/tools/test/pbcfcidump/FCIDUMP_e_X create mode 100644 pyscf/tools/test/pbcfcidump/FCIDUMP_no create mode 100644 pyscf/tools/test/pbcfcidump/FCIDUMP_no_X create mode 100644 pyscf/tools/test/pbcfcidump/FCIDUMP_v create mode 100644 pyscf/tools/test/pbcfcidump/FCIDUMP_v_X create mode 100644 pyscf/tools/test/pbcfcidump/helpers/ase_and_cell.py create mode 100644 pyscf/tools/test/pbcfcidump/helpers/scf.py create mode 100644 pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py create mode 100644 pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py create mode 100644 pyscf/tools/test/pbcfcidump/test_pbcfcidump.py diff --git a/pyscf/tools/test/pbcfcidump/FCIDUMP_e b/pyscf/tools/test/pbcfcidump/FCIDUMP_e new file mode 100644 index 0000000000..e9c140e830 --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/FCIDUMP_e @@ -0,0 +1,429 @@ + &FCI NORB= 6,NELEC= 6,MS2=0, + ORBSYM=2,2,0,0,1,1 + NPROP= 3 1 1 + PROPBITLEN= 8 + ISYM=1, + &END + (0.08275895953894734,1.465071500639822e-17) 1 1 1 1 + (-3.371975534583367e-06,0.0005267031445051394) 1 1 1 2 + (-3.371975534578742e-06,-0.0005267031445051089) 1 1 2 1 + (0.0857635884268393,2.366595854446556e-17) 1 1 2 2 + (-3.371975534604184e-06,0.0005267031445050827) 1 2 1 1 + (0.08119933447102091,0.001039736169075694) 1 2 1 2 + (0.08122941288724117,-3.366673621020092e-18) 1 2 2 1 + (-3.088156049185775e-06,0.0004823605519339899) 1 2 2 2 + (-3.371975534604184e-06,-0.0005267031445051462) 2 1 1 1 + (0.08122941288724118,-4.223870963641444e-18) 2 1 1 2 + (0.0811993344710209,-0.001039736169075702) 2 1 2 1 + (-3.088156049185775e-06,-0.0004823605519340735) 2 1 2 2 + (0.08576358842683934,2.387378547858571e-17) 2 2 1 1 + (-3.088156049523468e-06,0.0004823605519340466) 2 2 1 2 + (-3.088156049523468e-06,-0.0004823605519340172) 2 2 2 1 + (0.09023201953722883,3.45744435731748e-17) 2 2 2 2 + (0.08186882672938636,1.442848517280374e-17) 1 1 3 3 + (0.08691694141975881,2.433654799214425e-17) 1 1 4 4 + (-3.266396902172899e-06,0.0005102114624912486) 1 2 3 3 + (-0.08135185291379635,-0.0005208232160243845) 1 2 3 4 + (-0.08135185291379635,-0.0005208232160243812) 1 2 4 3 + (-3.211962137967395e-06,0.0005016993377192945) 1 2 4 4 + (-3.266396902179847e-06,-0.0005102114624912213) 2 1 3 3 + (-0.08135185291379637,0.000520823216024388) 2 1 3 4 + (-0.08135185291379637,0.0005208232160243912) 2 1 4 3 + (-3.211962137981277e-06,-0.0005016993377192629) 2 1 4 4 + (0.08489761993057643,2.348673281230888e-17) 2 2 3 3 + (0.09138587814448645,3.501839604398062e-17) 2 2 4 4 + (0.08275895953894734,1.465071500639824e-17) 1 1 5 5 + (-3.371975534609677e-06,-0.0005267031445051457) 1 1 5 6 + (-3.371975534609677e-06,0.0005267031445050823) 1 1 6 5 + (0.08576358842683934,2.387378547858569e-17) 1 1 6 6 + (-3.371975534622399e-06,0.0005267031445051391) 1 2 5 5 + (0.08122941288724117,-8.673617379884035e-19) 1 2 5 6 + (0.0811993344710209,0.001039736169075691) 1 2 6 5 + (-3.088156049477209e-06,0.000482360551934047) 1 2 6 6 + (-3.37197553462847e-06,-0.0005267031445051085) 2 1 5 5 + (0.0811993344710209,-0.001039736169075699) 2 1 5 6 + (0.08122941288724117,-6.740123505618219e-18) 2 1 6 5 + (-3.088156049477787e-06,-0.0004823605519340174) 2 1 6 6 + (0.08576358842683932,2.366595854446559e-17) 2 2 5 5 + (-3.088156049178547e-06,-0.0004823605519340723) 2 2 5 6 + (-3.088156049178547e-06,0.0004823605519339886) 2 2 6 5 + (0.09023201953722884,3.457444357317476e-17) 2 2 6 6 + (0.1642415730962854,0.01352459601505456) 1 3 1 5 + (0.002740965872878216,-0.03611112912458081) 1 3 1 6 + (0.002740965872878119,-0.03611112912458081) 1 3 2 5 + (0.1660921352346139,0.01153804987121997) 1 3 2 6 + (0.001420877286735141,-0.01725501654708607) 1 4 1 5 + (-0.1008120662452946,-0.007652001911191972) 1 4 1 6 + (-0.1008120662452946,-0.007652001911191961) 1 4 2 5 + (0.001159170033474437,-0.01668644373822345) 1 4 2 6 + (-0.001283501636476845,0.01690962148411863) 2 3 1 5 + (0.1002996619382167,0.00696759360576638) 2 3 1 6 + (0.1002996619382167,0.006967593605766366) 2 3 2 5 + (-0.001034856560399773,0.01641648939791424) 2 3 2 6 + (-0.1667362475440805,-0.01265588664461078) 2 4 1 5 + (-0.002551584849196061,0.03673048633435461) 2 4 1 6 + (-0.002551584849195885,0.03673048633435462) 2 4 2 5 + (-0.1699842813852259,-0.0107154055415295) 2 4 2 6 + (0.1666480809325349,-1.757853122323164e-16) 1 3 3 1 + (0.0001521849665186911,-0.02377107177035508) 1 3 3 2 + (-4.269113534904889e-11,0.02413540930010938) 1 3 4 1 + (-0.1690841529684474,-0.001082494752349716) 1 3 4 2 + (-4.268937518296193e-11,-0.02413540930010939) 1 4 3 1 + (-0.09938019931255089,-0.0006362426065355288) 1 4 3 2 + (0.09993765443151892,6.129356281784718e-17) 1 4 4 1 + (-0.0001569425731042887,0.02451420338852076) 1 4 4 2 + (0.0001521849665171761,0.02377107177035481) 2 3 3 1 + (0.09886571227659322,8.847089727481716e-17) 2 3 3 2 + (-0.09938019931255038,0.0006362426065354206) 2 3 4 1 + (4.130351153689796e-11,-0.02416049332638103) 2 3 4 2 + (-0.1690841529684424,0.001082494752349719) 2 4 3 1 + (4.130307669954665e-11,0.02416049332638114) 2 4 3 2 + (-0.0001569425731059494,-0.02451420338852095) 2 4 4 1 + (0.1729848332436395,-2.301399811462564e-16) 2 4 4 2 + (0.1666480809325349,2.312964634635742e-16) 1 3 5 3 + (-4.268934742738632e-11,0.02413540930010943) 1 3 5 4 + (0.0001521849665172548,-0.02377107177035485) 1 3 6 3 + (-0.1690841529684424,-0.001082494752349769) 1 3 6 4 + (-4.269109140272083e-11,-0.02413540930010937) 1 4 5 3 + (0.09993765443151889,-2.023844055306275e-17) 1 4 5 4 + (-0.09938019931255035,-0.0006362426065354478) 1 4 6 3 + (-0.0001569425731059032,0.02451420338852092) 1 4 6 4 + (0.0001521849665186634,0.02377107177035506) 2 3 5 3 + (-0.09938019931255089,0.0006362426065355004) 2 3 5 4 + (0.09886571227659324,-7.343662714968483e-17) 2 3 6 3 + (4.130304894397104e-11,-0.02416049332638112) 2 3 6 4 + (-0.1690841529684475,0.001082494752349659) 2 4 5 3 + (-0.0001569425731043211,-0.0245142033885208) 2 4 5 4 + (4.130346527760527e-11,0.02416049332638109) 2 4 6 3 + (0.1729848332436395,2.810252031082427e-16) 2 4 6 4 + (0.1642415730962854,0.01352459601505456) 1 5 1 3 + (0.001420877286735141,-0.01725501654708607) 1 5 1 4 + (-0.001283501636476845,0.01690962148411863) 1 5 2 3 + (-0.1667362475440805,-0.01265588664461078) 1 5 2 4 + (0.002740965872878216,-0.03611112912458081) 1 6 1 3 + (-0.1008120662452946,-0.007652001911191972) 1 6 1 4 + (0.1002996619382167,0.00696759360576638) 1 6 2 3 + (-0.002551584849196061,0.03673048633435461) 1 6 2 4 + (0.002740965872878119,-0.03611112912458081) 2 5 1 3 + (-0.1008120662452946,-0.007652001911191961) 2 5 1 4 + (0.1002996619382167,0.006967593605766366) 2 5 2 3 + (-0.002551584849195885,0.03673048633435462) 2 5 2 4 + (0.1660921352346139,0.01153804987121997) 2 6 1 3 + (0.001159170033474437,-0.01668644373822345) 2 6 1 4 + (-0.001034856560399773,0.01641648939791424) 2 6 2 3 + (-0.1699842813852259,-0.0107154055415295) 2 6 2 4 + (0.1642415730962911,0.01352459601505497) 1 5 3 5 + (-0.001283501636479771,0.01690962148411855) 1 5 3 6 + (0.001420877286734724,-0.01725501654708567) 1 5 4 5 + (-0.1667362475440782,-0.01265588664461063) 1 5 4 6 + (0.00274096587287922,-0.03611112912458037) 1 6 3 5 + (0.1002996619382163,0.006967593605767186) 1 6 3 6 + (-0.1008120662452977,-0.007652001911192224) 1 6 4 5 + (-0.002551584849196964,0.03673048633435577) 1 6 4 6 + (0.002740965872879125,-0.03611112912458038) 2 5 3 5 + (0.1002996619382163,0.006967593605767174) 2 5 3 6 + (-0.1008120662452977,-0.007652001911192212) 2 5 4 5 + (-0.002551584849196866,0.03673048633435577) 2 5 4 6 + (0.1660921352346177,0.01153804987122043) 2 6 3 5 + (-0.001034856560402925,0.01641648939791467) 2 6 3 6 + (0.001159170033474595,-0.01668644373822351) 2 6 4 5 + (-0.1699842813852253,-0.01071540554153011) 2 6 4 6 + (0.163437654670497,-3.758567531283082e-16) 1 5 5 1 + (-0.0001874765596078474,0.02928358128562302) 1 5 5 2 + (-0.0001874765596077456,0.02928358128562303) 1 5 6 1 + (0.1651121813559024,0.00211421812861626) 1 5 6 2 + (-0.0001874765596078058,-0.02928358128562296) 1 6 5 1 + (0.1031559566237453,1.630640067418199e-16) 1 6 5 2 + (0.1031559566237453,1.410908427127803e-16) 1 6 6 1 + (0.000185036774497771,-0.02890249013045635) 1 6 6 2 + (-0.0001874765596078983,-0.02928358128562295) 2 5 5 1 + (0.1031559566237453,1.445602896647339e-16) 2 5 5 2 + (0.1031559566237453,1.202741610010586e-16) 2 5 6 1 + (0.00018503677449766,-0.02890249013045636) 2 5 6 2 + (0.1651121813559028,-0.002114218128616932) 2 6 5 1 + (0.0001850367744975674,0.0289024901304571) 2 6 5 2 + (0.0001850367744976415,0.02890249013045711) 2 6 6 1 + (0.168299303061007,1.272130549049658e-16) 2 6 6 2 + (0.1666480809325349,-1.757853122323164e-16) 3 1 1 3 + (-4.268937518296193e-11,-0.02413540930010939) 3 1 1 4 + (0.0001521849665171761,0.02377107177035481) 3 1 2 3 + (-0.1690841529684424,0.001082494752349719) 3 1 2 4 + (0.0001521849665186911,-0.02377107177035508) 3 2 1 3 + (-0.09938019931255089,-0.0006362426065355288) 3 2 1 4 + (0.09886571227659322,8.847089727481716e-17) 3 2 2 3 + (4.130307669954665e-11,0.02416049332638114) 3 2 2 4 + (-4.269113534904889e-11,0.02413540930010938) 4 1 1 3 + (0.09993765443151892,6.129356281784718e-17) 4 1 1 4 + (-0.09938019931255038,0.0006362426065354206) 4 1 2 3 + (-0.0001569425731059494,-0.02451420338852095) 4 1 2 4 + (-0.1690841529684474,-0.001082494752349716) 4 2 1 3 + (-0.0001569425731042887,0.02451420338852076) 4 2 1 4 + (4.130351153689796e-11,-0.02416049332638103) 4 2 2 3 + (0.1729848332436395,-2.301399811462564e-16) 4 2 2 4 + (0.1666480809325349,-2.312964634635742e-16) 3 1 3 5 + (0.0001521849665172548,0.02377107177035485) 3 1 3 6 + (-4.268934742738632e-11,-0.02413540930010943) 3 1 4 5 + (-0.1690841529684424,0.001082494752349769) 3 1 4 6 + (0.0001521849665186634,-0.02377107177035506) 3 2 3 5 + (0.09886571227659324,7.343662714968483e-17) 3 2 3 6 + (-0.09938019931255089,-0.0006362426065355004) 3 2 4 5 + (4.130304894397104e-11,0.02416049332638112) 3 2 4 6 + (-4.269109140272083e-11,0.02413540930010937) 4 1 3 5 + (-0.09938019931255035,0.0006362426065354478) 4 1 3 6 + (0.09993765443151889,2.023844055306275e-17) 4 1 4 5 + (-0.0001569425731059032,-0.02451420338852092) 4 1 4 6 + (-0.1690841529684475,-0.001082494752349659) 4 2 3 5 + (4.130346527760527e-11,-0.02416049332638109) 4 2 3 6 + (-0.0001569425731043211,0.0245142033885208) 4 2 4 5 + (0.1729848332436395,-2.810252031082427e-16) 4 2 4 6 + (0.1642415730962854,-0.01352459601505456) 3 1 5 1 + (0.002740965872878119,0.03611112912458081) 3 1 5 2 + (0.002740965872878216,0.03611112912458081) 3 1 6 1 + (0.1660921352346139,-0.01153804987121997) 3 1 6 2 + (-0.001283501636476845,-0.01690962148411863) 3 2 5 1 + (0.1002996619382167,-0.006967593605766366) 3 2 5 2 + (0.1002996619382167,-0.00696759360576638) 3 2 6 1 + (-0.001034856560399773,-0.01641648939791424) 3 2 6 2 + (0.001420877286735141,0.01725501654708607) 4 1 5 1 + (-0.1008120662452946,0.007652001911191961) 4 1 5 2 + (-0.1008120662452946,0.007652001911191972) 4 1 6 1 + (0.001159170033474437,0.01668644373822345) 4 1 6 2 + (-0.1667362475440805,0.01265588664461078) 4 2 5 1 + (-0.002551584849195885,-0.03673048633435462) 4 2 5 2 + (-0.002551584849196061,-0.03673048633435461) 4 2 6 1 + (-0.1699842813852259,0.0107154055415295) 4 2 6 2 + (0.08186882672938636,1.442848517280374e-17) 3 3 1 1 + (-3.266396902172899e-06,0.0005102114624912486) 3 3 1 2 + (-3.266396902179847e-06,-0.0005102114624912213) 3 3 2 1 + (0.08489761993057643,2.348673281230888e-17) 3 3 2 2 + (-0.08135185291379635,-0.0005208232160243845) 3 4 1 2 + (-0.08135185291379637,0.000520823216024388) 3 4 2 1 + (-0.08135185291379635,-0.0005208232160243812) 4 3 1 2 + (-0.08135185291379637,0.0005208232160243912) 4 3 2 1 + (0.08691694141975881,2.433654799214425e-17) 4 4 1 1 + (-3.211962137967395e-06,0.0005016993377192945) 4 4 1 2 + (-3.211962137981277e-06,-0.0005016993377192629) 4 4 2 1 + (0.09138587814448645,3.501839604398062e-17) 4 4 2 2 + (0.08100304986196925,1.434281133811026e-17) 3 3 3 3 + (0.08602156026990949,2.382230364618455e-17) 3 3 4 4 + (0.08148956550829194,5.220430996603432e-18) 3 4 3 4 + (0.08148956550829194,-6.236707114043988e-19) 3 4 4 3 + (0.08148956550829194,-5.032404847013116e-18) 4 3 3 4 + (0.08148956550829194,-1.087650655502041e-17) 4 3 4 3 + (0.08602156026990804,2.400731978549556e-17) 4 4 3 3 + (0.09257586830486694,3.577705756674029e-17) 4 4 4 4 + (0.08186882672938667,1.455721452200576e-17) 3 3 5 5 + (-3.266396902262825e-06,-0.0005102114624912641) 3 3 5 6 + (-3.266396902262825e-06,0.000510211462491203) 3 3 6 5 + (0.08489761993057748,2.355874656093445e-17) 3 3 6 6 + (-0.08135185291379582,0.0005208232160243975) 3 4 5 6 + (-0.08135185291379582,-0.0005208232160243951) 3 4 6 5 + (-0.08135185291379582,0.0005208232160244019) 4 3 5 6 + (-0.08135185291379582,-0.0005208232160243908) 4 3 6 5 + (0.08691694141975966,2.401658534005428e-17) 4 4 5 5 + (-3.211962140495239e-06,-0.0005016993377193089) 4 4 5 6 + (-3.211962140495239e-06,0.0005016993377192232) 4 4 6 5 + (0.09138587814448826,3.530670596994207e-17) 4 4 6 6 + (0.1642415730962911,0.01352459601505497) 3 5 1 5 + (0.00274096587287922,-0.03611112912458037) 3 5 1 6 + (0.002740965872879125,-0.03611112912458038) 3 5 2 5 + (0.1660921352346177,0.01153804987122043) 3 5 2 6 + (-0.001283501636479771,0.01690962148411855) 3 6 1 5 + (0.1002996619382163,0.006967593605767186) 3 6 1 6 + (0.1002996619382163,0.006967593605767174) 3 6 2 5 + (-0.001034856560402925,0.01641648939791467) 3 6 2 6 + (0.001420877286734724,-0.01725501654708567) 4 5 1 5 + (-0.1008120662452977,-0.007652001911192224) 4 5 1 6 + (-0.1008120662452977,-0.007652001911192212) 4 5 2 5 + (0.001159170033474595,-0.01668644373822351) 4 5 2 6 + (-0.1667362475440782,-0.01265588664461063) 4 6 1 5 + (-0.002551584849196964,0.03673048633435577) 4 6 1 6 + (-0.002551584849196866,0.03673048633435577) 4 6 2 5 + (-0.1699842813852253,-0.01071540554153011) 4 6 2 6 + (0.1666480809325349,-2.312964634635742e-16) 3 5 3 1 + (0.0001521849665186634,-0.02377107177035506) 3 5 3 2 + (-4.269109140272083e-11,0.02413540930010937) 3 5 4 1 + (-0.1690841529684475,-0.001082494752349659) 3 5 4 2 + (0.0001521849665172548,0.02377107177035485) 3 6 3 1 + (0.09886571227659324,7.343662714968483e-17) 3 6 3 2 + (-0.09938019931255035,0.0006362426065354478) 3 6 4 1 + (4.130346527760527e-11,-0.02416049332638109) 3 6 4 2 + (-4.268934742738632e-11,-0.02413540930010943) 4 5 3 1 + (-0.09938019931255089,-0.0006362426065355004) 4 5 3 2 + (0.09993765443151889,2.023844055306275e-17) 4 5 4 1 + (-0.0001569425731043211,0.0245142033885208) 4 5 4 2 + (-0.1690841529684424,0.001082494752349769) 4 6 3 1 + (4.130304894397104e-11,0.02416049332638112) 4 6 3 2 + (-0.0001569425731059032,-0.02451420338852092) 4 6 4 1 + (0.1729848332436395,-2.810252031082427e-16) 4 6 4 2 + (0.1666480809325349,-1.838806884535416e-16) 3 5 5 3 + (-4.269103126564033e-11,0.02413540930010941) 3 5 5 4 + (0.0001521849665187096,-0.02377107177035512) 3 5 6 3 + (-0.1690841529684474,-0.001082494752349708) 3 5 6 4 + (0.0001521849665172224,0.02377107177035482) 3 6 5 3 + (-0.09938019931255038,0.0006362426065354044) 3 6 5 4 + (0.09886571227659322,1.07552855510562e-16) 3 6 6 3 + (4.130342364424185e-11,-0.02416049332638107) 3 6 6 4 + (-4.268931504588143e-11,-0.02413540930010941) 4 5 5 3 + (0.09993765443151889,5.84023570245525e-17) 4 5 5 4 + (-0.09938019931255093,-0.0006362426065355212) 4 5 6 3 + (-0.0001569425731043026,0.02451420338852077) 4 5 6 4 + (-0.1690841529684424,0.001082494752349716) 4 6 5 3 + (-0.000156942573105968,-0.02451420338852098) 4 6 5 4 + (4.130300268467835e-11,0.02416049332638118) 4 6 6 3 + (0.1729848332436395,-2.344767898361984e-16) 4 6 6 4 + (0.163437654670497,-3.758567531283082e-16) 5 1 1 5 + (-0.0001874765596078058,-0.02928358128562296) 5 1 1 6 + (-0.0001874765596078983,-0.02928358128562295) 5 1 2 5 + (0.1651121813559028,-0.002114218128616932) 5 1 2 6 + (-0.0001874765596078474,0.02928358128562302) 5 2 1 5 + (0.1031559566237453,1.630640067418199e-16) 5 2 1 6 + (0.1031559566237453,1.445602896647339e-16) 5 2 2 5 + (0.0001850367744975674,0.0289024901304571) 5 2 2 6 + (-0.0001874765596077456,0.02928358128562303) 6 1 1 5 + (0.1031559566237453,1.410908427127803e-16) 6 1 1 6 + (0.1031559566237453,1.202741610010586e-16) 6 1 2 5 + (0.0001850367744976415,0.02890249013045711) 6 1 2 6 + (0.1651121813559024,0.00211421812861626) 6 2 1 5 + (0.000185036774497771,-0.02890249013045635) 6 2 1 6 + (0.00018503677449766,-0.02890249013045636) 6 2 2 5 + (0.168299303061007,1.272130549049658e-16) 6 2 2 6 + (0.1642415730962854,-0.01352459601505456) 5 1 3 1 + (-0.001283501636476845,-0.01690962148411863) 5 1 3 2 + (0.001420877286735141,0.01725501654708607) 5 1 4 1 + (-0.1667362475440805,0.01265588664461078) 5 1 4 2 + (0.002740965872878119,0.03611112912458081) 5 2 3 1 + (0.1002996619382167,-0.006967593605766366) 5 2 3 2 + (-0.1008120662452946,0.007652001911191961) 5 2 4 1 + (-0.002551584849195885,-0.03673048633435462) 5 2 4 2 + (0.002740965872878216,0.03611112912458081) 6 1 3 1 + (0.1002996619382167,-0.00696759360576638) 6 1 3 2 + (-0.1008120662452946,0.007652001911191972) 6 1 4 1 + (-0.002551584849196061,-0.03673048633435461) 6 1 4 2 + (0.1660921352346139,-0.01153804987121997) 6 2 3 1 + (-0.001034856560399773,-0.01641648939791424) 6 2 3 2 + (0.001159170033474437,0.01668644373822345) 6 2 4 1 + (-0.1699842813852259,0.0107154055415295) 6 2 4 2 + (0.1642415730962911,-0.01352459601505497) 5 1 5 3 + (0.001420877286734724,0.01725501654708567) 5 1 5 4 + (-0.001283501636479771,-0.01690962148411855) 5 1 6 3 + (-0.1667362475440782,0.01265588664461063) 5 1 6 4 + (0.002740965872879125,0.03611112912458038) 5 2 5 3 + (-0.1008120662452977,0.007652001911192212) 5 2 5 4 + (0.1002996619382163,-0.006967593605767174) 5 2 6 3 + (-0.002551584849196866,-0.03673048633435577) 5 2 6 4 + (0.00274096587287922,0.03611112912458037) 6 1 5 3 + (-0.1008120662452977,0.007652001911192224) 6 1 5 4 + (0.1002996619382163,-0.006967593605767186) 6 1 6 3 + (-0.002551584849196964,-0.03673048633435577) 6 1 6 4 + (0.1660921352346177,-0.01153804987122043) 6 2 5 3 + (0.001159170033474595,0.01668644373822351) 6 2 5 4 + (-0.001034856560402925,-0.01641648939791467) 6 2 6 3 + (-0.1699842813852253,0.01071540554153011) 6 2 6 4 + (0.1666480809325349,2.312964634635742e-16) 5 3 1 3 + (-4.269109140272083e-11,-0.02413540930010937) 5 3 1 4 + (0.0001521849665186634,0.02377107177035506) 5 3 2 3 + (-0.1690841529684475,0.001082494752349659) 5 3 2 4 + (-4.268934742738632e-11,0.02413540930010943) 5 4 1 3 + (0.09993765443151889,-2.023844055306275e-17) 5 4 1 4 + (-0.09938019931255089,0.0006362426065355004) 5 4 2 3 + (-0.0001569425731043211,-0.0245142033885208) 5 4 2 4 + (0.0001521849665172548,-0.02377107177035485) 6 3 1 3 + (-0.09938019931255035,-0.0006362426065354478) 6 3 1 4 + (0.09886571227659324,-7.343662714968483e-17) 6 3 2 3 + (4.130346527760527e-11,0.02416049332638109) 6 3 2 4 + (-0.1690841529684424,-0.001082494752349769) 6 4 1 3 + (-0.0001569425731059032,0.02451420338852092) 6 4 1 4 + (4.130304894397104e-11,-0.02416049332638112) 6 4 2 3 + (0.1729848332436395,2.810252031082427e-16) 6 4 2 4 + (0.1666480809325349,-1.838806884535416e-16) 5 3 3 5 + (0.0001521849665172224,0.02377107177035482) 5 3 3 6 + (-4.268931504588143e-11,-0.02413540930010941) 5 3 4 5 + (-0.1690841529684424,0.001082494752349716) 5 3 4 6 + (-4.269103126564033e-11,0.02413540930010941) 5 4 3 5 + (-0.09938019931255038,0.0006362426065354044) 5 4 3 6 + (0.09993765443151889,5.84023570245525e-17) 5 4 4 5 + (-0.000156942573105968,-0.02451420338852098) 5 4 4 6 + (0.0001521849665187096,-0.02377107177035512) 6 3 3 5 + (0.09886571227659322,1.07552855510562e-16) 6 3 3 6 + (-0.09938019931255093,-0.0006362426065355212) 6 3 4 5 + (4.130300268467835e-11,0.02416049332638118) 6 3 4 6 + (-0.1690841529684474,-0.001082494752349708) 6 4 3 5 + (4.130342364424185e-11,-0.02416049332638107) 6 4 3 6 + (-0.0001569425731043026,0.02451420338852077) 6 4 4 5 + (0.1729848332436395,-2.344767898361984e-16) 6 4 4 6 + (0.1642415730962911,-0.01352459601505497) 5 3 5 1 + (0.002740965872879125,0.03611112912458038) 5 3 5 2 + (0.00274096587287922,0.03611112912458037) 5 3 6 1 + (0.1660921352346177,-0.01153804987122043) 5 3 6 2 + (0.001420877286734724,0.01725501654708567) 5 4 5 1 + (-0.1008120662452977,0.007652001911192212) 5 4 5 2 + (-0.1008120662452977,0.007652001911192224) 5 4 6 1 + (0.001159170033474595,0.01668644373822351) 5 4 6 2 + (-0.001283501636479771,-0.01690962148411855) 6 3 5 1 + (0.1002996619382163,-0.006967593605767174) 6 3 5 2 + (0.1002996619382163,-0.006967593605767186) 6 3 6 1 + (-0.001034856560402925,-0.01641648939791467) 6 3 6 2 + (-0.1667362475440782,0.01265588664461063) 6 4 5 1 + (-0.002551584849196866,-0.03673048633435577) 6 4 5 2 + (-0.002551584849196964,-0.03673048633435577) 6 4 6 1 + (-0.1699842813852253,0.01071540554153011) 6 4 6 2 + (0.08275895953894734,1.465071500639824e-17) 5 5 1 1 + (-3.371975534622399e-06,0.0005267031445051391) 5 5 1 2 + (-3.37197553462847e-06,-0.0005267031445051085) 5 5 2 1 + (0.08576358842683932,2.366595854446559e-17) 5 5 2 2 + (-3.371975534609677e-06,-0.0005267031445051457) 5 6 1 1 + (0.08122941288724117,-8.673617379884035e-19) 5 6 1 2 + (0.0811993344710209,-0.001039736169075699) 5 6 2 1 + (-3.088156049178547e-06,-0.0004823605519340723) 5 6 2 2 + (-3.371975534609677e-06,0.0005267031445050823) 6 5 1 1 + (0.0811993344710209,0.001039736169075691) 6 5 1 2 + (0.08122941288724117,-6.740123505618219e-18) 6 5 2 1 + (-3.088156049178547e-06,0.0004823605519339886) 6 5 2 2 + (0.08576358842683934,2.387378547858569e-17) 6 6 1 1 + (-3.088156049477209e-06,0.000482360551934047) 6 6 1 2 + (-3.088156049477787e-06,-0.0004823605519340174) 6 6 2 1 + (0.09023201953722884,3.457444357317476e-17) 6 6 2 2 + (0.08186882672938667,1.455721452200576e-17) 5 5 3 3 + (0.08691694141975966,2.401658534005428e-17) 5 5 4 4 + (-3.266396902262825e-06,-0.0005102114624912641) 5 6 3 3 + (-0.08135185291379582,0.0005208232160243975) 5 6 3 4 + (-0.08135185291379582,0.0005208232160244019) 5 6 4 3 + (-3.211962140495239e-06,-0.0005016993377193089) 5 6 4 4 + (-3.266396902262825e-06,0.000510211462491203) 6 5 3 3 + (-0.08135185291379582,-0.0005208232160243951) 6 5 3 4 + (-0.08135185291379582,-0.0005208232160243908) 6 5 4 3 + (-3.211962140495239e-06,0.0005016993377192232) 6 5 4 4 + (0.08489761993057748,2.355874656093445e-17) 6 6 3 3 + (0.09138587814448826,3.530670596994207e-17) 6 6 4 4 + (0.08275895953894732,1.48430373518209e-17) 5 5 5 5 + (-3.371975534632229e-06,-0.0005267031445051079) 5 5 5 6 + (-3.37197553463859e-06,0.0005267031445051382) 5 5 6 5 + (0.0857635884268393,2.333621872339364e-17) 5 5 6 6 + (-3.371975534669236e-06,-0.0005267031445051453) 5 6 5 5 + (0.08119933447102091,-0.001039736169075696) 5 6 5 6 + (0.08122941288724118,-2.294894598427651e-18) 5 6 6 5 + (-3.088156049118988e-06,-0.0004823605519340719) 5 6 6 6 + (-3.371975534669236e-06,0.0005267031445050824) 6 5 5 5 + (0.08122941288724118,-3.650147314034531e-18) 6 5 5 6 + (0.08119933447102091,0.00103973616907569) 6 5 6 5 + (-3.088156049118988e-06,0.0004823605519339893) 6 5 6 6 + (0.08576358842683936,2.402981375528196e-17) 6 6 5 5 + (-3.088156049477787e-06,-0.0004823605519340162) 6 6 5 6 + (-3.088156049477209e-06,0.0004823605519340461) 6 6 6 5 + (0.09023201953722887,3.428399071865971e-17) 6 6 6 6 + (-0.23607077824581,-2.602085213965211e-18) 1 1 0 0 + (-1.864394552896025e-05,-0.002912142918143187) 2 1 0 0 + (-0.1549535535454173,-3.035766082959412e-18) 2 2 0 0 + (-0.2430063109624478,0) 3 3 0 0 + (-0.1450417456795436,-1.232595164407831e-32) 4 4 0 0 + (-0.2360707782458101,3.469446951953614e-18) 5 5 0 0 + (-1.864394552895668e-05,0.002912142918143167) 6 5 0 0 + (-0.1549535535454174,3.035766082959412e-18) 6 6 0 0 + (-0.8265834074960368,0) 0 0 0 0 + (-0.2300097034243972,0) 1 0 0 0 + (0.07464550623814624,0) 2 0 0 0 + (-0.2436904421601384,0) 3 0 0 0 + (0.09330341710197569,0) 4 0 0 0 + (-0.2300097034243967,0) 5 0 0 0 + (0.07464550623814656,0) 6 0 0 0 diff --git a/pyscf/tools/test/pbcfcidump/FCIDUMP_e_X b/pyscf/tools/test/pbcfcidump/FCIDUMP_e_X new file mode 100644 index 0000000000..8dc824aa2b --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/FCIDUMP_e_X @@ -0,0 +1,68 @@ + (0.1586261809687634,-1.719568291119632e-17) 1 1 1 1 + (-3.371975528812521e-06,-0.000526703144505193) 1 1 2 1 + (-3.371975529159466e-06,0.0005267031445052061) 1 2 1 1 + (0.08122941288724531,4.92959115956067e-18) 1 2 2 1 + (0.08122941288724078,-2.88183629323174e-18) 2 1 1 2 + (-3.088156056735292e-06,-0.0004823605519339303) 2 1 2 2 + (-3.088156056541003e-06,0.0004823605519339627) 2 2 1 2 + (0.1660992409670418,-3.120198029775813e-17) 2 2 2 2 + (0.1666480809325362,-2.596303196818734e-17) 1 3 3 1 + (-4.269154474378922e-11,0.02413540930010927) 1 3 4 1 + (-4.269151698821361e-11,-0.0241354093001093) 1 4 3 1 + (0.09993765443151988,2.306286825906263e-17) 1 4 4 1 + (0.09886571227659431,2.14497081717497e-17) 2 3 3 2 + (4.130258635104411e-11,-0.02416049332638128) 2 3 4 2 + (4.13025585954685e-11,0.02416049332638126) 2 4 3 2 + (0.1729848332436403,-3.736588563641932e-17) 2 4 4 2 + (0.1634376546704993,-2.37298192865139e-16) 1 5 5 1 + (-0.0001874765596093508,0.02928358128562331) 1 5 6 1 + (-0.0001874765596099059,-0.02928358128562327) 1 6 5 1 + (0.103155956623745,2.529662865678918e-16) 1 6 6 1 + (0.1031559566237502,-8.617091764046485e-17) 2 5 5 2 + (0.0001850367744939407,-0.02890249013045611) 2 5 6 2 + (0.0001850367744945514,0.02890249013045626) 2 6 5 2 + (0.1682993030610153,1.331066945671058e-16) 2 6 6 2 + (0.166648080932534,4.078081961073714e-16) 3 1 1 3 + (0.0001521849665198777,0.02377107177035533) 3 1 2 3 + (0.0001521849665198499,-0.02377107177035542) 3 2 1 3 + (0.09886571227659105,-4.577000002848029e-16) 3 2 2 3 + (0.09993765443151775,-4.175687717149979e-17) 4 1 1 4 + (-0.0001569425731064999,-0.02451420338852076) 4 1 2 4 + (-0.0001569425731070689,0.0245142033885208) 4 2 1 4 + (0.1729848332436371,-4.431111463680317e-17) 4 2 2 4 + (0.1568702712917834,-1.593108144794816e-17) 3 3 3 3 + (0.08148956550829281,1.874078986084656e-18) 3 4 4 3 + (0.08148956550829284,1.874078986084616e-18) 4 3 3 4 + (0.1684430897346808,-3.664522441366949e-17) 4 4 4 4 + (0.1666480809325341,-4.37613554873815e-16) 3 5 5 3 + (0.0001521849665200026,-0.02377107177035535) 3 5 6 3 + (0.0001521849665200581,0.02377107177035549) 3 6 5 3 + (0.0988657122765912,4.68022934153268e-16) 3 6 6 3 + (0.09993765443151786,4.398286029155618e-17) 4 5 5 4 + (-0.0001569425731065832,0.0245142033885208) 4 5 6 4 + (-0.0001569425731072632,-0.02451420338852079) 4 6 5 4 + (0.1729848332436371,-6.16951163268312e-18) 4 6 6 4 + (0.1634376546704991,4.146699249064975e-16) 5 1 1 5 + (-0.0001874765596092676,-0.02928358128562318) 5 1 2 5 + (-0.0001874765596100447,0.02928358128562312) 5 2 1 5 + (0.1031559566237446,-4.085148910282096e-16) 5 2 2 5 + (0.1031559566237501,4.350011242916014e-17) 6 1 1 6 + (0.0001850367744938991,0.02890249013045597) 6 1 2 6 + (0.0001850367744946901,-0.02890249013045613) 6 2 1 6 + (0.1682993030610154,-1.107747446079233e-16) 6 2 2 6 + (0.1666480809325363,2.736864946863369e-17) 5 3 3 5 + (-4.269151698821361e-11,-0.0241354093001093) 5 3 4 5 + (-4.269139208812334e-11,0.02413540930010928) 5 4 3 5 + (0.09993765443151986,-4.341208081358445e-17) 5 4 4 5 + (0.09886571227659427,-4.07417424466951e-17) 6 3 3 6 + (4.130253083989288e-11,0.02416049332638127) 6 3 4 6 + (4.1302378184227e-11,-0.02416049332638129) 6 4 3 6 + (0.1729848332436404,-1.469950228806467e-18) 6 4 4 6 + (0.1586261809687634,-1.279513496391097e-17) 5 5 5 5 + (-3.371975528874971e-06,0.0005267031445051625) 5 5 6 5 + (-3.371975529221916e-06,-0.0005267031445051384) 5 6 5 5 + (0.08122941288724531,-5.420277855219841e-18) 5 6 6 5 + (0.08122941288724075,2.680243709280452e-18) 6 5 5 6 + (-3.088156056693658e-06,0.0004823605519340185) 6 5 6 6 + (-3.088156056485492e-06,-0.0004823605519339914) 6 6 5 6 + (0.1660992409670417,-3.752399254864434e-17) 6 6 6 6 diff --git a/pyscf/tools/test/pbcfcidump/FCIDUMP_no b/pyscf/tools/test/pbcfcidump/FCIDUMP_no new file mode 100644 index 0000000000..f49990c46f --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/FCIDUMP_no @@ -0,0 +1,430 @@ + &FCI NORB= 6,NELEC= 6,MS2=0, + ORBSYM=2,2,0,0,1,1 + NPROP= 3 1 1 + PROPBITLEN= 8 + ISYM=1, + &END + (0.08275896949354794,1.582192864048872e-17) 1 1 1 1 + (-3.372540321895193e-06,0.0005267174480819137) 1 1 1 2 + (-3.372540321895193e-06,-0.0005267174480818827) 1 1 2 1 + (0.08576358800784434,2.448047910093216e-17) 1 1 2 2 + (-3.372540320447277e-06,0.0005267174480818666) 1 2 1 1 + (0.08119933306810896,0.001039878445975889) 1 2 1 2 + (0.08122941246824399,-1.818297393439231e-18) 1 2 2 1 + (-3.08870187347432e-06,0.000482381550618362) 1 2 2 2 + (-3.372540320447277e-06,-0.0005267174480819297) 2 1 1 1 + (0.08122941246824399,-3.501069515317774e-18) 2 1 1 2 + (0.08119933306810895,-0.001039878445975894) 2 1 2 1 + (-3.08870187347432e-06,-0.0004823815506184453) 2 1 2 2 + (0.08576358800784226,2.496439728497313e-17) 2 2 1 1 + (-3.088701874357872e-06,0.0004823815506184172) 2 2 1 2 + (-3.088701874357872e-06,-0.0004823815506183863) 2 2 2 1 + (0.09023201042062064,3.551211942367057e-17) 2 2 2 2 + (0.08186883155084332,1.558967913191971e-17) 1 1 3 3 + (0.08691694616081215,2.543776159204654e-17) 1 1 4 4 + (-3.266944641485437e-06,0.0005102257696886349) 1 2 3 3 + (-0.08135185245749088,-0.0005208944854055189) 1 2 3 4 + (-0.08135185245749088,-0.0005208944854055155) 1 2 4 3 + (-3.212528253021887e-06,0.0005017204493249539) 1 2 4 4 + (-3.26694464150105e-06,-0.0005102257696886043) 2 1 3 3 + (-0.08135185245749088,0.0005208944854055209) 2 1 3 4 + (-0.08135185245749088,0.0005208944854055242) 2 1 4 3 + (-3.212528253018996e-06,-0.0005017204493249219) 2 1 4 4 + (0.08489761510911892,2.429255443614122e-17) 2 2 3 3 + (0.09138587340343676,3.596935774277687e-17) 2 2 4 4 + (0.08275896949354794,1.582192864048857e-17) 1 1 5 5 + (-3.372540320442652e-06,-0.0005267174480819284) 1 1 5 6 + (-3.372540320442652e-06,0.0005267174480818653) 1 1 6 5 + (0.08576358800784224,2.496439728497326e-17) 1 1 6 6 + (-3.372540321562127e-06,0.0005267174480819166) 1 2 5 5 + (0.08122941246824399,3.449118161219511e-18) 1 2 5 6 + (0.08119933306810895,0.001039878445975882) 1 2 6 5 + (-3.088701874695565e-06,0.0004823815506184147) 1 2 6 6 + (-3.372540321562127e-06,-0.0005267174480818854) 2 1 5 5 + (0.08119933306810895,-0.001039878445975886) 2 1 5 6 + (0.08122941246824399,-8.810272028707728e-18) 2 1 6 5 + (-3.088701874695565e-06,-0.0004823815506183836) 2 1 6 6 + (0.08576358800784431,2.448047910093197e-17) 2 2 5 5 + (-3.088701873465068e-06,-0.0004823815506184442) 2 2 5 6 + (-3.088701873465068e-06,0.0004823815506183608) 2 2 6 5 + (0.09023201042062069,3.551211942367079e-17) 2 2 6 6 + (0.164242009026043,0.01352249539096489) 1 3 1 5 + (0.002740313244737929,-0.03610913247241903) 1 3 1 6 + (0.002740313244738781,-0.03610913247241896) 1 3 2 5 + (0.1660925683632983,0.01153563113181753) 1 3 2 6 + (0.001420797577194456,-0.0172567744523371) 1 4 1 5 + (-0.1008121848882911,-0.007650612014410647) 1 4 1 6 + (-0.1008121848882911,-0.007650612014410739) 1 4 2 5 + (0.001159047134341134,-0.01668821662533006) 1 4 2 6 + (-0.001283399163767257,0.0169113629439074) 2 3 1 5 + (0.1002997773831791,0.006966122834134282) 2 3 1 6 + (0.1002997773831791,0.006966122834134352) 2 3 2 5 + (-0.001034710518667762,0.01641823876813864) 2 3 2 6 + (-0.1667366874844302,-0.01265360635221754) 2 4 1 5 + (-0.002550902323593576,0.03672845626474285) 2 4 1 6 + (-0.002550902323594499,0.03672845626474276) 2 4 2 5 + (-0.1699847163267839,-0.01071277936673167) 2 4 2 6 + (0.1666478562994305,-1.71159382963045e-16) 1 3 3 1 + (0.0001522078321436378,-0.02377139188740806) 1 3 3 2 + (-2.727169416220458e-11,0.02413573864282795) 1 3 4 1 + (-0.1690839238348598,-0.001082641413642789) 1 3 4 2 + (-2.727175892521435e-11,-0.02413573864282796) 1 4 3 1 + (-0.09938042694034571,-0.0006363311317415544) 1 4 3 2 + (0.09993788608717864,-4.568105153405592e-16) 1 4 4 1 + (-0.0001569662494057914,0.02451454837601998) 1 4 4 2 + (0.0001522078321448035,0.02377139188740789) 2 3 3 1 + (0.09886593690969787,-3.469446951953614e-17) 2 3 3 2 + (-0.09938042694034534,0.0006363311317416354) 2 3 4 1 + (2.628737042857191e-11,-0.02416082266909991) 2 3 4 2 + (-0.1690839238348578,0.001082641413642765) 2 4 3 1 + (2.628637122784975e-11,0.02416082266910033) 2 4 3 2 + (-0.0001569662494071329,-0.02451454837602016) 2 4 4 1 + (0.1729846015879827,3.301757015942523e-16) 2 4 4 2 + (0.1666478562994304,1.139135082558103e-16) 1 3 5 3 + (-2.72721567551315e-11,0.02413573864282799) 1 3 5 4 + (0.0001522078321444797,-0.0237713918874079) 1 3 6 3 + (-0.1690839238348578,-0.001082641413642832) 1 3 6 4 + (-2.727191389384487e-11,-0.02413573864282795) 1 4 5 3 + (0.0999378860871786,5.377642775528102e-16) 1 4 5 4 + (-0.09938042694034528,-0.0006363311317415804) 1 4 6 3 + (-0.0001569662494073804,0.02451454837602015) 1 4 6 4 + (0.0001522078321438761,0.02377139188740807) 2 3 5 3 + (-0.09938042694034577,0.0006363311317414827) 2 3 5 4 + (0.09886593690969787,-1.734723475976807e-17) 2 3 6 3 + (2.628662796692419e-11,-0.02416082266910033) 2 3 6 4 + (-0.1690839238348598,0.001082641413642846) 2 4 5 3 + (-0.0001569662494053612,-0.02451454837601999) 2 4 5 4 + (2.62878237696403e-11,0.02416082266909993) 2 4 6 3 + (0.1729846015879826,-2.315855840429037e-16) 2 4 6 4 + (0.164242009026043,0.01352249539096489) 1 5 1 3 + (0.001420797577194456,-0.0172567744523371) 1 5 1 4 + (-0.001283399163767257,0.0169113629439074) 1 5 2 3 + (-0.1667366874844302,-0.01265360635221754) 1 5 2 4 + (0.002740313244737929,-0.03610913247241903) 1 6 1 3 + (-0.1008121848882911,-0.007650612014410647) 1 6 1 4 + (0.1002997773831791,0.006966122834134282) 1 6 2 3 + (-0.002550902323593576,0.03672845626474285) 1 6 2 4 + (0.002740313244738781,-0.03610913247241896) 2 5 1 3 + (-0.1008121848882911,-0.007650612014410739) 2 5 1 4 + (0.1002997773831791,0.006966122834134352) 2 5 2 3 + (-0.002550902323594499,0.03672845626474276) 2 5 2 4 + (0.1660925683632983,0.01153563113181753) 2 6 1 3 + (0.001159047134341134,-0.01668821662533006) 2 6 1 4 + (-0.001034710518667762,0.01641823876813864) 2 6 2 3 + (-0.1699847163267839,-0.01071277936673167) 2 6 2 4 + (0.1642420090260405,0.01352249539096516) 1 5 3 5 + (-0.001283399163765136,0.01691136294390705) 1 5 3 6 + (0.001420797577195399,-0.01725677445233694) 1 5 4 5 + (-0.1667366874844317,-0.01265360635221824) 1 5 4 6 + (0.002740313244738335,-0.03610913247241869) 1 6 3 5 + (0.1002997773831785,0.00696612283413473) 1 6 3 6 + (-0.1008121848882867,-0.007650612014411089) 1 6 4 5 + (-0.002550902323594302,0.03672845626474122) 1 6 4 6 + (0.002740313244739163,-0.03610913247241863) 2 5 3 5 + (0.1002997773831785,0.006966122834134805) 2 5 3 6 + (-0.1008121848882867,-0.007650612014411178) 2 5 4 5 + (-0.002550902323595223,0.03672845626474112) 2 5 4 6 + (0.1660925683632985,0.01153563113181744) 2 6 3 5 + (-0.001034710518671262,0.01641823876813858) 2 6 3 6 + (0.00115904713433924,-0.01668821662533027) 2 6 4 5 + (-0.1699847163267823,-0.0107127793667306) 2 6 4 6 + (0.1634382081123193,-3.080941173479641e-17) 1 5 5 1 + (-0.0001874985302557394,0.0292830035145599) 1 5 5 2 + (-0.0001874985302565906,0.02928300351455991) 1 5 6 1 + (0.1651127274465623,0.002114514475309266) 1 5 6 2 + (-0.0001874985302573841,-0.02928300351455956) 1 6 5 1 + (0.1031554067832642,-6.740123505618219e-18) 1 6 5 2 + (0.1031554067832642,1.53441712461011e-16) 1 6 6 1 + (0.000185058263863708,-0.02890188939171805) 1 6 6 2 + (-0.0001874985302565595,-0.02928300351455957) 2 5 5 1 + (0.1031554067832642,1.167053288499605e-16) 2 5 5 2 + (0.1031554067832642,2.840880742455143e-16) 2 5 6 1 + (0.0001850582638646071,-0.02890188939171803) 2 5 6 2 + (0.1651127274465616,-0.002114514475309956) 2 6 5 1 + (0.0001850582638653425,0.02890188939171812) 2 6 5 2 + (0.000185058263864506,0.02890188939171812) 2 6 6 1 + (0.1682998493001494,-3.070099151754787e-16) 2 6 6 2 + (0.1666478562994305,-1.71159382963045e-16) 3 1 1 3 + (-2.727175892521435e-11,-0.02413573864282796) 3 1 1 4 + (0.0001522078321448035,0.02377139188740789) 3 1 2 3 + (-0.1690839238348578,0.001082641413642765) 3 1 2 4 + (0.0001522078321436378,-0.02377139188740806) 3 2 1 3 + (-0.09938042694034571,-0.0006363311317415544) 3 2 1 4 + (0.09886593690969787,-3.469446951953614e-17) 3 2 2 3 + (2.628637122784975e-11,0.02416082266910033) 3 2 2 4 + (-2.727169416220458e-11,0.02413573864282795) 4 1 1 3 + (0.09993788608717864,-4.568105153405592e-16) 4 1 1 4 + (-0.09938042694034534,0.0006363311317416354) 4 1 2 3 + (-0.0001569662494071329,-0.02451454837602016) 4 1 2 4 + (-0.1690839238348598,-0.001082641413642789) 4 2 1 3 + (-0.0001569662494057914,0.02451454837601998) 4 2 1 4 + (2.628737042857191e-11,-0.02416082266909991) 4 2 2 3 + (0.1729846015879827,3.301757015942523e-16) 4 2 2 4 + (0.1666478562994304,-1.139135082558103e-16) 3 1 3 5 + (0.0001522078321444797,0.0237713918874079) 3 1 3 6 + (-2.72721567551315e-11,-0.02413573864282799) 3 1 4 5 + (-0.1690839238348578,0.001082641413642832) 3 1 4 6 + (0.0001522078321438761,-0.02377139188740807) 3 2 3 5 + (0.09886593690969787,1.734723475976807e-17) 3 2 3 6 + (-0.09938042694034577,-0.0006363311317414827) 3 2 4 5 + (2.628662796692419e-11,0.02416082266910033) 3 2 4 6 + (-2.727191389384487e-11,0.02413573864282795) 4 1 3 5 + (-0.09938042694034528,0.0006363311317415804) 4 1 3 6 + (0.0999378860871786,-5.377642775528102e-16) 4 1 4 5 + (-0.0001569662494073804,-0.02451454837602015) 4 1 4 6 + (-0.1690839238348598,-0.001082641413642846) 4 2 3 5 + (2.62878237696403e-11,-0.02416082266909993) 4 2 3 6 + (-0.0001569662494053612,0.02451454837601999) 4 2 4 5 + (0.1729846015879826,2.315855840429037e-16) 4 2 4 6 + (0.164242009026043,-0.01352249539096489) 3 1 5 1 + (0.002740313244738781,0.03610913247241896) 3 1 5 2 + (0.002740313244737929,0.03610913247241903) 3 1 6 1 + (0.1660925683632983,-0.01153563113181753) 3 1 6 2 + (-0.001283399163767257,-0.0169113629439074) 3 2 5 1 + (0.1002997773831791,-0.006966122834134352) 3 2 5 2 + (0.1002997773831791,-0.006966122834134282) 3 2 6 1 + (-0.001034710518667762,-0.01641823876813864) 3 2 6 2 + (0.001420797577194456,0.0172567744523371) 4 1 5 1 + (-0.1008121848882911,0.007650612014410739) 4 1 5 2 + (-0.1008121848882911,0.007650612014410647) 4 1 6 1 + (0.001159047134341134,0.01668821662533006) 4 1 6 2 + (-0.1667366874844302,0.01265360635221754) 4 2 5 1 + (-0.002550902323594499,-0.03672845626474276) 4 2 5 2 + (-0.002550902323593576,-0.03672845626474285) 4 2 6 1 + (-0.1699847163267839,0.01071277936673167) 4 2 6 2 + (0.08186883155084332,1.558967913191971e-17) 3 3 1 1 + (-3.266944641485437e-06,0.0005102257696886349) 3 3 1 2 + (-3.26694464150105e-06,-0.0005102257696886043) 3 3 2 1 + (0.08489761510911892,2.429255443614122e-17) 3 3 2 2 + (-0.08135185245749088,-0.0005208944854055189) 3 4 1 2 + (-0.08135185245749088,0.0005208944854055209) 3 4 2 1 + (-0.08135185245749088,-0.0005208944854055155) 4 3 1 2 + (-0.08135185245749088,0.0005208944854055242) 4 3 2 1 + (0.08691694616081215,2.543776159204654e-17) 4 4 1 1 + (-3.212528253021887e-06,0.0005017204493249539) 4 4 1 2 + (-3.212528253018996e-06,-0.0005017204493249219) 4 4 2 1 + (0.09138587340343676,3.596935774277687e-17) 4 4 2 2 + (0.0810030498619688,1.439303724889066e-17) 3 3 3 3 + (0.08602156026990859,2.346861728931556e-17) 3 3 4 4 + (0.08148956550829239,5.855337406393891e-18) 3 4 3 4 + (0.08148956550829239,8.37325484062978e-19) 3 4 4 3 + (0.08148956550829239,-4.333458619918722e-18) 4 3 3 4 + (0.08148956550829239,-9.351470542249256e-18) 4 3 4 3 + (0.08602156026990777,2.405347339292478e-17) 4 4 3 3 + (0.09257586830486739,3.527193671219452e-17) 4 4 4 4 + (0.08186883155084448,1.461871193164151e-17) 3 3 5 5 + (-3.266944639946304e-06,-0.0005102257696886568) 3 3 5 6 + (-3.266944639946159e-06,0.0005102257696885953) 3 3 6 5 + (0.08489761510911721,2.359165917133616e-17) 3 3 6 6 + (-0.0813518524574907,0.0005208944854055201) 3 4 5 6 + (-0.0813518524574907,-0.0005208944854055195) 3 4 6 5 + (-0.0813518524574907,0.0005208944854055238) 4 3 5 6 + (-0.0813518524574907,-0.0005208944854055162) 4 3 6 5 + (0.08691694616081116,2.365080312218569e-17) 4 4 5 5 + (-3.212528254358347e-06,-0.0005017204493249973) 4 4 5 6 + (-3.212528254358203e-06,0.0005017204493249123) 4 4 6 5 + (0.09138587340343635,3.481898106677281e-17) 4 4 6 6 + (0.1642420090260405,0.01352249539096516) 3 5 1 5 + (0.002740313244738335,-0.03610913247241869) 3 5 1 6 + (0.002740313244739163,-0.03610913247241863) 3 5 2 5 + (0.1660925683632985,0.01153563113181744) 3 5 2 6 + (-0.001283399163765136,0.01691136294390705) 3 6 1 5 + (0.1002997773831785,0.00696612283413473) 3 6 1 6 + (0.1002997773831785,0.006966122834134805) 3 6 2 5 + (-0.001034710518671262,0.01641823876813858) 3 6 2 6 + (0.001420797577195399,-0.01725677445233694) 4 5 1 5 + (-0.1008121848882867,-0.007650612014411089) 4 5 1 6 + (-0.1008121848882867,-0.007650612014411178) 4 5 2 5 + (0.00115904713433924,-0.01668821662533027) 4 5 2 6 + (-0.1667366874844317,-0.01265360635221824) 4 6 1 5 + (-0.002550902323594302,0.03672845626474122) 4 6 1 6 + (-0.002550902323595223,0.03672845626474112) 4 6 2 5 + (-0.1699847163267823,-0.0107127793667306) 4 6 2 6 + (0.1666478562994304,-1.139135082558103e-16) 3 5 3 1 + (0.0001522078321438761,-0.02377139188740807) 3 5 3 2 + (-2.727191389384487e-11,0.02413573864282795) 3 5 4 1 + (-0.1690839238348598,-0.001082641413642846) 3 5 4 2 + (0.0001522078321444797,0.0237713918874079) 3 6 3 1 + (0.09886593690969787,1.734723475976807e-17) 3 6 3 2 + (-0.09938042694034528,0.0006363311317415804) 3 6 4 1 + (2.62878237696403e-11,-0.02416082266909993) 3 6 4 2 + (-2.72721567551315e-11,-0.02413573864282799) 4 5 3 1 + (-0.09938042694034577,-0.0006363311317414827) 4 5 3 2 + (0.0999378860871786,-5.377642775528102e-16) 4 5 4 1 + (-0.0001569662494053612,0.02451454837601999) 4 5 4 2 + (-0.1690839238348578,0.001082641413642832) 4 6 3 1 + (2.628662796692419e-11,0.02416082266910033) 4 6 3 2 + (-0.0001569662494073804,-0.02451454837602015) 4 6 4 1 + (0.1729846015879826,2.315855840429037e-16) 4 6 4 2 + (0.1666478562994303,-1.581489568932189e-16) 3 5 5 3 + (-2.72722770292925e-11,0.02413573864282798) 3 5 5 4 + (0.0001522078321434551,-0.02377139188740809) 3 5 6 3 + (-0.1690839238348598,-0.001082641413642938) 3 5 6 4 + (0.000152207832144711,0.02377139188740789) 3 6 5 3 + (-0.09938042694034534,0.0006363311317415058) 3 6 5 4 + (0.09886593690969787,-5.204170427930421e-17) 3 6 6 3 + (2.628804581424523e-11,-0.02416082266909993) 3 6 6 4 + (-2.727244818867547e-11,-0.024135738642828) 4 5 5 3 + (0.09993788608717857,-4.521845860712877e-16) 4 5 5 4 + (-0.09938042694034568,-0.000636331131741435) 4 5 6 3 + (-0.0001569662494055971,0.02451454837601999) 4 5 6 4 + (-0.1690839238348578,0.001082641413642886) 4 6 5 3 + (-0.0001569662494069178,-0.02451454837602015) 4 6 5 4 + (2.62870489264877e-11,0.02416082266910036) 4 6 6 3 + (0.1729846015879825,3.304648221735818e-16) 4 6 6 4 + (0.1634382081123193,-3.080941173479641e-17) 5 1 1 5 + (-0.0001874985302573841,-0.02928300351455956) 5 1 1 6 + (-0.0001874985302565595,-0.02928300351455957) 5 1 2 5 + (0.1651127274465616,-0.002114514475309956) 5 1 2 6 + (-0.0001874985302557394,0.0292830035145599) 5 2 1 5 + (0.1031554067832642,-6.740123505618219e-18) 5 2 1 6 + (0.1031554067832642,1.167053288499605e-16) 5 2 2 5 + (0.0001850582638653425,0.02890188939171812) 5 2 2 6 + (-0.0001874985302565906,0.02928300351455991) 6 1 1 5 + (0.1031554067832642,1.53441712461011e-16) 6 1 1 6 + (0.1031554067832642,2.840880742455143e-16) 6 1 2 5 + (0.000185058263864506,0.02890188939171812) 6 1 2 6 + (0.1651127274465623,0.002114514475309266) 6 2 1 5 + (0.000185058263863708,-0.02890188939171805) 6 2 1 6 + (0.0001850582638646071,-0.02890188939171803) 6 2 2 5 + (0.1682998493001494,-3.070099151754787e-16) 6 2 2 6 + (0.164242009026043,-0.01352249539096489) 5 1 3 1 + (-0.001283399163767257,-0.0169113629439074) 5 1 3 2 + (0.001420797577194456,0.0172567744523371) 5 1 4 1 + (-0.1667366874844302,0.01265360635221754) 5 1 4 2 + (0.002740313244738781,0.03610913247241896) 5 2 3 1 + (0.1002997773831791,-0.006966122834134352) 5 2 3 2 + (-0.1008121848882911,0.007650612014410739) 5 2 4 1 + (-0.002550902323594499,-0.03672845626474276) 5 2 4 2 + (0.002740313244737929,0.03610913247241903) 6 1 3 1 + (0.1002997773831791,-0.006966122834134282) 6 1 3 2 + (-0.1008121848882911,0.007650612014410647) 6 1 4 1 + (-0.002550902323593576,-0.03672845626474285) 6 1 4 2 + (0.1660925683632983,-0.01153563113181753) 6 2 3 1 + (-0.001034710518667762,-0.01641823876813864) 6 2 3 2 + (0.001159047134341134,0.01668821662533006) 6 2 4 1 + (-0.1699847163267839,0.01071277936673167) 6 2 4 2 + (0.1642420090260405,-0.01352249539096516) 5 1 5 3 + (0.001420797577195399,0.01725677445233694) 5 1 5 4 + (-0.001283399163765136,-0.01691136294390705) 5 1 6 3 + (-0.1667366874844317,0.01265360635221824) 5 1 6 4 + (0.002740313244739163,0.03610913247241863) 5 2 5 3 + (-0.1008121848882867,0.007650612014411178) 5 2 5 4 + (0.1002997773831785,-0.006966122834134805) 5 2 6 3 + (-0.002550902323595223,-0.03672845626474112) 5 2 6 4 + (0.002740313244738335,0.03610913247241869) 6 1 5 3 + (-0.1008121848882867,0.007650612014411089) 6 1 5 4 + (0.1002997773831785,-0.00696612283413473) 6 1 6 3 + (-0.002550902323594302,-0.03672845626474122) 6 1 6 4 + (0.1660925683632985,-0.01153563113181744) 6 2 5 3 + (0.00115904713433924,0.01668821662533027) 6 2 5 4 + (-0.001034710518671262,-0.01641823876813858) 6 2 6 3 + (-0.1699847163267823,0.0107127793667306) 6 2 6 4 + (0.1666478562994304,1.139135082558103e-16) 5 3 1 3 + (-2.727191389384487e-11,-0.02413573864282795) 5 3 1 4 + (0.0001522078321438761,0.02377139188740807) 5 3 2 3 + (-0.1690839238348598,0.001082641413642846) 5 3 2 4 + (-2.72721567551315e-11,0.02413573864282799) 5 4 1 3 + (0.0999378860871786,5.377642775528102e-16) 5 4 1 4 + (-0.09938042694034577,0.0006363311317414827) 5 4 2 3 + (-0.0001569662494053612,-0.02451454837601999) 5 4 2 4 + (0.0001522078321444797,-0.0237713918874079) 6 3 1 3 + (-0.09938042694034528,-0.0006363311317415804) 6 3 1 4 + (0.09886593690969787,-1.734723475976807e-17) 6 3 2 3 + (2.62878237696403e-11,0.02416082266909993) 6 3 2 4 + (-0.1690839238348578,-0.001082641413642832) 6 4 1 3 + (-0.0001569662494073804,0.02451454837602015) 6 4 1 4 + (2.628662796692419e-11,-0.02416082266910033) 6 4 2 3 + (0.1729846015879826,-2.315855840429037e-16) 6 4 2 4 + (0.1666478562994303,-1.581489568932189e-16) 5 3 3 5 + (0.000152207832144711,0.02377139188740789) 5 3 3 6 + (-2.727244818867547e-11,-0.024135738642828) 5 3 4 5 + (-0.1690839238348578,0.001082641413642886) 5 3 4 6 + (-2.72722770292925e-11,0.02413573864282798) 5 4 3 5 + (-0.09938042694034534,0.0006363311317415058) 5 4 3 6 + (0.09993788608717857,-4.521845860712877e-16) 5 4 4 5 + (-0.0001569662494069178,-0.02451454837602015) 5 4 4 6 + (0.0001522078321434551,-0.02377139188740809) 6 3 3 5 + (0.09886593690969787,-5.204170427930421e-17) 6 3 3 6 + (-0.09938042694034568,-0.000636331131741435) 6 3 4 5 + (2.62870489264877e-11,0.02416082266910036) 6 3 4 6 + (-0.1690839238348598,-0.001082641413642938) 6 4 3 5 + (2.628804581424523e-11,-0.02416082266909993) 6 4 3 6 + (-0.0001569662494055971,0.02451454837601999) 6 4 4 5 + (0.1729846015879825,3.304648221735818e-16) 6 4 4 6 + (0.1642420090260405,-0.01352249539096516) 5 3 5 1 + (0.002740313244739163,0.03610913247241863) 5 3 5 2 + (0.002740313244738335,0.03610913247241869) 5 3 6 1 + (0.1660925683632985,-0.01153563113181744) 5 3 6 2 + (0.001420797577195399,0.01725677445233694) 5 4 5 1 + (-0.1008121848882867,0.007650612014411178) 5 4 5 2 + (-0.1008121848882867,0.007650612014411089) 5 4 6 1 + (0.00115904713433924,0.01668821662533027) 5 4 6 2 + (-0.001283399163765136,-0.01691136294390705) 6 3 5 1 + (0.1002997773831785,-0.006966122834134805) 6 3 5 2 + (0.1002997773831785,-0.00696612283413473) 6 3 6 1 + (-0.001034710518671262,-0.01641823876813858) 6 3 6 2 + (-0.1667366874844317,0.01265360635221824) 6 4 5 1 + (-0.002550902323595223,-0.03672845626474112) 6 4 5 2 + (-0.002550902323594302,-0.03672845626474122) 6 4 6 1 + (-0.1699847163267823,0.0107127793667306) 6 4 6 2 + (0.08275896949354794,1.582192864048857e-17) 5 5 1 1 + (-3.372540321562127e-06,0.0005267174480819166) 5 5 1 2 + (-3.372540321562127e-06,-0.0005267174480818854) 5 5 2 1 + (0.08576358800784431,2.448047910093197e-17) 5 5 2 2 + (-3.372540320442652e-06,-0.0005267174480819284) 5 6 1 1 + (0.08122941246824399,3.449118161219511e-18) 5 6 1 2 + (0.08119933306810895,-0.001039878445975886) 5 6 2 1 + (-3.088701873465068e-06,-0.0004823815506184442) 5 6 2 2 + (-3.372540320442652e-06,0.0005267174480818653) 6 5 1 1 + (0.08119933306810895,0.001039878445975882) 6 5 1 2 + (0.08122941246824399,-8.810272028707728e-18) 6 5 2 1 + (-3.088701873465068e-06,0.0004823815506183608) 6 5 2 2 + (0.08576358800784224,2.496439728497326e-17) 6 6 1 1 + (-3.088701874695565e-06,0.0004823815506184147) 6 6 1 2 + (-3.088701874695565e-06,-0.0004823815506183836) 6 6 2 1 + (0.09023201042062069,3.551211942367079e-17) 6 6 2 2 + (0.08186883155084448,1.461871193164151e-17) 5 5 3 3 + (0.08691694616081116,2.365080312218569e-17) 5 5 4 4 + (-3.266944639946304e-06,-0.0005102257696886568) 5 6 3 3 + (-0.0813518524574907,0.0005208944854055201) 5 6 3 4 + (-0.0813518524574907,0.0005208944854055238) 5 6 4 3 + (-3.212528254358347e-06,-0.0005017204493249973) 5 6 4 4 + (-3.266944639946159e-06,0.0005102257696885953) 6 5 3 3 + (-0.0813518524574907,-0.0005208944854055195) 6 5 3 4 + (-0.0813518524574907,-0.0005208944854055162) 6 5 4 3 + (-3.212528254358203e-06,0.0005017204493249123) 6 5 4 4 + (0.08489761510911721,2.359165917133616e-17) 6 6 3 3 + (0.09138587340343635,3.481898106677281e-17) 6 6 4 4 + (0.08275896949354794,1.524515927555587e-17) 5 5 5 5 + (-3.372540321557501e-06,-0.0005267174480818836) 5 5 5 6 + (-3.372540321562127e-06,0.0005267174480819141) 5 5 6 5 + (0.08576358800784434,2.409433106979743e-17) 5 5 6 6 + (-3.372540319961555e-06,-0.000526717448081931) 5 6 5 5 + (0.08119933306810895,-0.001039878445975879) 5 6 5 6 + (0.081229412468244,-4.257752281531616e-18) 5 6 6 5 + (-3.08870187397392e-06,-0.0004823815506184403) 5 6 6 6 + (-3.372540319961555e-06,0.0005267174480818688) 6 5 5 5 + (0.081229412468244,-1.373322751814972e-18) 6 5 5 6 + (0.08119933306810896,0.001039878445975873) 6 5 6 5 + (-3.08870187397392e-06,0.0004823815506183573) 6 5 6 6 + (0.08576358800784224,2.446567077439161e-17) 6 6 5 5 + (-3.088701874686313e-06,-0.0004823815506183811) 6 6 5 6 + (-3.088701874695565e-06,0.0004823815506184125) 6 6 6 5 + (0.09023201042062065,3.511185144015109e-17) 6 6 6 6 + (-0.2360707507248655,-8.673617379884035e-19) 1 1 0 0 + (-1.864895648642984e-05,-0.002912526156224909) 2 1 0 0 + (-0.1549535810663616,-2.602085213965211e-18) 2 2 0 0 + (-0.2430063109624478,0) 3 3 0 0 + (1.006486990915968e-10,2.749487926309689e-17) 4 3 0 0 + (-0.1450417456795436,-6.162975822039155e-33) 4 4 0 0 + (-0.2360707507248656,2.602085213965211e-18) 5 5 0 0 + (-1.864895648628791e-05,0.002912526156224871) 6 5 0 0 + (-0.1549535810663616,2.168404344971009e-18) 6 6 0 0 + (-0.8265834074960368,0) 0 0 0 0 + (-0.1541407804721038,0) 1 0 0 0 + (0.07464364220305705,0) 2 0 0 0 + (-0.1678262659847044,0) 3 0 0 0 + (0.09330630504785932,0) 4 0 0 0 + (-0.1541407804721037,0) 5 0 0 0 + (0.07464364220305721,0) 6 0 0 0 diff --git a/pyscf/tools/test/pbcfcidump/FCIDUMP_no_X b/pyscf/tools/test/pbcfcidump/FCIDUMP_no_X new file mode 100644 index 0000000000..5fa3248fe9 --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/FCIDUMP_no_X @@ -0,0 +1,68 @@ + (0.08275896949355047,-1.878596602743989e-17) 1 1 1 1 + (-3.372540314315609e-06,-0.0005267174480819696) 1 1 2 1 + (-3.372540314676431e-06,0.0005267174480819868) 1 2 1 1 + (0.08122941246824805,8.331656675591958e-18) 1 2 2 1 + (0.08122941246824317,1.021533547523247e-18) 2 1 1 2 + (-3.088701881016898e-06,-0.000482381550618308) 2 1 2 2 + (-3.08870188087812e-06,0.0004823815506183385) 2 2 1 2 + (0.09023201042061829,-3.604039384938787e-17) 2 2 2 2 + (0.1666478562994312,-3.167548390362195e-17) 1 3 3 1 + (-2.727083836528976e-11,0.02413573864282814) 1 3 4 1 + (-2.727082448750195e-11,-0.02413573864282816) 1 4 3 1 + (0.09993788608717882,2.763223070422477e-17) 1 4 4 1 + (0.09886593690969932,3.607742403520062e-17) 2 3 3 2 + (2.62879440438013e-11,-0.02416082266910014) 2 3 4 2 + (2.628791628822569e-11,0.02416082266910012) 2 4 3 2 + (0.1729846015879814,-5.767778433922677e-17) 2 4 4 2 + (0.1634382081123191,-5.110721764819317e-16) 1 5 5 1 + (-0.0001874985302569437,0.02928300351455947) 1 5 6 1 + (-0.0001874985302580678,-0.02928300351455949) 1 6 5 1 + (0.1031554067832671,5.336911917507442e-16) 1 6 6 1 + (0.1031554067832713,-1.666685869022627e-16) 2 5 5 2 + (0.0001850582638618925,-0.02890188939171741) 2 5 6 2 + (0.000185058263862739,0.02890188939171747) 2 6 5 2 + (0.1682998493001576,1.97536740259063e-16) 2 6 6 2 + (0.1666478562994292,5.477301928652056e-16) 3 1 1 3 + (0.000152207832144563,0.0237713918874081) 3 1 2 3 + (0.000152207832143994,-0.02377139188740812) 3 2 1 3 + (0.09886593690969581,-6.69782823810443e-16) 3 2 2 3 + (0.09993788608717608,-2.274508862450072e-16) 4 1 1 4 + (-0.0001569662494075447,-0.02451454837602029) 4 1 2 4 + (-0.0001569662494082941,0.02451454837602038) 4 2 1 4 + (0.1729846015879776,1.550283893792093e-16) 4 2 2 4 + (0.08100304986196974,-1.593108144991208e-17) 3 3 3 3 + (0.08148956550829281,1.874078985534449e-18) 3 4 4 3 + (0.08148956550829284,1.874078985534477e-18) 4 3 3 4 + (0.09257586830486726,-3.664522441060531e-17) 4 4 4 4 + (0.166647856299429,-5.574520635577833e-16) 3 5 5 3 + (0.000152207832144105,-0.0237713918874081) 3 5 6 3 + (0.0001522078321437026,0.02377139188740816) 3 6 5 3 + (0.09886593690969572,6.535554332021051e-16) 3 6 6 3 + (0.0999378860871762,2.21893942021844e-16) 4 5 5 4 + (-0.0001569662494074059,0.02451454837602036) 4 5 6 4 + (-0.0001569662494082802,-0.02451454837602039) 4 6 5 4 + (0.1729846015879776,-1.978511117012005e-16) 4 6 6 4 + (0.163438208112319,6.204298390909663e-16) 5 1 1 5 + (-0.0001874985302563331,-0.02928300351455943) 5 1 2 5 + (-0.0001874985302575821,0.02928300351455944) 5 2 1 5 + (0.103155406783267,-5.987615164939421e-16) 5 2 2 5 + (0.1031554067832711,1.325053884090521e-16) 6 1 1 6 + (0.0001850582638610321,0.02890188939171729) 6 1 2 6 + (0.0001850582638620313,-0.02890188939171736) 6 2 1 6 + (0.1682998493001576,-1.746988556422292e-16) 6 2 2 6 + (0.1666478562994313,3.134637792677601e-17) 5 3 3 5 + (-2.727142123237769e-11,-0.02413573864282816) 5 3 4 5 + (-2.727129633228742e-11,0.02413573864282814) 5 4 3 5 + (0.09993788608717882,-5.145089020938473e-17) 5 4 4 5 + (0.09886593690969932,-5.57824370372695e-17) 6 3 3 6 + (2.628849915531362e-11,0.02416082266910011) 6 3 4 6 + (2.628836037743554e-11,-0.02416082266910014) 6 4 3 6 + (0.1729846015879815,2.006089046625486e-17) 6 4 4 6 + (0.08275896949355055,-1.143009034366776e-17) 5 5 5 5 + (-3.372540313961725e-06,0.0005267174480819432) 5 5 6 5 + (-3.372540314329486e-06,-0.0005267174480819215) 5 6 5 5 + (0.08122941246824812,-8.272319459704044e-18) 5 6 6 5 + (0.08122941246824328,-6.991857564070471e-19) 6 5 5 6 + (-3.088701881294453e-06,0.0004823815506183954) 6 5 6 6 + (-3.088701881155675e-06,-0.0004823815506183662) 6 6 5 6 + (0.09023201042061837,-3.209112885617558e-17) 6 6 6 6 diff --git a/pyscf/tools/test/pbcfcidump/FCIDUMP_v b/pyscf/tools/test/pbcfcidump/FCIDUMP_v new file mode 100644 index 0000000000..cf11fd3ca7 --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/FCIDUMP_v @@ -0,0 +1,429 @@ + &FCI NORB= 6,NELEC= 6,MS2=0, + ORBSYM=2,2,0,0,1,1 + NPROP= 3 1 1 + PROPBITLEN= 8 + ISYM=1, + &END + (0.08274265530504465,1.462449065874795e-17) 1 1 1 1 + (-2.47950605479034e-06,0.0005026536648164108) 1 1 1 2 + (-2.47950605479381e-06,-0.0005026536648163798) 1 1 2 1 + (0.08576437950617867,2.418199060990967e-17) 1 1 2 2 + (-2.479506055634573e-06,0.0005026536648163624) 1 2 1 1 + (0.08120124794164123,0.0008011382031676679) 1 2 1 2 + (0.08123020396658179,-2.039655336988355e-18) 1 2 2 1 + (-2.205619147645684e-06,0.0004471136401589298) 1 2 2 2 + (-2.479506055634573e-06,-0.0005026536648164259) 2 1 1 1 + (0.08123020396658182,-4.621411760219463e-18) 2 1 1 2 + (0.08120124794164123,-0.0008011382031676749) 2 1 2 1 + (-2.205619147645684e-06,-0.0004471136401590131) 2 1 2 2 + (0.08576437950617995,2.379529960904802e-17) 2 2 1 1 + (-2.205619145546668e-06,0.000447113640158978) 2 2 1 2 + (-2.205619145547825e-06,-0.0004471136401589483) 2 2 2 1 + (0.09024674161245197,3.514390863933961e-17) 2 2 2 2 + (0.08186093581182831,1.439319908845319e-17) 1 1 3 3 + (0.08690927563671763,2.426794594291442e-17) 1 1 4 4 + (-2.398183224320075e-06,0.0004861670808367863) 1 2 3 3 + (-0.08135253028106317,-0.0004013056181145857) 1 2 3 4 + (-0.08135253028106317,-0.0004013056181145809) 1 2 4 3 + (-2.300021180991207e-06,0.0004662516364352492) 1 2 4 4 + (-2.398183224327013e-06,-0.0004861670808367577) 2 1 3 3 + (-0.08135253028106317,0.0004013056181145883) 2 1 3 4 + (-0.08135253028106317,0.0004013056181145932) 2 1 4 3 + (-2.300021181000459e-06,-0.0004662516364352186) 2 1 4 4 + (0.08490551084813504,2.399894637478594e-17) 2 2 3 3 + (0.09139354392753087,3.559325499120458e-17) 2 2 4 4 + (0.08274265530504465,1.462449065874791e-17) 1 1 5 5 + (-2.479506055639198e-06,-0.0005026536648164253) 1 1 5 6 + (-2.479506055639198e-06,0.0005026536648163616) 1 1 6 5 + (0.08576437950617996,2.379529960904805e-17) 1 1 6 6 + (-2.479506054679318e-06,0.0005026536648164113) 1 2 5 5 + (0.0812302039665818,-2.590791441335153e-18) 1 2 5 6 + (0.08120124794164121,0.0008011382031676651) 1 2 6 5 + (-2.205619145642657e-06,0.0004471136401589774) 1 2 6 6 + (-2.479506054683944e-06,-0.0005026536648163803) 2 1 5 5 + (0.08120124794164121,-0.0008011382031676724) 2 1 5 6 + (0.08123020396658179,-4.113191991866882e-18) 2 1 6 5 + (-2.20561914566116e-06,-0.0004471136401589477) 2 1 6 6 + (0.08576437950617861,2.418199060990963e-17) 2 2 5 5 + (-2.205619147638745e-06,-0.0004471136401590125) 2 2 5 6 + (-2.205619147638745e-06,0.0004471136401589292) 2 2 6 5 + (0.09024674161245194,3.514390863933967e-17) 2 2 6 6 + (0.1634349442590131,0.01702841292650163) 1 3 1 5 + (0.003912453581370633,-0.03943732789841327) 1 3 1 6 + (0.003912453581370835,-0.03943732789841325) 1 3 2 5 + (0.1652783790589717,0.01557382257204559) 1 3 2 6 + (0.001491244165239737,-0.01431263252106675) 1 4 1 5 + (-0.100549458173893,-0.00997519617450426) 1 4 1 6 + (-0.100549458173893,-0.009975196174504274) 1 4 2 5 + (0.001292617882025716,-0.01371800529322558) 1 4 2 6 + (-0.001388326507321389,0.01399425943568825) 2 3 1 5 + (0.1000394901657035,0.009426503794176078) 2 3 1 6 + (0.1000394901657035,0.009426503794176099) 2 3 2 5 + (-0.00120373855994002,0.01348674941244776) 2 3 2 6 + (-0.1659162776407803,-0.01646003315532456) 2 4 1 5 + (-0.003779582337555675,0.04011110625030745) 2 4 1 6 + (-0.003779582337555895,0.04011110625030744) 2 4 2 5 + (-0.1691593804648746,-0.01509805314710435) 2 4 2 6 + (0.1670203226102255,-3.68917859224401e-16) 1 3 3 1 + (0.0001145993432920498,-0.02323152801417375) 1 3 3 2 + (-5.624500633757042e-11,0.02358038555127423) 1 3 4 1 + (-0.1694636385879515,-0.0008359507931346837) 1 3 4 2 + (-5.624413434990316e-11,-0.02358038555127426) 1 4 3 1 + (-0.09900294903198062,-0.0004883737410329818) 1 4 3 2 + (0.0995539730142897,2.6078676255518e-16) 1 4 4 1 + (-0.0001180590620086704,0.02393288123652593) 1 4 4 2 + (0.0001145993432924199,0.02323152801417354) 2 3 3 1 + (0.09849347059890826,-7.401486830834377e-17) 2 3 3 2 + (-0.09900294903198348,0.0004883737410331095) 2 3 4 1 + (5.443598349863521e-11,-0.02360546957754622) 2 3 4 2 + (-0.1694636385879528,0.0008359507931352747) 2 4 3 1 + (5.443274534814672e-11,0.02360546957754634) 2 4 3 2 + (-0.0001180590620119872,-0.02393288123652578) 2 4 4 1 + (0.1733685146608734,-2.278270165116206e-16) 2 4 4 2 + (0.1670203226102255,4.250072516143177e-16) 1 3 5 3 + (-5.624427891019283e-11,0.02358038555127433) 1 3 5 4 + (0.0001145993432922985,-0.02323152801417363) 1 3 6 3 + (-0.1694636385879526,-0.0008359507931354022) 1 3 6 4 + (-5.624507919595641e-11,-0.02358038555127418) 1 4 5 3 + (0.0995539730142897,-1.827242061362237e-16) 1 4 5 4 + (-0.09900294903198348,-0.0004883737410331338) 1 4 6 3 + (-0.0001180590620120595,0.0239328812365257) 1 4 6 4 + (0.0001145993432920892,0.02323152801417371) 2 3 5 3 + (-0.09900294903198065,0.0004883737410328965) 2 3 5 4 + (0.09849347059890824,1.150699905731282e-16) 2 3 6 3 + (5.443283728849094e-11,-0.02360546957754629) 2 3 6 4 + (-0.1694636385879515,0.0008359507931346504) 2 4 5 3 + (-0.0001180590620085409,-0.02393288123652602) 2 4 5 4 + (5.443611996354865e-11,0.02360546957754631) 2 4 6 3 + (0.1733685146608733,3.747002708109903e-16) 2 4 6 4 + (0.1634349442590131,0.01702841292650163) 1 5 1 3 + (0.001491244165239737,-0.01431263252106675) 1 5 1 4 + (-0.001388326507321389,0.01399425943568825) 1 5 2 3 + (-0.1659162776407803,-0.01646003315532456) 1 5 2 4 + (0.003912453581370633,-0.03943732789841327) 1 6 1 3 + (-0.100549458173893,-0.00997519617450426) 1 6 1 4 + (0.1000394901657035,0.009426503794176078) 1 6 2 3 + (-0.003779582337555675,0.04011110625030745) 1 6 2 4 + (0.003912453581370835,-0.03943732789841325) 2 5 1 3 + (-0.100549458173893,-0.009975196174504274) 2 5 1 4 + (0.1000394901657035,0.009426503794176099) 2 5 2 3 + (-0.003779582337555895,0.04011110625030744) 2 5 2 4 + (0.1652783790589717,0.01557382257204559) 2 6 1 3 + (0.001292617882025716,-0.01371800529322558) 2 6 1 4 + (-0.00120373855994002,0.01348674941244776) 2 6 2 3 + (-0.1691593804648746,-0.01509805314710435) 2 6 2 4 + (0.1634349442590129,0.01702841292650152) 1 5 3 5 + (-0.001388326507317331,0.01399425943568778) 1 5 3 6 + (0.001491244165238676,-0.014312632521067) 1 5 4 5 + (-0.1659162776407827,-0.01646003315532496) 1 5 4 6 + (0.00391245358136957,-0.03943732789841396) 1 6 3 5 + (0.1000394901657034,0.009426503794176058) 1 6 3 6 + (-0.1005494581738941,-0.009975196174504196) 1 6 4 5 + (-0.00377958233755704,0.04011110625030703) 1 6 4 6 + (0.003912453581369782,-0.03943732789841393) 2 5 3 5 + (0.1000394901657034,0.009426503794176071) 2 5 3 6 + (-0.1005494581738941,-0.009975196174504207) 2 5 4 5 + (-0.003779582337557208,0.040111106250307) 2 5 4 6 + (0.1652783790589725,0.01557382257204543) 2 6 3 5 + (-0.001203738559945268,0.01348674941244759) 2 6 3 6 + (0.001292617882025225,-0.01371800529322558) 2 6 4 5 + (-0.1691593804648764,-0.01509805314710489) 2 6 4 6 + (0.1624948351125007,-3.475229363540203e-16) 1 5 5 1 + (-0.0001491575476462055,0.03023717583700719) 1 5 5 2 + (-0.0001491575476464032,0.0302371758370072) 1 5 6 1 + (0.1641806377344492,0.00161981966782082) 1 5 6 2 + (-0.0001491575476487277,-0.03023717583700719) 1 6 5 1 + (0.1040930452518483,1.590163186312073e-17) 1 6 5 2 + (0.1040930452518483,6.216092455583558e-17) 1 6 6 1 + (0.0001474677879644258,-0.02989462809413471) 1 6 6 2 + (-0.0001491575476485057,-0.03023717583700719) 2 5 5 1 + (0.1040930452518483,5.522203065192836e-17) 2 5 5 2 + (0.1040930452518483,9.194034422677078e-17) 2 5 6 1 + (0.0001474677879645912,-0.02989462809413471) 2 5 6 2 + (0.164180637734448,-0.001619819667821107) 2 6 5 1 + (0.0001474677879607274,0.02989462809413502) 2 6 5 2 + (0.0001474677879605002,0.02989462809413503) 2 6 6 1 + (0.1673679453628018,-2.573173156032264e-16) 2 6 6 2 + (0.1670203226102255,-3.68917859224401e-16) 3 1 1 3 + (-5.624413434990316e-11,-0.02358038555127426) 3 1 1 4 + (0.0001145993432924199,0.02323152801417354) 3 1 2 3 + (-0.1694636385879528,0.0008359507931352747) 3 1 2 4 + (0.0001145993432920498,-0.02323152801417375) 3 2 1 3 + (-0.09900294903198062,-0.0004883737410329818) 3 2 1 4 + (0.09849347059890826,-7.401486830834377e-17) 3 2 2 3 + (5.443274534814672e-11,0.02360546957754634) 3 2 2 4 + (-5.624500633757042e-11,0.02358038555127423) 4 1 1 3 + (0.0995539730142897,2.6078676255518e-16) 4 1 1 4 + (-0.09900294903198348,0.0004883737410331095) 4 1 2 3 + (-0.0001180590620119872,-0.02393288123652578) 4 1 2 4 + (-0.1694636385879515,-0.0008359507931346837) 4 2 1 3 + (-0.0001180590620086704,0.02393288123652593) 4 2 1 4 + (5.443598349863521e-11,-0.02360546957754622) 4 2 2 3 + (0.1733685146608734,-2.278270165116206e-16) 4 2 2 4 + (0.1670203226102255,-4.250072516143177e-16) 3 1 3 5 + (0.0001145993432922985,0.02323152801417363) 3 1 3 6 + (-5.624427891019283e-11,-0.02358038555127433) 3 1 4 5 + (-0.1694636385879526,0.0008359507931354022) 3 1 4 6 + (0.0001145993432920892,-0.02323152801417371) 3 2 3 5 + (0.09849347059890824,-1.150699905731282e-16) 3 2 3 6 + (-0.09900294903198065,-0.0004883737410328965) 3 2 4 5 + (5.443283728849094e-11,0.02360546957754629) 3 2 4 6 + (-5.624507919595641e-11,0.02358038555127418) 4 1 3 5 + (-0.09900294903198348,0.0004883737410331338) 4 1 3 6 + (0.0995539730142897,1.827242061362237e-16) 4 1 4 5 + (-0.0001180590620120595,-0.0239328812365257) 4 1 4 6 + (-0.1694636385879515,-0.0008359507931346504) 4 2 3 5 + (5.443611996354865e-11,-0.02360546957754631) 4 2 3 6 + (-0.0001180590620085409,0.02393288123652602) 4 2 4 5 + (0.1733685146608733,-3.747002708109903e-16) 4 2 4 6 + (0.1634349442590131,-0.01702841292650163) 3 1 5 1 + (0.003912453581370835,0.03943732789841325) 3 1 5 2 + (0.003912453581370633,0.03943732789841327) 3 1 6 1 + (0.1652783790589717,-0.01557382257204559) 3 1 6 2 + (-0.001388326507321389,-0.01399425943568825) 3 2 5 1 + (0.1000394901657035,-0.009426503794176099) 3 2 5 2 + (0.1000394901657035,-0.009426503794176078) 3 2 6 1 + (-0.00120373855994002,-0.01348674941244776) 3 2 6 2 + (0.001491244165239737,0.01431263252106675) 4 1 5 1 + (-0.100549458173893,0.009975196174504274) 4 1 5 2 + (-0.100549458173893,0.00997519617450426) 4 1 6 1 + (0.001292617882025716,0.01371800529322558) 4 1 6 2 + (-0.1659162776407803,0.01646003315532456) 4 2 5 1 + (-0.003779582337555895,-0.04011110625030744) 4 2 5 2 + (-0.003779582337555675,-0.04011110625030745) 4 2 6 1 + (-0.1691593804648746,0.01509805314710435) 4 2 6 2 + (0.08186093581182831,1.439319908845319e-17) 3 3 1 1 + (-2.398183224320075e-06,0.0004861670808367863) 3 3 1 2 + (-2.398183224327013e-06,-0.0004861670808367577) 3 3 2 1 + (0.08490551084813504,2.399894637478594e-17) 3 3 2 2 + (-0.08135253028106317,-0.0004013056181145857) 3 4 1 2 + (-0.08135253028106317,0.0004013056181145883) 3 4 2 1 + (-0.08135253028106317,-0.0004013056181145809) 4 3 1 2 + (-0.08135253028106317,0.0004013056181145932) 4 3 2 1 + (0.08690927563671763,2.426794594291442e-17) 4 4 1 1 + (-2.300021180991207e-06,0.0004662516364352492) 4 4 1 2 + (-2.300021181000459e-06,-0.0004662516364352186) 4 4 2 1 + (0.09139354392753087,3.559325499120458e-17) 4 4 2 2 + (0.08100304986196907,1.463419590374695e-17) 3 3 3 3 + (0.08602156026990884,2.385304398852238e-17) 3 3 4 4 + (0.08148956550829289,6.881453090837141e-18) 3 4 3 4 + (0.08148956550829289,-7.592772625704049e-19) 3 4 4 3 + (0.08148956550829289,-5.072564775707998e-18) 4 3 3 4 + (0.08148956550829289,-1.271329512911564e-17) 4 3 4 3 + (0.08602156026990831,2.438726480086434e-17) 4 4 3 3 + (0.09257586830486653,3.577333624661664e-17) 4 4 4 4 + (0.08186093581182713,1.486220205878391e-17) 3 3 5 5 + (-2.398183223453291e-06,-0.000486167080836803) 3 3 5 6 + (-2.398183223453291e-06,0.0004861670808367401) 3 3 6 5 + (0.08490551084813594,2.392095832693721e-17) 3 3 6 6 + (-0.08135253028106322,0.0004013056181145874) 3 4 5 6 + (-0.08135253028106322,-0.0004013056181145867) 3 4 6 5 + (-0.08135253028106322,0.0004013056181145931) 4 3 5 6 + (-0.08135253028106322,-0.0004013056181145809) 4 3 6 5 + (0.08690927563671724,2.404907149910723e-17) 4 4 5 5 + (-2.300021180850116e-06,-0.0004662516364352735) 4 4 5 6 + (-2.300021180850116e-06,0.0004662516364351872) 4 4 6 5 + (0.09139354392752966,3.530200242246682e-17) 4 4 6 6 + (0.1634349442590129,0.01702841292650152) 3 5 1 5 + (0.00391245358136957,-0.03943732789841396) 3 5 1 6 + (0.003912453581369782,-0.03943732789841393) 3 5 2 5 + (0.1652783790589725,0.01557382257204543) 3 5 2 6 + (-0.001388326507317331,0.01399425943568778) 3 6 1 5 + (0.1000394901657034,0.009426503794176058) 3 6 1 6 + (0.1000394901657034,0.009426503794176071) 3 6 2 5 + (-0.001203738559945268,0.01348674941244759) 3 6 2 6 + (0.001491244165238676,-0.014312632521067) 4 5 1 5 + (-0.1005494581738941,-0.009975196174504196) 4 5 1 6 + (-0.1005494581738941,-0.009975196174504207) 4 5 2 5 + (0.001292617882025225,-0.01371800529322558) 4 5 2 6 + (-0.1659162776407827,-0.01646003315532496) 4 6 1 5 + (-0.00377958233755704,0.04011110625030703) 4 6 1 6 + (-0.003779582337557208,0.040111106250307) 4 6 2 5 + (-0.1691593804648764,-0.01509805314710489) 4 6 2 6 + (0.1670203226102255,-4.250072516143177e-16) 3 5 3 1 + (0.0001145993432920892,-0.02323152801417371) 3 5 3 2 + (-5.624507919595641e-11,0.02358038555127418) 3 5 4 1 + (-0.1694636385879515,-0.0008359507931346504) 3 5 4 2 + (0.0001145993432922985,0.02323152801417363) 3 6 3 1 + (0.09849347059890824,-1.150699905731282e-16) 3 6 3 2 + (-0.09900294903198348,0.0004883737410331338) 3 6 4 1 + (5.443611996354865e-11,-0.02360546957754631) 3 6 4 2 + (-5.624427891019283e-11,-0.02358038555127433) 4 5 3 1 + (-0.09900294903198065,-0.0004883737410328965) 4 5 3 2 + (0.0995539730142897,1.827242061362237e-16) 4 5 4 1 + (-0.0001180590620085409,0.02393288123652602) 4 5 4 2 + (-0.1694636385879526,0.0008359507931354022) 4 6 3 1 + (5.443283728849094e-11,0.02360546957754629) 4 6 3 2 + (-0.0001180590620120595,-0.0239328812365257) 4 6 4 1 + (0.1733685146608733,-3.747002708109903e-16) 4 6 4 2 + (0.1670203226102255,-3.650147314034531e-16) 3 5 5 3 + (-5.624521016757884e-11,0.02358038555127428) 3 5 5 4 + (0.0001145993432919885,-0.02323152801417378) 3 5 6 3 + (-0.1694636385879515,-0.0008359507931347527) 3 5 6 4 + (0.0001145993432923612,0.02323152801417358) 3 6 5 3 + (-0.09900294903198348,0.0004883737410330624) 3 6 5 4 + (0.09849347059890823,-9.14343832129442e-17) 3 6 6 3 + (5.443621219301346e-11,-0.02360546957754626) 3 6 6 4 + (-5.624433268662058e-11,-0.02358038555127428) 4 5 5 3 + (0.09955397301428967,2.75170511376821e-16) 4 5 5 4 + (-0.09900294903198056,-0.0004883737410329299) 4 5 6 3 + (-0.0001180590620086071,0.02393288123652597) 4 5 6 4 + (-0.1694636385879526,0.0008359507931353433) 4 6 5 3 + (-0.000118059062011945,-0.02393288123652579) 4 6 5 4 + (5.443293587860849e-11,0.02360546957754638) 4 6 6 3 + (0.1733685146608733,-2.732189474663471e-16) 4 6 6 4 + (0.1624948351125007,-3.475229363540203e-16) 5 1 1 5 + (-0.0001491575476487277,-0.03023717583700719) 5 1 1 6 + (-0.0001491575476485057,-0.03023717583700719) 5 1 2 5 + (0.164180637734448,-0.001619819667821107) 5 1 2 6 + (-0.0001491575476462055,0.03023717583700719) 5 2 1 5 + (0.1040930452518483,1.590163186312073e-17) 5 2 1 6 + (0.1040930452518483,5.522203065192836e-17) 5 2 2 5 + (0.0001474677879607274,0.02989462809413502) 5 2 2 6 + (-0.0001491575476464032,0.0302371758370072) 6 1 1 5 + (0.1040930452518483,6.216092455583558e-17) 6 1 1 6 + (0.1040930452518483,9.194034422677078e-17) 6 1 2 5 + (0.0001474677879605002,0.02989462809413503) 6 1 2 6 + (0.1641806377344492,0.00161981966782082) 6 2 1 5 + (0.0001474677879644258,-0.02989462809413471) 6 2 1 6 + (0.0001474677879645912,-0.02989462809413471) 6 2 2 5 + (0.1673679453628018,-2.573173156032264e-16) 6 2 2 6 + (0.1634349442590131,-0.01702841292650163) 5 1 3 1 + (-0.001388326507321389,-0.01399425943568825) 5 1 3 2 + (0.001491244165239737,0.01431263252106675) 5 1 4 1 + (-0.1659162776407803,0.01646003315532456) 5 1 4 2 + (0.003912453581370835,0.03943732789841325) 5 2 3 1 + (0.1000394901657035,-0.009426503794176099) 5 2 3 2 + (-0.100549458173893,0.009975196174504274) 5 2 4 1 + (-0.003779582337555895,-0.04011110625030744) 5 2 4 2 + (0.003912453581370633,0.03943732789841327) 6 1 3 1 + (0.1000394901657035,-0.009426503794176078) 6 1 3 2 + (-0.100549458173893,0.00997519617450426) 6 1 4 1 + (-0.003779582337555675,-0.04011110625030745) 6 1 4 2 + (0.1652783790589717,-0.01557382257204559) 6 2 3 1 + (-0.00120373855994002,-0.01348674941244776) 6 2 3 2 + (0.001292617882025716,0.01371800529322558) 6 2 4 1 + (-0.1691593804648746,0.01509805314710435) 6 2 4 2 + (0.1634349442590129,-0.01702841292650152) 5 1 5 3 + (0.001491244165238676,0.014312632521067) 5 1 5 4 + (-0.001388326507317331,-0.01399425943568778) 5 1 6 3 + (-0.1659162776407827,0.01646003315532496) 5 1 6 4 + (0.003912453581369782,0.03943732789841393) 5 2 5 3 + (-0.1005494581738941,0.009975196174504207) 5 2 5 4 + (0.1000394901657034,-0.009426503794176071) 5 2 6 3 + (-0.003779582337557208,-0.040111106250307) 5 2 6 4 + (0.00391245358136957,0.03943732789841396) 6 1 5 3 + (-0.1005494581738941,0.009975196174504196) 6 1 5 4 + (0.1000394901657034,-0.009426503794176058) 6 1 6 3 + (-0.00377958233755704,-0.04011110625030703) 6 1 6 4 + (0.1652783790589725,-0.01557382257204543) 6 2 5 3 + (0.001292617882025225,0.01371800529322558) 6 2 5 4 + (-0.001203738559945268,-0.01348674941244759) 6 2 6 3 + (-0.1691593804648764,0.01509805314710489) 6 2 6 4 + (0.1670203226102255,4.250072516143177e-16) 5 3 1 3 + (-5.624507919595641e-11,-0.02358038555127418) 5 3 1 4 + (0.0001145993432920892,0.02323152801417371) 5 3 2 3 + (-0.1694636385879515,0.0008359507931346504) 5 3 2 4 + (-5.624427891019283e-11,0.02358038555127433) 5 4 1 3 + (0.0995539730142897,-1.827242061362237e-16) 5 4 1 4 + (-0.09900294903198065,0.0004883737410328965) 5 4 2 3 + (-0.0001180590620085409,-0.02393288123652602) 5 4 2 4 + (0.0001145993432922985,-0.02323152801417363) 6 3 1 3 + (-0.09900294903198348,-0.0004883737410331338) 6 3 1 4 + (0.09849347059890824,1.150699905731282e-16) 6 3 2 3 + (5.443611996354865e-11,0.02360546957754631) 6 3 2 4 + (-0.1694636385879526,-0.0008359507931354022) 6 4 1 3 + (-0.0001180590620120595,0.0239328812365257) 6 4 1 4 + (5.443283728849094e-11,-0.02360546957754629) 6 4 2 3 + (0.1733685146608733,3.747002708109903e-16) 6 4 2 4 + (0.1670203226102255,-3.650147314034531e-16) 5 3 3 5 + (0.0001145993432923612,0.02323152801417358) 5 3 3 6 + (-5.624433268662058e-11,-0.02358038555127428) 5 3 4 5 + (-0.1694636385879526,0.0008359507931353433) 5 3 4 6 + (-5.624521016757884e-11,0.02358038555127428) 5 4 3 5 + (-0.09900294903198348,0.0004883737410330624) 5 4 3 6 + (0.09955397301428967,2.75170511376821e-16) 5 4 4 5 + (-0.000118059062011945,-0.02393288123652579) 5 4 4 6 + (0.0001145993432919885,-0.02323152801417378) 6 3 3 5 + (0.09849347059890823,-9.14343832129442e-17) 6 3 3 6 + (-0.09900294903198056,-0.0004883737410329299) 6 3 4 5 + (5.443293587860849e-11,0.02360546957754638) 6 3 4 6 + (-0.1694636385879515,-0.0008359507931347527) 6 4 3 5 + (5.443621219301346e-11,-0.02360546957754626) 6 4 3 6 + (-0.0001180590620086071,0.02393288123652597) 6 4 4 5 + (0.1733685146608733,-2.732189474663471e-16) 6 4 4 6 + (0.1634349442590129,-0.01702841292650152) 5 3 5 1 + (0.003912453581369782,0.03943732789841393) 5 3 5 2 + (0.00391245358136957,0.03943732789841396) 5 3 6 1 + (0.1652783790589725,-0.01557382257204543) 5 3 6 2 + (0.001491244165238676,0.014312632521067) 5 4 5 1 + (-0.1005494581738941,0.009975196174504207) 5 4 5 2 + (-0.1005494581738941,0.009975196174504196) 5 4 6 1 + (0.001292617882025225,0.01371800529322558) 5 4 6 2 + (-0.001388326507317331,-0.01399425943568778) 6 3 5 1 + (0.1000394901657034,-0.009426503794176071) 6 3 5 2 + (0.1000394901657034,-0.009426503794176058) 6 3 6 1 + (-0.001203738559945268,-0.01348674941244759) 6 3 6 2 + (-0.1659162776407827,0.01646003315532496) 6 4 5 1 + (-0.003779582337557208,-0.040111106250307) 6 4 5 2 + (-0.00377958233755704,-0.04011110625030703) 6 4 6 1 + (-0.1691593804648764,0.01509805314710489) 6 4 6 2 + (0.08274265530504465,1.462449065874791e-17) 5 5 1 1 + (-2.479506054679318e-06,0.0005026536648164113) 5 5 1 2 + (-2.479506054683944e-06,-0.0005026536648163803) 5 5 2 1 + (0.08576437950617861,2.418199060990963e-17) 5 5 2 2 + (-2.479506055639198e-06,-0.0005026536648164253) 5 6 1 1 + (0.0812302039665818,-2.590791441335153e-18) 5 6 1 2 + (0.08120124794164121,-0.0008011382031676724) 5 6 2 1 + (-2.205619147638745e-06,-0.0004471136401590125) 5 6 2 2 + (-2.479506055639198e-06,0.0005026536648163616) 6 5 1 1 + (0.08120124794164121,0.0008011382031676651) 6 5 1 2 + (0.08123020396658179,-4.113191991866882e-18) 6 5 2 1 + (-2.205619147638745e-06,0.0004471136401589292) 6 5 2 2 + (0.08576437950617996,2.379529960904805e-17) 6 6 1 1 + (-2.205619145642657e-06,0.0004471136401589774) 6 6 1 2 + (-2.20561914566116e-06,-0.0004471136401589477) 6 6 2 1 + (0.09024674161245194,3.514390863933967e-17) 6 6 2 2 + (0.08186093581182713,1.486220205878391e-17) 5 5 3 3 + (0.08690927563671724,2.404907149910723e-17) 5 5 4 4 + (-2.398183223453291e-06,-0.000486167080836803) 5 6 3 3 + (-0.08135253028106322,0.0004013056181145874) 5 6 3 4 + (-0.08135253028106322,0.0004013056181145931) 5 6 4 3 + (-2.300021180850116e-06,-0.0004662516364352735) 5 6 4 4 + (-2.398183223453291e-06,0.0004861670808367401) 6 5 3 3 + (-0.08135253028106322,-0.0004013056181145867) 6 5 3 4 + (-0.08135253028106322,-0.0004013056181145809) 6 5 4 3 + (-2.300021180850116e-06,0.0004662516364351872) 6 5 4 4 + (0.08490551084813594,2.392095832693721e-17) 6 6 3 3 + (0.09139354392752966,3.530200242246682e-17) 6 6 4 4 + (0.08274265530504465,1.553368617778203e-17) 5 5 5 5 + (-2.479506054683944e-06,-0.00050265366481638) 5 5 5 6 + (-2.479506054681631e-06,0.0005026536648164115) 5 5 6 5 + (0.08576437950617861,2.396676213461929e-17) 5 5 6 6 + (-2.479506055511985e-06,-0.0005026536648164266) 5 6 5 5 + (0.0812012479416412,-0.0008011382031676694) 5 6 5 6 + (0.08123020396658179,-4.625929269271485e-18) 5 6 6 5 + (-2.205619147763645e-06,-0.0004471136401590119) 5 6 6 6 + (-2.479506055511985e-06,0.0005026536648163611) 6 5 5 5 + (0.08123020396658179,-1.793451093653105e-18) 6 5 5 6 + (0.08120124794164121,0.0008011382031676628) 6 5 6 5 + (-2.205619147763645e-06,0.0004471136401589292) 6 5 6 6 + (0.08576437950617991,2.480326550920499e-17) 6 6 5 5 + (-2.20561914566116e-06,-0.0004471136401589472) 6 6 5 6 + (-2.205619145644969e-06,0.0004471136401589774) 6 6 6 5 + (0.09024674161245194,3.494259834920406e-17) 6 6 6 6 + (-0.2361118143543865,-1.734723475976807e-18) 1 1 0 0 + (-1.11950834607284e-05,-0.002269444742677334) 2 1 0 0 + (-0.1549125174368408,-3.469446951953614e-18) 2 2 0 0 + (-0.2430063109624478,1.232595164407831e-32) 3 3 0 0 + (-0.1450417456795436,-6.162975822039155e-33) 4 4 0 0 + (-0.2361118143543864,1.734723475976807e-18) 5 5 0 0 + (-1.119508346068078e-05,0.002269444742677323) 6 5 0 0 + (-0.1549125174368408,2.602085213965211e-18) 6 6 0 0 + (-0.8265834074960368,0) 0 0 0 0 + (-0.2436553798322174,0) 1 0 0 0 + (0.09249223076210075,0) 2 0 0 0 + (-0.2559578647514893,0) 3 0 0 0 + (0.1096957006321202,0) 4 0 0 0 + (-0.2436553798322181,0) 5 0 0 0 + (0.09249223076210017,0) 6 0 0 0 diff --git a/pyscf/tools/test/pbcfcidump/FCIDUMP_v_X b/pyscf/tools/test/pbcfcidump/FCIDUMP_v_X new file mode 100644 index 0000000000..607cb3f0a0 --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/FCIDUMP_v_X @@ -0,0 +1,68 @@ + (0.2407038525047048,1.082021246079719e-16) 1 1 1 1 + (-2.532745771749445e-06,-0.0005134464583293212) 1 1 2 1 + (-2.532745768765721e-06,0.0005134464583293611) 1 2 1 1 + (0.08170202749640673,-1.410889795140563e-16) 1 2 2 1 + (0.08170202749641919,-7.919679464186999e-17) 2 1 1 2 + (-2.255080118071517e-06,-0.0004571403052930277) 2 1 2 2 + (-2.255080119972774e-06,0.0004571403052930411) 2 2 1 2 + (0.2484159990534629,5.292938582747898e-17) 2 2 2 2 + (0.1317395024991428,-2.576845545322839e-17) 1 3 3 1 + (-5.133871799900547e-11,0.01219187272355532) 1 3 4 1 + (-5.133869024342985e-11,-0.01219187272355533) 1 4 3 1 + (0.09148966143874965,2.417324242758702e-17) 1 4 4 1 + (0.09025699249374214,2.205668205543848e-17) 2 3 3 2 + (4.912458634320771e-11,-0.01230520384845386) 2 3 4 2 + (4.912454470984429e-11,0.01230520384845384) 2 4 3 2 + (0.1395545845611095,-3.964172758866173e-17) 2 4 4 2 + (0.1297923088426019,-8.361737576270422e-17) 1 5 5 1 + (-8.140524087321688e-05,0.0165024514915924) 1 5 6 1 + (-8.140524087369566e-05,-0.01650245149159234) 1 6 5 1 + (0.0935052328664443,6.82132615030797e-17) 1 6 6 1 + (0.09350523286644337,2.161878261834739e-16) 2 5 5 2 + (7.999647001106364e-05,-0.01621686564232663) 2 5 6 2 + (7.999647001117466e-05,0.01621686564232668) 2 6 5 2 + (0.1357555041782005,-2.363860966703481e-16) 2 6 6 2 + (0.1317395024991376,2.614988669647146e-16) 3 1 1 3 + (5.803649297768387e-05,0.01176512801538022) 3 1 2 3 + (5.803649297853736e-05,-0.01176512801538016) 3 2 1 3 + (0.09025699249373627,-3.72711653042095e-16) 3 2 2 3 + (0.09148966143874611,-2.577729663306589e-16) 4 1 1 4 + (-6.27139252384612e-05,-0.01271333575923992) 4 1 2 4 + (-6.271392523838487e-05,0.01271333575923992) 4 2 1 4 + (0.1395545845611055,2.190025809071896e-16) 4 2 2 4 + (0.2389230615518166,-1.615802588166611e-17) 3 3 3 3 + (0.08196283441305202,2.491541549857938e-18) 3 4 4 3 + (0.08196283441305192,2.491541549857977e-18) 4 3 3 4 + (0.2507969181841901,-3.692064744508696e-17) 4 4 4 4 + (0.1317395024991372,-2.608432302627035e-16) 3 5 5 3 + (5.803649297755203e-05,-0.01176512801538025) 3 5 6 3 + (5.803649297857899e-05,0.01176512801538023) 3 6 5 3 + (0.09025699249373594,3.416987598660992e-16) 3 6 6 3 + (0.09148966143874628,2.780830688835513e-16) 4 5 5 4 + (-6.271392523828079e-05,0.01271333575923998) 4 5 6 4 + (-6.27139252383363e-05,-0.01271333575923993) 4 6 5 4 + (0.1395545845611055,-3.07647683810046e-16) 4 6 6 4 + (0.129792308842602,1.180857154289521e-16) 5 1 1 5 + (-8.14052408730781e-05,-0.01650245149159227) 5 1 2 5 + (-8.140524087369566e-05,0.01650245149159224) 5 2 1 5 + (0.09350523286644398,-8.236322483949717e-17) 5 2 2 5 + (0.09350523286644377,-3.039029901597129e-16) 6 1 1 6 + (7.99964700107722e-05,0.01621686564232651) 6 1 2 6 + (7.999647001095261e-05,-0.01621686564232654) 6 2 1 6 + (0.1357555041782011,2.781597311485436e-16) 6 2 2 6 + (0.1317395024991428,2.155803724404572e-17) 5 3 3 5 + (-5.133891228803478e-11,-0.01219187272355534) 5 3 4 5 + (-5.13387735101567e-11,0.01219187272355531) 5 4 3 5 + (0.09148966143874955,-4.828666794829505e-17) 5 4 4 5 + (0.09025699249374208,-4.57502229170606e-17) 6 3 3 6 + (4.912480144891873e-11,0.01230520384845383) 6 3 4 6 + (4.912464879325285e-11,-0.01230520384845386) 6 4 3 6 + (0.1395545845611096,7.28801150015518e-19) 6 4 4 6 + (0.2407038525047046,-1.340253534636805e-16) 5 5 5 5 + (-2.532745771652301e-06,0.0005134464583292783) 5 5 6 5 + (-2.532745768626943e-06,-0.0005134464583292821) 5 6 5 5 + (0.08170202749640666,1.380097080546886e-16) 5 6 6 5 + (0.08170202749641922,7.822631409974531e-17) 6 5 5 6 + (-2.255080118154784e-06,0.0004571403052931235) 6 5 6 6 + (-2.255080120097674e-06,-0.0004571403052930758) 6 6 5 6 + (0.2484159990534628,-1.237970096291383e-16) 6 6 6 6 diff --git a/pyscf/tools/test/pbcfcidump/helpers/ase_and_cell.py b/pyscf/tools/test/pbcfcidump/helpers/ase_and_cell.py new file mode 100644 index 0000000000..eeb94ea738 --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/helpers/ase_and_cell.py @@ -0,0 +1,161 @@ +import numpy as np + +from pyscf.pbc import gto as pbcgto +from pyscf.pbc import tools as pbctools +import pyscf.pbc.tools.pyscf_ase as pyscf_ase + +A2B = 1.889725989 + + +def get_ase_atom(formula): + formula = formula.lower() + assert formula in ['lih', 'lif', 'licl', 'mgo', + 'c', 'si', 'ge', 'sic', 'gaas', 'gan', 'cds', + 'zns', 'zno', 'bn', 'alp'] + if formula == 'lih': + ase_atom = get_ase_rocksalt('Li', 'H') + elif formula == 'lif': + ase_atom = get_ase_rocksalt('Li', 'F') + elif formula == 'licl': + ase_atom = get_ase_rocksalt('Li', 'Cl') + elif formula == 'mgo': + ase_atom = get_ase_rocksalt('Mg', 'O') + elif formula == 'c': + ase_atom = get_ase_diamond_primitive('C') + elif formula == 'si': + ase_atom = get_ase_diamond_primitive('Si') + elif formula == 'ge': + ase_atom = get_ase_diamond_primitive('Ge') + elif formula == 'sic': + ase_atom = get_ase_zincblende('Si', 'C') + elif formula == 'gaas': + ase_atom = get_ase_zincblende('Ga', 'As') + elif formula == 'gan': + ase_atom = get_ase_zincblende('Ga', 'N') + elif formula == 'bn': + ase_atom = get_ase_zincblende('B', 'N') + elif formula == 'alp': + ase_atom = get_ase_zincblende('Al', 'P') + + return ase_atom + + +def get_bandpath_fcc(ase_atom, npoints=30): + # Set-up the band-path via special points + from ase.dft.kpoints import ibz_points, kpoint_convert, get_bandpath + points = ibz_points['fcc'] + G = points['Gamma'] + X = points['X'] + W = points['W'] + K = points['K'] + L = points['L'] + kpts_reduced, kpath, sp_points = get_bandpath([L, G, X, W, K, G], + ase_atom.cell, npoints=npoints) + kpts_cartes = kpoint_convert(ase_atom.cell, skpts_kc=kpts_reduced) + + return kpts_reduced, kpts_cartes, kpath, sp_points + + +def get_ase_zincblende(A='Ga', B='As'): + # Lattice constants from Shishkin and Kresse, PRB 75, 235102 (2007) + assert A in ['Si', 'Ga', 'Cd', 'Zn', 'B', 'Al'] + assert B in ['C', 'As', 'S', 'O', 'N', 'P'] + from ase.lattice import bulk + if A == 'Si' and B == 'C': + ase_atom = bulk('SiC', 'zincblende', a=4.350*A2B) + elif A == 'Ga' and B == 'As': + ase_atom = bulk('GaAs', 'zincblende', a=5.648*A2B) + elif A == 'Ga' and B == 'N': + ase_atom = bulk('GaN', 'zincblende', a=4.520*A2B) + elif A == 'Cd' and B == 'S': + ase_atom = bulk('CdS', 'zincblende', a=5.832*A2B) + elif A == 'Zn' and B == 'S': + ase_atom = bulk('ZnS', 'zincblende', a=5.420*A2B) + elif A == 'Zn' and B == 'O': + ase_atom = bulk('ZnO', 'zincblende', a=4.580*A2B) + elif A == 'B' and B == 'N': + ase_atom = bulk('BN', 'zincblende', a=3.615*A2B) + elif A == 'Al' and B == 'P': + ase_atom = bulk('AlP', 'zincblende', a=5.451*A2B) + + return ase_atom + + +def get_ase_rocksalt(A='Li', B='Cl'): + assert A in ['Li', 'Mg'] + # Add Na, K + assert B in ['H', 'F', 'Cl', 'O'] + # Add Br, I + from ase.lattice import bulk + if A == 'Li': + if B == 'H': + ase_atom = bulk('LiH', 'rocksalt', a=4.0834*A2B) + elif B == 'F': + ase_atom = bulk('LiF', 'rocksalt', a=4.0351*A2B) + elif B == 'Cl': + ase_atom = bulk('LiCl', 'rocksalt', a=5.13*A2B) + elif A == 'Mg' and B == 'O': + ase_atom = bulk('MgO', 'rocksalt', a=4.213*A2B) + + return ase_atom + + +def get_ase_alkali_halide(A='Li', B='Cl'): + return get_ase_rocksalt(A, B) + + +def get_ase_diamond_primitive(atom='C'): + """Get the ASE atoms for primitive (2-atom) diamond unit cell.""" + from ase.lattice import bulk + if atom == 'C': + ase_atom = bulk('C', 'diamond', a=3.5668*A2B) + else: + ase_atom = bulk('Si', 'diamond', a=5.431*A2B) + return ase_atom + + +def get_ase_diamond_cubic(atom='C'): + """Get the ASE atoms for cubic (8-atom) diamond unit cell.""" + from ase.lattice.cubic import Diamond + if atom == 'C': + ase_atom = Diamond(symbol='C', latticeconstant=3.5668*A2B) + else: + ase_atom = Diamond(symbol='Si', latticeconstant=5.431*A2B) + return ase_atom + + +def get_ase_graphene(vacuum=5.0): + """Get the ASE atoms for primitive (2-atom) graphene unit cell.""" + from ase.lattice.hexagonal import Graphene + ase_atom = Graphene('C', latticeconstant={'a': 2.46*A2B, 'c': vacuum*A2B}) + return ase_atom + + +def get_ase_graphene_xxx(vacuum=5.0): + """Get the ASE atoms for primitive (2-atom) graphene unit cell.""" + from ase.lattice import bulk + ase_atom = bulk('C', 'hcp', a=2.46*A2B, c=vacuum*A2B) + ase_atom.positions[1, 2] = 0.0 + return ase_atom + + +def build_cell(ase_atom, unit='B', ke=20.0, gsmax=None, basis='gth-szv', + pseudo='gth-pade', dimension=3, incore_anyway=False): + cell = pbcgto.Cell() + cell.unit = unit + cell.atom = pyscf_ase.ase_atoms_to_pyscf(ase_atom) + cell.a = ase_atom.cell.T + + cell.basis = basis + cell.pseudo = pseudo + cell.dimension = dimension + + cell.incore_anyway = incore_anyway + + if gsmax is not None: + cell.gs = np.array([gsmax, gsmax, gsmax]) + else: + cell.ke_cutoff = ke + + cell.build(verbose=7) + return cell diff --git a/pyscf/tools/test/pbcfcidump/helpers/scf.py b/pyscf/tools/test/pbcfcidump/helpers/scf.py new file mode 100644 index 0000000000..cf11e31ca5 --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/helpers/scf.py @@ -0,0 +1,99 @@ +import numpy as np + +from pyscf.pbc import scf as pbchf +from pyscf.pbc import dft as pbcdft +from pyscf.pbc import df as dfit + +import ase +import ase.lattice +import ase.dft.kpoints + + +def run_hf(cell, exxdiv=None): + """Run a gamma-point Hartree-Fock calculation.""" + mf = pbchf.RHF(cell, exxdiv=exxdiv) + mf.verbose = 7 + print(mf.scf()) + return mf + + +def run_dft(cell): + """Run a gamma-point DFT (LDA) calculation.""" + mf = pbcdft.RKS(cell) + mf.xc = 'lda,vwn' + mf.verbose = 7 + print(mf.scf()) + return mf + + +def run_khf(cell, nmp=[1, 1, 1], gamma=False, kshift=np.zeros(3), exxdiv=None, df=None): + """Run a k-point-sampling Hartree-Fock calculation.""" + scaled_kpts = ase.dft.kpoints.monkhorst_pack(nmp) + print("From MP") + print(scaled_kpts) + + if gamma: + print("Moving!", gamma) + for i in range(3): + if nmp[i] % 2 == 0: + scaled_kpts[:, i] += 0.5/nmp[i] +# # Move first kpt to the Gamma pt +# scaled_kpts -= scaled_kpts[0,:] +# # Shift by kshift + scaled_kpts += kshift + # Put back in BZ + print("Before shifting back") + print(scaled_kpts) + scaled_kpts -= 1.0*np.round(scaled_kpts/1.0) + print("After shifting back") + print(scaled_kpts) + abs_kpts = cell.get_abs_kpts(scaled_kpts) + kmf = pbchf.KRHF(cell, abs_kpts, exxdiv=exxdiv) + if df == 'mix_df': + # use mix density fitting + kmf.with_df = dfit.MDF(cell, abs_kpts) + elif df == 'df': + # use mix density fitting + kmf.with_df = dfit.DF(cell, abs_kpts) + else: + print("default, no density fitting") + kmf.with_df = dfit.FFTDF(cell, abs_kpts) + kmf.verbose = 7 + print(kmf.scf()) + return kmf, scaled_kpts + + +def run_kdft(cell, nmp=[1, 1, 1], gamma=False, df=None): + """Run a k-point-sampling DFT (LDA) calculation.""" + scaled_kpts = ase.dft.kpoints.monkhorst_pack(nmp) + if gamma: + for i in range(3): + if nmp[i] % 2 == 0: + scaled_kpts[:, i] += 0.5/nmp[i] + abs_kpts = cell.get_abs_kpts(scaled_kpts) + print(scaled_kpts) + print(abs_kpts) + kmf = pbcdft.KRKS(cell, abs_kpts) + if df == 'mix_df': + # use mix density fitting + kmf.with_df = dfit.MDF(cell, abs_kpts) + elif df == 'df': + # use mix density fitting + kmf.with_df = dfit.DF(cell, abs_kpts) + else: + print("default, no density fitting") + kmf.with_df = dfit.FFTDF(cell, abs_kpts) + kmf.xc = 'lda,vwn' + kmf.verbose = 7 + print(kmf.scf()) + return kmf, scaled_kpts + + +if __name__ == '__main__': + from pyscfdump.helpers.ase_and_cell import get_ase_diamond_primitive, build_cell + ase_atom = get_ase_diamond_primitive() + cell = build_cell(ase_atom) + run_hf(cell) + run_dft(cell) + run_khf(cell) + run_kdft(cell) diff --git a/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py b/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py new file mode 100644 index 0000000000..cf98fc0370 --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py @@ -0,0 +1,90 @@ +# Based on test_fcidump.py in pyscf. +import ase +from functools import reduce +import unittest +import tempfile +import numpy +import pandas +from pyscf import lib +from pyscf import gto, scf, ao2mo +from pyscf.tools import fcidump +from pyscfdump.helpers.ase_and_cell import build_cell +from pyscfdump.helpers.scf import run_khf +import pyscfdump.pbcfcidump + +basis = "STO-3G" +ke_cutoff = 200.0 +fcid = 'FCIDUMP' +nmp = numpy.array([3, 1, 1]) +ase_atom = ase.Atoms("HH", positions=[[0, 0, 0], [4.0, 0, 0]], + cell=[10.0, 10.0, 10.0], pbc=True) +cell = build_cell(ase_atom, ke=ke_cutoff, basis=basis, incore_anyway=True, + pseudo=None) +mf, scaled_kpts = run_khf(cell, nmp=nmp, gamma=True, exxdiv='ewald') + +def tearDownModule(): + # In line with pyscf testing. + global ase_atom, cell, mf + del ase_atom, cell, mf + +def read_in(filename, exchange=False): + skiprows = {True: 0, False: 6} + integral = numpy.loadtxt(filename, skiprows=skiprows[exchange], + unpack=True, usecols=(0), dtype=str) + i, a, j, b = numpy.loadtxt(filename, skiprows=skiprows[exchange], + unpack=True, usecols=(1,2,3,4), dtype=int) + # https://stackoverflow.com/questions/3559559/how-to-delete-a-character-from-a-string-using-python + integral = numpy.asarray([numpy.complex( + *map(float,inte.replace("(", "").replace(")", "").split(",")) + ) for inte in integral]) + return pandas.DataFrame({'int': integral, 'i': i, 'a': a, 'j': j, 'b': b}) + +def compare_intdumps(filename_new, filename_bench, exchange): + df_new = read_in(filename_new, exchange) + df_bench = read_in(filename_bench, exchange) + df_m = df_new.copy().merge(df_bench.copy(), on=['i', 'a', 'j', 'b'], + how="inner") + df_m['abs_mag_diff'] = abs(abs(df_m['int_x']) - abs(df_m['int_y'])) + df_m['abs_real_diff'] = abs(numpy.array([x.real for x in df_m['int_x']]) + - numpy.array([y.real for y in df_m['int_y']])) + df_m['abs_imag_diff'] = abs(numpy.array([x.imag for x in df_m['int_x']]) + - numpy.array([y.imag for y in df_m['int_y']])) + print("Difference in magnitude of integrals greater than 1e-4:") + print(df_m.query('abs_mag_diff > 1e-4')) + print("Difference in real value of integrals greater than 1e-4:") + print(df_m.query('abs_real_diff > 1e-4')) + print("Difference in imag value of integrals greater than 1e-4:") + print(df_m.query('abs_imag_diff > 1e-4')) + return df_m + +class CalcIntegrals(unittest.TestCase): + + def test_setup(self): + # SCF energy + self.assertAlmostEqual(mf.e_tot, -0.748480339611342) + # scaled_kpts + numpy.testing.assert_array_almost_equal( + scaled_kpts, numpy.array([[-0.3333333, 0., 0.], + [0., 0., 0.], + [0.3333333, 0., 0.]])) + + def test_overall_fcidump(self): + pyscfdump.pbcfcidump.fcidump(fcid, mf, nmp, scaled_kpts, False, + keep_exxdiv=False) + print("testing fcidump") + df_m = compare_intdumps(fcid, fcid+"_e", False) + self.assertTrue(df_m.query('abs_mag_diff > 1e-4').empty) + self.assertTrue(df_m.query('abs_real_diff > 1e-4').empty) + self.assertTrue(df_m.query('abs_imag_diff > 1e-4').empty) + print("testing fcidump_x") + df_m = compare_intdumps(fcid+"_X", fcid+"_e_X", True) + self.assertTrue(df_m.query('abs_mag_diff > 1e-4').empty) + self.assertTrue(df_m.query('abs_real_diff > 1e-4').empty) + self.assertTrue(df_m.query('abs_imag_diff > 1e-4').empty) + +if __name__ == "__main__": + print("Full Tests for pbcfcidump") + unittest.main() + + + diff --git a/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py b/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py new file mode 100644 index 0000000000..e657ea0f68 --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py @@ -0,0 +1,90 @@ +# Based on test_fcidump.py in pyscf. +import ase +from functools import reduce +import unittest +import tempfile +import numpy +import pandas +from pyscf import lib +from pyscf import gto, scf, ao2mo +from pyscf.tools import fcidump +from pyscfdump.helpers.ase_and_cell import build_cell +from pyscfdump.helpers.scf import run_khf +import pyscfdump.pbcfcidump + +basis = "STO-3G" +ke_cutoff = 200.0 +fcid = 'FCIDUMP' +nmp = numpy.array([3, 1, 1]) +ase_atom = ase.Atoms("HH", positions=[[0, 0, 0], [4.0, 0, 0]], + cell=[10.0, 10.0, 10.0], pbc=True) +cell = build_cell(ase_atom, ke=ke_cutoff, basis=basis, incore_anyway=True, + pseudo=None) +mf, scaled_kpts = run_khf(cell, nmp=nmp, gamma=True, exxdiv=None) + +def tearDownModule(): + # In line with pyscf testing. + global ase_atom, cell, mf + del ase_atom, cell, mf + +def read_in(filename, exchange=False): + skiprows = {True: 0, False: 6} + integral = numpy.loadtxt(filename, skiprows=skiprows[exchange], + unpack=True, usecols=(0), dtype=str) + i, a, j, b = numpy.loadtxt(filename, skiprows=skiprows[exchange], + unpack=True, usecols=(1,2,3,4), dtype=int) + # https://stackoverflow.com/questions/3559559/how-to-delete-a-character-from-a-string-using-python + integral = numpy.asarray([numpy.complex( + *map(float,inte.replace("(", "").replace(")", "").split(",")) + ) for inte in integral]) + return pandas.DataFrame({'int': integral, 'i': i, 'a': a, 'j': j, 'b': b}) + +def compare_intdumps(filename_new, filename_bench, exchange): + df_new = read_in(filename_new, exchange) + df_bench = read_in(filename_bench, exchange) + df_m = df_new.copy().merge(df_bench.copy(), on=['i', 'a', 'j', 'b'], + how="inner") + df_m['abs_mag_diff'] = abs(abs(df_m['int_x']) - abs(df_m['int_y'])) + df_m['abs_real_diff'] = abs(numpy.array([x.real for x in df_m['int_x']]) + - numpy.array([y.real for y in df_m['int_y']])) + df_m['abs_imag_diff'] = abs(numpy.array([x.imag for x in df_m['int_x']]) + - numpy.array([y.imag for y in df_m['int_y']])) + print("Difference in magnitude of integrals greater than 1e-6:") + print(df_m.query('abs_mag_diff > 1e-6')) + print("Difference in real value of integrals greater than 1e-6:") + print(df_m.query('abs_real_diff > 1e-6')) + print("Difference in imag value of integrals greater than 1e-6:") + print(df_m.query('abs_imag_diff > 1e-6')) + return df_m + +class CalcIntegrals(unittest.TestCase): + + def test_setup(self): + # SCF energy + self.assertAlmostEqual(mf.e_tot, -0.6726131181709167) + # scaled_kpts + numpy.testing.assert_array_almost_equal( + scaled_kpts, numpy.array([[-0.3333333, 0., 0.], + [0., 0., 0.], + [0.3333333, 0., 0.]])) + + def test_overall_fcidump(self): + pyscfdump.pbcfcidump.fcidump(fcid, mf, nmp, scaled_kpts, False, + keep_exxdiv=False) + print("testing fcidump") + df_m = compare_intdumps(fcid, fcid+"_no", False) + self.assertTrue(df_m.query('abs_mag_diff > 1e-6').empty) + self.assertTrue(df_m.query('abs_real_diff > 1e-6').empty) + self.assertTrue(df_m.query('abs_imag_diff > 1e-6').empty) + print("testing fcidump_x") + df_m = compare_intdumps(fcid+"_X", fcid+"_no_X", True) + self.assertTrue(df_m.query('abs_mag_diff > 1e-6').empty) + self.assertTrue(df_m.query('abs_real_diff > 1e-6').empty) + self.assertTrue(df_m.query('abs_imag_diff > 1e-6').empty) + +if __name__ == "__main__": + print("Full Tests for pbcfcidump") + unittest.main() + + + diff --git a/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py b/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py new file mode 100644 index 0000000000..84746b757d --- /dev/null +++ b/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py @@ -0,0 +1,90 @@ +# Based on test_fcidump.py in pyscf. +import ase +from functools import reduce +import unittest +import tempfile +import numpy +import pandas +from pyscf import lib +from pyscf import gto, scf, ao2mo +from pyscf.tools import fcidump +from pyscfdump.helpers.ase_and_cell import build_cell +from pyscfdump.helpers.scf import run_khf +import pyscfdump.pbcfcidump + +basis = "STO-3G" +ke_cutoff = 200.0 +fcid = 'FCIDUMP' +nmp = numpy.array([3, 1, 1]) +ase_atom = ase.Atoms("HH", positions=[[0, 0, 0], [4.0, 0, 0]], + cell=[10.0, 10.0, 10.0], pbc=True) +cell = build_cell(ase_atom, ke=ke_cutoff, basis=basis, incore_anyway=True, + pseudo=None) +mf, scaled_kpts = run_khf(cell, nmp=nmp, gamma=True, exxdiv="vcut_ws") + +def tearDownModule(): + # In line with pyscf testing. + global ase_atom, cell, mf + del ase_atom, cell, mf + +def read_in(filename, exchange=False): + skiprows = {True: 0, False: 6} + integral = numpy.loadtxt(filename, skiprows=skiprows[exchange], + unpack=True, usecols=(0), dtype=str) + i, a, j, b = numpy.loadtxt(filename, skiprows=skiprows[exchange], + unpack=True, usecols=(1,2,3,4), dtype=int) + # https://stackoverflow.com/questions/3559559/how-to-delete-a-character-from-a-string-using-python + integral = numpy.asarray([numpy.complex( + *map(float,inte.replace("(", "").replace(")", "").split(",")) + ) for inte in integral]) + return pandas.DataFrame({'int': integral, 'i': i, 'a': a, 'j': j, 'b': b}) + +def compare_intdumps(filename_new, filename_bench, exchange): + df_new = read_in(filename_new, exchange) + df_bench = read_in(filename_bench, exchange) + df_m = df_new.copy().merge(df_bench.copy(), on=['i', 'a', 'j', 'b'], + how="inner") + df_m['abs_mag_diff'] = abs(abs(df_m['int_x']) - abs(df_m['int_y'])) + df_m['abs_real_diff'] = abs(numpy.array([x.real for x in df_m['int_x']]) + - numpy.array([y.real for y in df_m['int_y']])) + df_m['abs_imag_diff'] = abs(numpy.array([x.imag for x in df_m['int_x']]) + - numpy.array([y.imag for y in df_m['int_y']])) + print("Difference in magnitude of integrals greater than 1e-6:") + print(df_m.query('abs_mag_diff > 1e-6')) + print("Difference in real value of integrals greater than 1e-6:") + print(df_m.query('abs_real_diff > 1e-6')) + print("Difference in imag value of integrals greater than 1e-6:") + print(df_m.query('abs_imag_diff > 1e-6')) + return df_m + +class CalcIntegrals(unittest.TestCase): + + def test_setup(self): + # SCF energy + self.assertAlmostEqual(mf.e_tot, -0.7616939508075196) + # scaled_kpts + numpy.testing.assert_array_almost_equal( + scaled_kpts, numpy.array([[-0.3333333, 0., 0.], + [0., 0., 0.], + [0.3333333, 0., 0.]])) + + def test_overall_fcidump(self): + pyscfdump.pbcfcidump.fcidump(fcid, mf, nmp, scaled_kpts, False, + keep_exxdiv=False) + print("testing fcidump") + df_m = compare_intdumps(fcid, fcid+"_v", False) + self.assertTrue(df_m.query('abs_mag_diff > 1e-6').empty) + self.assertTrue(df_m.query('abs_real_diff > 1e-6').empty) + self.assertTrue(df_m.query('abs_imag_diff > 1e-6').empty) + print("testing fcidump_x") + df_m = compare_intdumps(fcid+"_X", fcid+"_v_X", True) + self.assertTrue(df_m.query('abs_mag_diff > 1e-6').empty) + self.assertTrue(df_m.query('abs_real_diff > 1e-6').empty) + self.assertTrue(df_m.query('abs_imag_diff > 1e-6').empty) + +if __name__ == "__main__": + print("Full Tests for pbcfcidump") + unittest.main() + + + From 0a0a741d61006e06d703c9c47c889b0e0994d5b3 Mon Sep 17 00:00:00 2001 From: Alex Thom Date: Mon, 19 Dec 2022 18:05:00 +0000 Subject: [PATCH 4/8] Update tests with new helper paths. --- pyscf/tools/pbcfcidump.py | 2 +- pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py | 8 ++++---- pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py | 8 ++++---- pyscf/tools/test/pbcfcidump/test_pbcfcidump.py | 8 ++++---- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pyscf/tools/pbcfcidump.py b/pyscf/tools/pbcfcidump.py index d8a390e826..56d89295bf 100644 --- a/pyscf/tools/pbcfcidump.py +++ b/pyscf/tools/pbcfcidump.py @@ -34,7 +34,7 @@ import numpy import pyscf.pbc from pyscf.pbc.lib import kpts_helper -from pyscf.pbc.kccsd_rhf import KRCCSD +from pyscf.pbc.cc.kccsd_rhf import KRCCSD try: # P from mpi4py import MPI # P mpi4py_avail = True # P diff --git a/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py b/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py index cf98fc0370..f6314da417 100644 --- a/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py +++ b/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py @@ -8,9 +8,9 @@ from pyscf import lib from pyscf import gto, scf, ao2mo from pyscf.tools import fcidump -from pyscfdump.helpers.ase_and_cell import build_cell -from pyscfdump.helpers.scf import run_khf -import pyscfdump.pbcfcidump +from helpers.ase_and_cell import build_cell +from helpers.scf import run_khf +from pyscf.tools import pbcfcidump basis = "STO-3G" ke_cutoff = 200.0 @@ -69,7 +69,7 @@ def test_setup(self): [0.3333333, 0., 0.]])) def test_overall_fcidump(self): - pyscfdump.pbcfcidump.fcidump(fcid, mf, nmp, scaled_kpts, False, + pbcfcidump.fcidump(fcid, mf, nmp, scaled_kpts, False, keep_exxdiv=False) print("testing fcidump") df_m = compare_intdumps(fcid, fcid+"_e", False) diff --git a/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py b/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py index e657ea0f68..1d788f2fc9 100644 --- a/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py +++ b/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py @@ -8,9 +8,9 @@ from pyscf import lib from pyscf import gto, scf, ao2mo from pyscf.tools import fcidump -from pyscfdump.helpers.ase_and_cell import build_cell -from pyscfdump.helpers.scf import run_khf -import pyscfdump.pbcfcidump +from helpers.ase_and_cell import build_cell +from helpers.scf import run_khf +from pyscf.tools import pbcfcidump basis = "STO-3G" ke_cutoff = 200.0 @@ -69,7 +69,7 @@ def test_setup(self): [0.3333333, 0., 0.]])) def test_overall_fcidump(self): - pyscfdump.pbcfcidump.fcidump(fcid, mf, nmp, scaled_kpts, False, + pbcfcidump.fcidump(fcid, mf, nmp, scaled_kpts, False, keep_exxdiv=False) print("testing fcidump") df_m = compare_intdumps(fcid, fcid+"_no", False) diff --git a/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py b/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py index 84746b757d..9343babebc 100644 --- a/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py +++ b/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py @@ -8,9 +8,9 @@ from pyscf import lib from pyscf import gto, scf, ao2mo from pyscf.tools import fcidump -from pyscfdump.helpers.ase_and_cell import build_cell -from pyscfdump.helpers.scf import run_khf -import pyscfdump.pbcfcidump +from helpers.ase_and_cell import build_cell +from helpers.scf import run_khf +from pyscf.tools import pbcfcidump basis = "STO-3G" ke_cutoff = 200.0 @@ -69,7 +69,7 @@ def test_setup(self): [0.3333333, 0., 0.]])) def test_overall_fcidump(self): - pyscfdump.pbcfcidump.fcidump(fcid, mf, nmp, scaled_kpts, False, + pbcfcidump.fcidump(fcid, mf, nmp, scaled_kpts, False, keep_exxdiv=False) print("testing fcidump") df_m = compare_intdumps(fcid, fcid+"_v", False) From 48681a8f552c16bf1d9e8047269e96345aadc7d2 Mon Sep 17 00:00:00 2001 From: Alex Thom Date: Mon, 19 Dec 2022 18:14:01 +0000 Subject: [PATCH 5/8] Fixed dodgy paths. --- pyscf/tools/test/pbcfcidump/helpers/scf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyscf/tools/test/pbcfcidump/helpers/scf.py b/pyscf/tools/test/pbcfcidump/helpers/scf.py index cf11e31ca5..0603debda7 100644 --- a/pyscf/tools/test/pbcfcidump/helpers/scf.py +++ b/pyscf/tools/test/pbcfcidump/helpers/scf.py @@ -90,7 +90,7 @@ def run_kdft(cell, nmp=[1, 1, 1], gamma=False, df=None): if __name__ == '__main__': - from pyscfdump.helpers.ase_and_cell import get_ase_diamond_primitive, build_cell + from pyscf.tools.test.pbcfcidump.helpers.ase_and_cell import get_ase_diamond_primitive, build_cell ase_atom = get_ase_diamond_primitive() cell = build_cell(ase_atom) run_hf(cell) From eb1b1ed9ff2d2ad859909f90f5efe3457c291210 Mon Sep 17 00:00:00 2001 From: Verena Neufeld Date: Sun, 1 Jan 2023 15:35:48 -0500 Subject: [PATCH 6/8] suggested changes - remove need to modify kccsd_rhf.py --- pyscf/pbc/cc/kccsd_rhf.py | 4 -- pyscf/tools/pbcfcidump.py | 65 ++++++++++++++++--- .../test/pbcfcidump/test_ewald_pbcfcidump.py | 2 +- .../pbcfcidump/test_noexxdiv_pbcfcidump.py | 2 +- .../tools/test/pbcfcidump/test_pbcfcidump.py | 2 +- 5 files changed, 60 insertions(+), 15 deletions(-) diff --git a/pyscf/pbc/cc/kccsd_rhf.py b/pyscf/pbc/cc/kccsd_rhf.py index 3ff7860453..13503a12ba 100644 --- a/pyscf/pbc/cc/kccsd_rhf.py +++ b/pyscf/pbc/cc/kccsd_rhf.py @@ -788,9 +788,6 @@ def __init__(self, cc, mo_coeff=None, method='incore'): #self.vvvv = np.empty((nkpts,nkpts,nkpts,nvir,nvir,nvir,nvir), dtype=dtype) self.vvvv = cc._scf.with_df.ao2mo_7d(orbv, factor=1./nkpts).transpose(0,2,1,3,5,4,6) - self.eri = np.empty( - (nkpts, nkpts, nkpts, nmo, nmo, nmo, nmo), dtype=dtype) - for (ikp,ikq,ikr) in khelper.symm_map.keys(): iks = kconserv[ikp,ikq,ikr] eri_kpt = fao2mo((mo_coeff[ikp],mo_coeff[ikq],mo_coeff[ikr],mo_coeff[iks]), @@ -806,7 +803,6 @@ def __init__(self, cc, mo_coeff=None, method='incore'): self.voov[kp, kr, kq] = eri_kpt_symm[nocc:, :nocc, :nocc, nocc:] / nkpts self.vovv[kp, kr, kq] = eri_kpt_symm[nocc:, :nocc, nocc:, nocc:] / nkpts #self.vvvv[kp, kr, kq] = eri_kpt_symm[nocc:, nocc:, nocc:, nocc:] / nkpts - self.eri[kp, kr, kq] = eri_kpt_symm/nkpts self.dtype = dtype else: diff --git a/pyscf/tools/pbcfcidump.py b/pyscf/tools/pbcfcidump.py index 56d89295bf..d1a5e2e132 100644 --- a/pyscf/tools/pbcfcidump.py +++ b/pyscf/tools/pbcfcidump.py @@ -115,8 +115,8 @@ def write_eri(fout, eri, kconserv, tol=TOL, ''' output_format = float_format + ' %4d %4d %4d %4d\n' nkpts = eri.oooo.shape[0] - no = eri.oooo.shape[3] - nv = eri.vvvv.shape[3] + no = eri.oooo.shape[-1] + nv = eri.vvvv.shape[-1] nor = no+nv for kp in range(nkpts): for kq in range(nkpts): @@ -127,13 +127,62 @@ def write_eri(fout, eri, kconserv, tol=TOL, # physics). [k*(1) l(1) | m*(2) n(2)] = is the # integral. kconserve gives n given klm, such that # l-k=n-m (not k-l=n-m) - er = eri.eri - for i in range(er.shape[3]): - for j in range(er.shape[5]): - for k in range(er.shape[4]): - for l in range(er.shape[6]): + for i in range(nor): + for j in range(nor): + for k in range(nor): + for l in range(nor): # Stored as [ka,kc,kb,a,c,b,d] <- (ab|cd) - v = er[kp, kr, kq, i, k, j, l] + # [todo] could move to another function + if i < no and j < no and k < no and l < no: + # oooo + v = eri.oooo[kp, kr, kq, i, k, j, l] + elif i < no and j < no and k < no and l >= no: + # ooov + v = eri.ooov[kp, kr, kq, i, k, j, l-no] + elif i < no and j < no and k >= no and l < no: + # iojokvlo => ovoo + v = eri.ooov.conj()[kq, ks, kp, j, l, i, k-no] + elif i < no and j >= no and k < no and l < no: + # iojvkolo => oovo + v = eri.ooov[kr, kp, ks, k, i, l, j-no] + elif i >= no and j < no and k < no and l < no: + # vooo + v = eri.ooov.conj()[ks, kq, kr, l, j, k, i-no] + elif i < no and j < no and k >= no and l >= no: + # iojokvlv => ovov + v = eri.ovov[kp, kr, kq, i, k-no, j, l-no] + elif i < no and j >= no and k < no and l >= no: + # iojvkolv => oovv + v = eri.oovv[kp, kr, kq, i, k, j-no, l-no] + elif i >= no and j < no and k < no and l >= no: + # voov + v = eri.voov[kp, kr, kq, i-no, k, j, l-no] + elif i < no and j >= no and k >= no and l < no: + # ovvo + v = eri.voov[kr, kp, ks, k-no, i, l, j-no] + elif i >= no and j < no and k >= no and l < no: + # ivjokvlo => vvoo + v = eri.oovv.conj()[kq, ks, kp, j, l, i-no, k-no] + elif i >= no and j >= no and k < no and l < no: + # ivjvkolo => vovo + v = eri.ovov[kr, kp, ks, k, i-no, l, j-no] + elif i >= no and j >= no and k >= no and l < no: + # vvvo + v = eri.vovv.conj()[kq, ks, kp, j-no, l, i-no, k-no] + elif i >= no and j >= no and k < no and l >= no: + # ivjvkolv => vovv + v = eri.vovv[kp, kr, kq, i-no, k, j-no, l-no] + elif i >= no and j < no and k >= no and l >= no: + # ivjokvlv => vvov + v = eri.vovv.conj()[ks, kq, kr, l-no, j, k-no, i-no] + elif i < no and j >= no and k >= no and l >= no: + # ovvv + v = eri.vovv[kr, kp, ks, k-no, i, l-no, j-no] + elif i >= no and j >= no and k >= no and l >= no: + # vvvv + v = eri.vvvv[kp, kr, kq, i-no, k-no, j-no, l-no] + else: + raise RuntimeError() if abs(v) > tol: fout.write(output_format % ( v.real, v.imag, nor*kp+i+1, nor*kq+j+1, diff --git a/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py b/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py index f6314da417..8ef4f6b579 100644 --- a/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py +++ b/pyscf/tools/test/pbcfcidump/test_ewald_pbcfcidump.py @@ -34,7 +34,7 @@ def read_in(filename, exchange=False): i, a, j, b = numpy.loadtxt(filename, skiprows=skiprows[exchange], unpack=True, usecols=(1,2,3,4), dtype=int) # https://stackoverflow.com/questions/3559559/how-to-delete-a-character-from-a-string-using-python - integral = numpy.asarray([numpy.complex( + integral = numpy.asarray([complex( *map(float,inte.replace("(", "").replace(")", "").split(",")) ) for inte in integral]) return pandas.DataFrame({'int': integral, 'i': i, 'a': a, 'j': j, 'b': b}) diff --git a/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py b/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py index 1d788f2fc9..4fed28e5b0 100644 --- a/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py +++ b/pyscf/tools/test/pbcfcidump/test_noexxdiv_pbcfcidump.py @@ -34,7 +34,7 @@ def read_in(filename, exchange=False): i, a, j, b = numpy.loadtxt(filename, skiprows=skiprows[exchange], unpack=True, usecols=(1,2,3,4), dtype=int) # https://stackoverflow.com/questions/3559559/how-to-delete-a-character-from-a-string-using-python - integral = numpy.asarray([numpy.complex( + integral = numpy.asarray([complex( *map(float,inte.replace("(", "").replace(")", "").split(",")) ) for inte in integral]) return pandas.DataFrame({'int': integral, 'i': i, 'a': a, 'j': j, 'b': b}) diff --git a/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py b/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py index 9343babebc..a3562d905f 100644 --- a/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py +++ b/pyscf/tools/test/pbcfcidump/test_pbcfcidump.py @@ -34,7 +34,7 @@ def read_in(filename, exchange=False): i, a, j, b = numpy.loadtxt(filename, skiprows=skiprows[exchange], unpack=True, usecols=(1,2,3,4), dtype=int) # https://stackoverflow.com/questions/3559559/how-to-delete-a-character-from-a-string-using-python - integral = numpy.asarray([numpy.complex( + integral = numpy.asarray([complex( *map(float,inte.replace("(", "").replace(")", "").split(",")) ) for inte in integral]) return pandas.DataFrame({'int': integral, 'i': i, 'a': a, 'j': j, 'b': b}) From e4fcb054f4728023f3fce51655d2573ae1927a66 Mon Sep 17 00:00:00 2001 From: Alex Thom Date: Tue, 17 Jan 2023 11:34:31 +0000 Subject: [PATCH 7/8] Update pbcfcidump.py Removed outdated comments about get_kconserv --- pyscf/tools/pbcfcidump.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/pyscf/tools/pbcfcidump.py b/pyscf/tools/pbcfcidump.py index 56d89295bf..3a9c0f7ab4 100644 --- a/pyscf/tools/pbcfcidump.py +++ b/pyscf/tools/pbcfcidump.py @@ -122,11 +122,7 @@ def write_eri(fout, eri, kconserv, tol=TOL, for kq in range(nkpts): for kr in range(nkpts): ks = kconserv[kp, kq, kr] - # The documentation in pyscf/pbc/lib/kpts_helper.py in - # get_kconserv is inconsistent with the actual code (and - # physics). [k*(1) l(1) | m*(2) n(2)] = is the - # integral. kconserve gives n given klm, such that - # l-k=n-m (not k-l=n-m) + # ks is the (single) allowes k-point conserving symmetry er = eri.eri for i in range(er.shape[3]): for j in range(er.shape[5]): @@ -357,11 +353,7 @@ def exchange_integrals(comm, mf, nmo, kconserv, fout, kstart, kpts): for p in range(nmo): for pk in range(nkpts): for q in range(nmo): - # The documentation in pyscf/pbc/lib/kpts_helper.py in - # get_kconserv is inconsistent with the actual code - # (and physics). [k*(1) l(1) | m*(2) n(2)] = is - # the integral. kconserve gives n given klm, such that - # l-k=n-m (not k-l=n-m). + # ks is the (single) allowes k-point conserving symmetry # Since we want (iq|pi) = = , we use the # following lookup # Might need to check the ordering of this! From ba6af976c86374f67fcbe429732ed96c240049b8 Mon Sep 17 00:00:00 2001 From: Alex Thom Date: Tue, 17 Jan 2023 11:56:14 +0000 Subject: [PATCH 8/8] Removed duplicate code. --- .../test/pbcfcidump/helpers/ase_and_cell.py | 135 ------------------ pyscf/tools/test/pbcfcidump/helpers/scf.py | 3 +- 2 files changed, 2 insertions(+), 136 deletions(-) diff --git a/pyscf/tools/test/pbcfcidump/helpers/ase_and_cell.py b/pyscf/tools/test/pbcfcidump/helpers/ase_and_cell.py index eeb94ea738..3affaa8b15 100644 --- a/pyscf/tools/test/pbcfcidump/helpers/ase_and_cell.py +++ b/pyscf/tools/test/pbcfcidump/helpers/ase_and_cell.py @@ -4,141 +4,6 @@ from pyscf.pbc import tools as pbctools import pyscf.pbc.tools.pyscf_ase as pyscf_ase -A2B = 1.889725989 - - -def get_ase_atom(formula): - formula = formula.lower() - assert formula in ['lih', 'lif', 'licl', 'mgo', - 'c', 'si', 'ge', 'sic', 'gaas', 'gan', 'cds', - 'zns', 'zno', 'bn', 'alp'] - if formula == 'lih': - ase_atom = get_ase_rocksalt('Li', 'H') - elif formula == 'lif': - ase_atom = get_ase_rocksalt('Li', 'F') - elif formula == 'licl': - ase_atom = get_ase_rocksalt('Li', 'Cl') - elif formula == 'mgo': - ase_atom = get_ase_rocksalt('Mg', 'O') - elif formula == 'c': - ase_atom = get_ase_diamond_primitive('C') - elif formula == 'si': - ase_atom = get_ase_diamond_primitive('Si') - elif formula == 'ge': - ase_atom = get_ase_diamond_primitive('Ge') - elif formula == 'sic': - ase_atom = get_ase_zincblende('Si', 'C') - elif formula == 'gaas': - ase_atom = get_ase_zincblende('Ga', 'As') - elif formula == 'gan': - ase_atom = get_ase_zincblende('Ga', 'N') - elif formula == 'bn': - ase_atom = get_ase_zincblende('B', 'N') - elif formula == 'alp': - ase_atom = get_ase_zincblende('Al', 'P') - - return ase_atom - - -def get_bandpath_fcc(ase_atom, npoints=30): - # Set-up the band-path via special points - from ase.dft.kpoints import ibz_points, kpoint_convert, get_bandpath - points = ibz_points['fcc'] - G = points['Gamma'] - X = points['X'] - W = points['W'] - K = points['K'] - L = points['L'] - kpts_reduced, kpath, sp_points = get_bandpath([L, G, X, W, K, G], - ase_atom.cell, npoints=npoints) - kpts_cartes = kpoint_convert(ase_atom.cell, skpts_kc=kpts_reduced) - - return kpts_reduced, kpts_cartes, kpath, sp_points - - -def get_ase_zincblende(A='Ga', B='As'): - # Lattice constants from Shishkin and Kresse, PRB 75, 235102 (2007) - assert A in ['Si', 'Ga', 'Cd', 'Zn', 'B', 'Al'] - assert B in ['C', 'As', 'S', 'O', 'N', 'P'] - from ase.lattice import bulk - if A == 'Si' and B == 'C': - ase_atom = bulk('SiC', 'zincblende', a=4.350*A2B) - elif A == 'Ga' and B == 'As': - ase_atom = bulk('GaAs', 'zincblende', a=5.648*A2B) - elif A == 'Ga' and B == 'N': - ase_atom = bulk('GaN', 'zincblende', a=4.520*A2B) - elif A == 'Cd' and B == 'S': - ase_atom = bulk('CdS', 'zincblende', a=5.832*A2B) - elif A == 'Zn' and B == 'S': - ase_atom = bulk('ZnS', 'zincblende', a=5.420*A2B) - elif A == 'Zn' and B == 'O': - ase_atom = bulk('ZnO', 'zincblende', a=4.580*A2B) - elif A == 'B' and B == 'N': - ase_atom = bulk('BN', 'zincblende', a=3.615*A2B) - elif A == 'Al' and B == 'P': - ase_atom = bulk('AlP', 'zincblende', a=5.451*A2B) - - return ase_atom - - -def get_ase_rocksalt(A='Li', B='Cl'): - assert A in ['Li', 'Mg'] - # Add Na, K - assert B in ['H', 'F', 'Cl', 'O'] - # Add Br, I - from ase.lattice import bulk - if A == 'Li': - if B == 'H': - ase_atom = bulk('LiH', 'rocksalt', a=4.0834*A2B) - elif B == 'F': - ase_atom = bulk('LiF', 'rocksalt', a=4.0351*A2B) - elif B == 'Cl': - ase_atom = bulk('LiCl', 'rocksalt', a=5.13*A2B) - elif A == 'Mg' and B == 'O': - ase_atom = bulk('MgO', 'rocksalt', a=4.213*A2B) - - return ase_atom - - -def get_ase_alkali_halide(A='Li', B='Cl'): - return get_ase_rocksalt(A, B) - - -def get_ase_diamond_primitive(atom='C'): - """Get the ASE atoms for primitive (2-atom) diamond unit cell.""" - from ase.lattice import bulk - if atom == 'C': - ase_atom = bulk('C', 'diamond', a=3.5668*A2B) - else: - ase_atom = bulk('Si', 'diamond', a=5.431*A2B) - return ase_atom - - -def get_ase_diamond_cubic(atom='C'): - """Get the ASE atoms for cubic (8-atom) diamond unit cell.""" - from ase.lattice.cubic import Diamond - if atom == 'C': - ase_atom = Diamond(symbol='C', latticeconstant=3.5668*A2B) - else: - ase_atom = Diamond(symbol='Si', latticeconstant=5.431*A2B) - return ase_atom - - -def get_ase_graphene(vacuum=5.0): - """Get the ASE atoms for primitive (2-atom) graphene unit cell.""" - from ase.lattice.hexagonal import Graphene - ase_atom = Graphene('C', latticeconstant={'a': 2.46*A2B, 'c': vacuum*A2B}) - return ase_atom - - -def get_ase_graphene_xxx(vacuum=5.0): - """Get the ASE atoms for primitive (2-atom) graphene unit cell.""" - from ase.lattice import bulk - ase_atom = bulk('C', 'hcp', a=2.46*A2B, c=vacuum*A2B) - ase_atom.positions[1, 2] = 0.0 - return ase_atom - - def build_cell(ase_atom, unit='B', ke=20.0, gsmax=None, basis='gth-szv', pseudo='gth-pade', dimension=3, incore_anyway=False): cell = pbcgto.Cell() diff --git a/pyscf/tools/test/pbcfcidump/helpers/scf.py b/pyscf/tools/test/pbcfcidump/helpers/scf.py index 0603debda7..c25a325648 100644 --- a/pyscf/tools/test/pbcfcidump/helpers/scf.py +++ b/pyscf/tools/test/pbcfcidump/helpers/scf.py @@ -90,7 +90,8 @@ def run_kdft(cell, nmp=[1, 1, 1], gamma=False, df=None): if __name__ == '__main__': - from pyscf.tools.test.pbcfcidump.helpers.ase_and_cell import get_ase_diamond_primitive, build_cell + from pyscf.pbc.tools.lattice import get_ase_diamond_primitive + from pyscf.tools.test.pbcfcidump.helpers.ase_and_cell import build_cell ase_atom = get_ase_diamond_primitive() cell = build_cell(ase_atom) run_hf(cell)