本文整理汇总了Python中pyscf.lib.unpack_tril函数的典型用法代码示例。如果您正苦于以下问题:Python unpack_tril函数的具体用法?Python unpack_tril怎么用?Python unpack_tril使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了unpack_tril函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_aux_e2
def test_aux_e2(self):
cell = pgto.Cell()
cell.unit = 'B'
cell.a = numpy.eye(3) * 3.
cell.gs = numpy.array([20,20,20])
cell.atom = 'He 0 1 1; He 1 1 0'
cell.basis = { 'He': [[0, (0.8, 1.0)],
[0, (1.2, 1.0)]] }
cell.verbose = 0
cell.build(0, 0)
auxcell = incore.format_aux_basis(cell)
cell.nimgs = auxcell.nimgs = [3,3,3]
a1 = incore.aux_e2(cell, auxcell, 'cint3c1e_sph')
self.assertAlmostEqual(finger(a1), 0.1208944790152819, 9)
a2 = incore.aux_e2(cell, auxcell, 'cint3c1e_sph', aosym='s2ij')
self.assertTrue(numpy.allclose(a1, lib.unpack_tril(a2, axis=0).reshape(a1.shape)))
numpy.random.seed(3)
kpti_kptj = [numpy.random.random(3)]*2
a1 = incore.aux_e2(cell, auxcell, 'cint3c1e_sph', kpti_kptj=kpti_kptj)
self.assertAlmostEqual(finger(a1), -0.073719031689332651-0.054002639392614758j, 9)
a2 = incore.aux_e2(cell, auxcell, 'cint3c1e_sph', aosym='s2ij', kpti_kptj=kpti_kptj)
self.assertTrue(numpy.allclose(a1, lib.unpack_tril(a2, 1, axis=0).reshape(a1.shape)))
numpy.random.seed(1)
kpti_kptj = numpy.random.random((2,3))
a1 = incore.aux_e2(cell, auxcell, 'cint3c1e_sph', kpti_kptj=kpti_kptj)
self.assertAlmostEqual(finger(a1), 0.039329191948685879-0.039836453846241987j, 9)
开发者ID:eronca,项目名称:pyscf,代码行数:28,代码来源:test_incore.py
示例2: _trans_aapp_
def _trans_aapp_(mo, ncore, ncas, fload, ao_loc=None):
nmo = mo[0].shape[1]
nocc = (ncore[0] + ncas, ncore[1] + ncas)
c_nmo = ctypes.c_int(nmo)
klshape = (0, nmo, 0, nmo)
japcv = numpy.empty((ncas,nmo,ncore[0],nmo-ncore[0]))
aapp = numpy.empty((ncas,ncas,nmo,nmo))
aaPP = numpy.empty((ncas,ncas,nmo,nmo))
appa = numpy.empty((ncas,nmo,nmo,ncas))
apPA = numpy.empty((ncas,nmo,nmo,ncas))
apCV = numpy.empty((ncas,nmo,ncore[1],nmo-ncore[1]))
ppp = numpy.empty((nmo,nmo,nmo))
for i in range(ncas):
buf = _ao2mo.nr_e2(fload(ncore[0]+i), mo[0], klshape,
aosym='s4', mosym='s2', ao_loc=ao_loc)
lib.unpack_tril(buf, out=ppp)
aapp[i] = ppp[ncore[0]:nocc[0]]
appa[i] = ppp[:,:,ncore[0]:nocc[0]]
#japcp = avcp * 2 - acpv.transpose(0,2,1,3) - avcp.transpose(0,3,2,1)
japcv[i] = ppp[:,:ncore[0],ncore[0]:] * 2 \
- ppp[:ncore[0],:,ncore[0]:].transpose(1,0,2) \
- ppp[ncore[0]:,:ncore[0],:].transpose(2,1,0)
buf = _ao2mo.nr_e2(fload(ncore[0]+i), mo[1], klshape,
aosym='s4', mosym='s2', ao_loc=ao_loc)
lib.unpack_tril(buf, out=ppp)
aaPP[i] = ppp[ncore[0]:nocc[0]]
apPA[i] = ppp[:,:,ncore[1]:nocc[1]]
apCV[i] = ppp[:,:ncore[1],ncore[1]:]
return aapp, aaPP, appa, apPA, japcv, apCV
开发者ID:eronca,项目名称:pyscf,代码行数:33,代码来源:mc_ao2mo_uhf.py
示例3: get_nuc_less_accurate
def get_nuc_less_accurate(mydf, kpts=None):
log = logger.Logger(mydf.stdout, mydf.verbose)
t1 = t0 = (time.clock(), time.time())
if kpts is None:
kpts_lst = numpy.zeros((1, 3))
else:
kpts_lst = numpy.reshape(kpts, (-1, 3))
nkpts = len(kpts_lst)
if mydf._cderi is None:
mydf.build()
cell = mydf.cell
fused_cell, fuse = fuse_auxcell_(mydf, mydf.auxcell)
nao = cell.nao_nr()
charge = -cell.atom_charges()
j2c = pgto.intor_cross("cint2c2e_sph", fused_cell, _fake_nuc(cell))
jaux = j2c.dot(charge)
jaux -= charge.sum() * mydf.auxbar(fused_cell)
Gv = cell.get_Gv(mydf.gs)
SI = cell.get_SI(Gv)
# The normal nuclues have been considered in function get_gth_vlocG_part1
# The result vG is the potential in G-space for erf part of the pp nuclues and
# "numpy.dot(charge, SI) * coulG" for normal nuclues.
vpplocG = pgto.pseudo.pp_int.get_gth_vlocG_part1(cell, Gv)
vG = -1.0 / cell.vol * numpy.einsum("ij,ij->j", SI, vpplocG)
kpt_allow = numpy.zeros(3)
if is_zero(kpts_lst):
vj = numpy.zeros((nkpts, nao ** 2))
else:
vj = numpy.zeros((nkpts, nao ** 2), dtype=numpy.complex128)
max_memory = max(2000, mydf.max_memory - lib.current_memory()[0])
for k, pqkR, pqkI, p0, p1 in mydf.ft_loop(cell, mydf.gs, kpt_allow, kpts_lst, max_memory=max_memory):
if not gamma_point(kpts_lst[k]):
vj[k] += numpy.einsum("k,xk->x", vG.real, pqkI) * 1j
vj[k] += numpy.einsum("k,xk->x", vG.imag, pqkR) * -1j
vj[k] += numpy.einsum("k,xk->x", vG.real, pqkR)
vj[k] += numpy.einsum("k,xk->x", vG.imag, pqkI)
pqkR = pqkI = None
Gv = cell.get_Gv(mydf.gs)
aoaux = ft_ao.ft_ao(fused_cell, Gv)
jaux -= numpy.einsum("x,xj->j", vG.real, aoaux.real)
jaux -= numpy.einsum("x,xj->j", vG.imag, aoaux.imag)
jaux = fuse(jaux)
vj = vj.reshape(-1, nao, nao)
for k, kpt in enumerate(kpts_lst):
with mydf.load_Lpq((kpt, kpt)) as Lpq:
v = 0
for p0, p1 in lib.prange(0, jaux.size, mydf.blockdim):
v += numpy.dot(jaux[p0:p1], numpy.asarray(Lpq[p0:p1]))
if gamma_point(kpt):
vj[k] += lib.unpack_tril(numpy.asarray(v.real, order="C"))
else:
vj[k] += lib.unpack_tril(v)
if kpts is None or numpy.shape(kpts) == (3,):
vj = vj[0]
return vj
开发者ID:ushnishray,项目名称:pyscf,代码行数:60,代码来源:mdf.py
示例4: test_unpack_row
def test_unpack_row(self):
row = numpy.arange(28.)
ref = lib.unpack_tril(row)[4]
self.assertTrue(numpy.array_equal(ref, lib.unpack_row(row, 4)))
row = numpy.arange(28, dtype=numpy.int32)
ref = lib.unpack_tril(row)[4]
a = lib.unpack_row(row, 4)
self.assertTrue(numpy.array_equal(ref, a))
self.assertTrue(a.dtype == numpy.int32)
开发者ID:sunqm,项目名称:pyscf,代码行数:10,代码来源:test_numpy_helper.py
示例5: load
def load(Lpq, b0, b1, bufR, bufI):
Lpq = numpy.asarray(Lpq[b0:b1])
shape = Lpq.shape
if unpack:
tmp = numpy.ndarray(shape, buffer=buf)
tmp[:] = Lpq.real
LpqR = lib.unpack_tril(tmp, out=bufR).reshape(-1, nao ** 2)
tmp[:] = Lpq.imag
LpqI = lib.unpack_tril(tmp, lib.ANTIHERMI, out=bufI).reshape(-1, nao ** 2)
else:
LpqR = numpy.ndarray(shape, buffer=bufR)
LpqR[:] = Lpq.real
LpqI = numpy.ndarray(shape, buffer=bufI)
LpqI[:] = Lpq.imag
return LpqR, LpqI
开发者ID:ushnishray,项目名称:pyscf,代码行数:15,代码来源:mdf.py
示例6: ecp_int
def ecp_int(cell, kpts=None):
if rank == 0:
comm.bcast(cell.dumps())
else:
cell = pgto.loads(comm.bcast(None))
if kpts is None:
kpts_lst = numpy.zeros((1,3))
else:
kpts_lst = numpy.reshape(kpts, (-1,3))
ecpcell = gto.Mole()
ecpcell._atm = cell._atm
# append a fictitious s function to mimic the auxiliary index in pbc.incore.
# ptr2last_env_idx to force PBCnr3c_fill_* function to copy the entire "env"
ptr2last_env_idx = len(cell._env) - 1
ecpbas = numpy.vstack([[0, 0, 1, 1, 0, ptr2last_env_idx, 0, 0],
cell._ecpbas]).astype(numpy.int32)
ecpcell._bas = ecpbas
ecpcell._env = cell._env
# In pbc.incore _ecpbas is appended to two sets of cell._bas and the
# fictitious s function.
cell._env[AS_ECPBAS_OFFSET] = cell.nbas * 2 + 1
cell._env[AS_NECPBAS] = len(cell._ecpbas)
kptij_lst = numpy.hstack((kpts_lst,kpts_lst)).reshape(-1,2,3)
nkpts = len(kpts_lst)
if abs(kpts_lst).sum() < 1e-9: # gamma_point
dtype = numpy.double
else:
dtype = numpy.complex128
ao_loc = cell.ao_loc_nr()
nao = ao_loc[-1]
mat = numpy.zeros((nkpts,nao,nao), dtype=dtype)
intor = cell._add_suffix('ECPscalar')
int3c = incore.wrap_int3c(cell, ecpcell, intor, kptij_lst=kptij_lst)
# shls_slice of auxiliary index (0,1) corresponds to the fictitious s function
tasks = [(i, i+1, j, j+1, 0, 1) # shls_slice
for i in range(cell.nbas) for j in range(i+1)]
for shls_slice in mpi.work_stealing_partition(tasks):
i0 = ao_loc[shls_slice[0]]
i1 = ao_loc[shls_slice[1]]
j0 = ao_loc[shls_slice[2]]
j1 = ao_loc[shls_slice[3]]
buf = numpy.empty((nkpts,i1-i0,j1-j0), dtype=dtype)
mat[:,i0:i1,j0:j1] = int3c(shls_slice, buf)
buf = mpi.reduce(mat)
if rank == 0:
mat = []
for k, kpt in enumerate(kpts_lst):
v = lib.unpack_tril(lib.pack_tril(buf[k]), lib.HERMITIAN)
if abs(kpt).sum() < 1e-9: # gamma_point:
v = v.real
mat.append(v)
if kpts is None or numpy.shape(kpts) == (3,):
mat = mat[0]
return mat
开发者ID:sunqm,项目名称:mpi4pyscf,代码行数:60,代码来源:ecp.py
示例7: make_intermediates
def make_intermediates(mycc, t1, t2, eris):
saved = ccsd_lambda.make_intermediates(mycc, t1, t2, eris)
nocc, nvir = t1.shape
eris_ovvv = _cp(eris.ovvv)
eris_ovvv = lib.unpack_tril(eris_ovvv.reshape(nocc*nvir,-1))
eris_ovvv = eris_ovvv.reshape(nocc,nvir,nvir,nvir)
mo_e = mycc._scf.mo_energy
eia = lib.direct_sum('i-a->ia',mo_e[:nocc], mo_e[nocc:])
d3 = lib.direct_sum('ia,jb,kc->ijkabc', eia, eia, eia)
eris_ovoo = eris.ovoo
w =(numpy.einsum('iabf,kjcf->ijkabc', eris_ovvv, t2)
- numpy.einsum('iajm,mkbc->ijkabc', eris_ovoo, t2)) / d3
v = numpy.einsum('iajb,kc->ijkabc', eris.ovov, t1) / d3 * .5
w = p6_(w)
v = p6_(v)
rwv = r6_(w*2+v)
jov = numpy.einsum('jbkc,ijkabc->ia', eris.ovov, r6_(w))
joovv = numpy.einsum('iabf,ijkabc->kjcf', eris_ovvv, rwv)
joovv-= numpy.einsum('iajm,ijkabc->mkbc', eris.ovoo, rwv)
joovv = joovv + joovv.transpose(1,0,3,2)
saved.jov = jov
saved.joovv = joovv
return saved
开发者ID:eronca,项目名称:pyscf,代码行数:25,代码来源:ccsd_t_lambda_slow.py
示例8: get_hcore
def get_hcore(self, mol=None):
if mol is None: mol = self.mol
if getattr(scf_method, 'get_hcore', None):
h1e = method_class.get_hcore(self, mol)
else: # DO NOT modify post-HF objects to avoid the MM charges applied twice
raise RuntimeError('mm_charge function cannot be applied on post-HF methods')
if pyscf.DEBUG:
v = 0
for i,q in enumerate(charges):
mol.set_rinv_origin(coords[i])
v += mol.intor('int1e_rinv') * -q
else:
if mol.cart:
intor = 'int3c2e_cart'
else:
intor = 'int3c2e_sph'
nao = mol.nao
max_memory = self.max_memory - lib.current_memory()[0]
blksize = int(min(max_memory*1e6/8/nao**2, 200))
v = 0
for i0, i1 in lib.prange(0, charges.size, blksize):
fakemol = gto.fakemol_for_charges(coords[i0:i1])
j3c = df.incore.aux_e2(mol, fakemol, intor=intor, aosym='s2ij')
v += numpy.einsum('xk,k->x', j3c, -charges[i0:i1])
v = lib.unpack_tril(v)
return h1e + v
开发者ID:chrinide,项目名称:pyscf,代码行数:27,代码来源:itrf.py
示例9: cosmo_fock_o1
def cosmo_fock_o1(cosmo, dm):
mol = cosmo.mol
nao = dm.shape[0]
# phi
cosmo.loadsegs()
coords = cosmo.cosurf[:cosmo.nps*3].reshape(-1,3)
fakemol = _make_fakemol(coords)
j3c = df.incore.aux_e2(mol, fakemol, intor='cint3c2e_sph', aosym='s2ij')
tril_dm = lib.pack_tril(dm) * 2
diagidx = numpy.arange(nao)
diagidx = diagidx*(diagidx+1)//2 + diagidx
tril_dm[diagidx] *= .5
cosmo.phi = -numpy.einsum('x,xk->k', tril_dm, j3c)
for ia in range(mol.natm):
cosmo.phi += mol.atom_charge(ia)/lib.norm(mol.atom_coord(ia)-coords, axis=1)
cosmo.savesegs()
# qk
cosmo.charges()
# vpot
cosmo.loadsegs()
#X fakemol = _make_fakemol(cosmo.cosurf[:cosmo.nps*3].reshape(-1,3))
#X j3c = df.incore.aux_e2(mol, fakemol, intor='cint3c2e_sph', aosym='s2ij')
fock = lib.unpack_tril(numpy.einsum('xk,k->x', j3c, -cosmo.qcos[:cosmo.nps]))
fepsi = cosmo.fepsi()
fock = fepsi*fock
return fock
开发者ID:yidapa,项目名称:pyscf,代码行数:26,代码来源:icosmo.py
示例10: gamma1_intermediates
def gamma1_intermediates(mycc, t1, t2, l1, l2, eris=None):
doo, dov, dvo, dvv = ccsd_rdm.gamma1_intermediates(mycc, t1, t2, l1, l2)
if eris is None: eris = ccsd._ERIS(mycc)
nocc, nvir = t1.shape
eris_ovvv = _cp(eris.ovvv)
eris_ovvv = lib.unpack_tril(eris_ovvv.reshape(nocc*nvir,-1))
eris_ovvv = eris_ovvv.reshape(nocc,nvir,nvir,nvir)
mo_e = mycc._scf.mo_energy
eia = lib.direct_sum('i-a->ia',mo_e[:nocc], mo_e[nocc:])
d3 = lib.direct_sum('ia,jb,kc->ijkabc', eia, eia, eia)
eris_ovoo = eris.ovoo
w =(numpy.einsum('iabf,kjcf->ijkabc', eris_ovvv, t2)
- numpy.einsum('iajm,mkbc->ijkabc', eris_ovoo, t2)) / d3
v = numpy.einsum('iajb,kc->ijkabc', eris.ovov, t1) / d3 * .5
w = p6_(w)
v = p6_(v)
wv = w+v
rw = r6_(w)
goo =-numpy.einsum('iklabc,jklabc->ij', wv, rw) * .5
gvv = numpy.einsum('ijkacd,ijkbcd->ab', wv, rw) * .5
doo += goo
dvv += gvv
return doo, dov, dvo, dvv
开发者ID:eronca,项目名称:pyscf,代码行数:25,代码来源:ccsd_t_rdm_slow.py
示例11: test_r_incore
def test_r_incore(self):
j3c = df.r_incore.aux_e2(mol, auxmol, intor='cint3c2e_spinor', aosym='s1')
nao = mol.nao_2c()
naoaux = auxmol.nao_nr()
j3c = j3c.reshape(nao,nao,naoaux)
eri0 = numpy.empty((nao,nao,naoaux), dtype=numpy.complex)
pi = 0
for i in range(mol.nbas):
pj = 0
for j in range(mol.nbas):
pk = 0
for k in range(mol.nbas, mol.nbas+auxmol.nbas):
shls = (i, j, k)
buf = gto.moleintor.getints_by_shell('cint3c2e_spinor',
shls, atm, bas, env)
di, dj, dk = buf.shape
eri0[pi:pi+di,pj:pj+dj,pk:pk+dk] = buf
pk += dk
pj += dj
pi += di
self.assertTrue(numpy.allclose(eri0, j3c))
eri1 = df.r_incore.aux_e2(mol, auxmol, intor='cint3c2e_spinor',
aosym='s2ij')
for i in range(naoaux):
j3c[:,:,i] = lib.unpack_tril(eri1[:,i])
self.assertTrue(numpy.allclose(eri0, j3c))
开发者ID:diradical,项目名称:pyscf,代码行数:27,代码来源:test_df.py
示例12: gamma2_intermediates
def gamma2_intermediates(mycc, t1, t2, l1, l2, eris=None):
dovov, dvvvv, doooo, doovv, dovvo, dvvov, dovvv, dooov = \
ccsd_rdm.gamma2_intermediates(mycc, t1, t2, l1, l2)
if eris is None: eris = ccsd._ERIS(mycc)
nocc, nvir = t1.shape
eris_ovvv = _cp(eris.ovvv)
eris_ovvv = lib.unpack_tril(eris_ovvv.reshape(nocc*nvir,-1))
eris_ovvv = eris_ovvv.reshape(nocc,nvir,nvir,nvir)
mo_e = mycc._scf.mo_energy
eia = lib.direct_sum('i-a->ia',mo_e[:nocc], mo_e[nocc:])
d3 = lib.direct_sum('ia,jb,kc->ijkabc', eia, eia, eia)
eris_ovoo = eris.ovoo
w =(numpy.einsum('iabf,kjcf->ijkabc', eris_ovvv, t2)
- numpy.einsum('iajm,mkbc->ijkabc', eris_ovoo, t2)) / d3
v = numpy.einsum('iajb,kc->ijkabc', eris.ovov, t1) / d3 * .5
w = p6_(w)
v = p6_(v)
rw = r6_(w)
rwv = r6_(w*2+v)
dovov += numpy.einsum('kc,ijkabc->iajb', t1, rw) * .5
dooov -= numpy.einsum('mkbc,ijkabc->jmia', t2, rwv)
# Note "dovvv +=" also changes the value of dvvov
dovvv += numpy.einsum('kjcf,ijkabc->iabf', t2, rwv)
dvvov = dovvv.transpose(2,3,0,1)
return dovov, dvvvv, doooo, doovv, dovvo, dvvov, dovvv, dooov
开发者ID:eronca,项目名称:pyscf,代码行数:26,代码来源:ccsd_t_rdm_slow.py
示例13: part_eri_hermi
def part_eri_hermi(eri, norb, nimp):
eri1 = ao2mo.restore(4, eri, norb)
for i in range(eri1.shape[0]):
tmp = lib.unpack_tril(eri1[i])
tmp[nimp:] = 0
eri1[i] = lib.pack_tril(tmp + tmp.T)
eri1 = lib.transpose_sum(eri1, inplace=True)
return ao2mo.restore(8, eri1, norb) * 0.25
开发者ID:BB-Goldstein,项目名称:pydmet-1,代码行数:8,代码来源:impsolver.py
示例14: load
def load(Lpq, bufR, bufI):
shape = Lpq.shape
if unpack:
tmp = numpy.ndarray(shape, buffer=buf)
tmp[:] = Lpq.real
LpqR = lib.unpack_tril(tmp, out=bufR).reshape(-1,nao**2)
tmp[:] = Lpq.imag
LpqI = lib.unpack_tril(tmp, lib.ANTIHERMI, out=bufI).reshape(-1,nao**2)
else:
LpqR = numpy.ndarray(shape, buffer=bufR)
LpqR[:] = Lpq.real
LpqI = numpy.ndarray(shape, buffer=bufI)
LpqI[:] = Lpq.imag
if transpose102:
LpqR = numpy.asarray(LpqR.reshape(-1,nao,nao).transpose(1,0,2), order='C')
LpqI = numpy.asarray(LpqI.reshape(-1,nao,nao).transpose(1,0,2), order='C')
return LpqR, LpqI
开发者ID:berquist,项目名称:pyscf,代码行数:17,代码来源:mdf.py
示例15: _make_eris_outcore
def _make_eris_outcore(mycc, mo_coeff=None):
cput0 = (time.clock(), time.time())
log = logger.Logger(mycc.stdout, mycc.verbose)
eris = _ChemistsERIs()
eris._common_init_(mycc, mo_coeff)
mol = mycc.mol
mo_coeff = eris.mo_coeff
nocc = eris.nocc
nao, nmo = mo_coeff.shape
nvir = nmo - nocc
orbo = mo_coeff[:,:nocc]
orbv = mo_coeff[:,nocc:]
nvpair = nvir * (nvir+1) // 2
eris.feri1 = lib.H5TmpFile()
eris.oooo = eris.feri1.create_dataset('oooo', (nocc,nocc,nocc,nocc), 'f8')
eris.ovoo = eris.feri1.create_dataset('ovoo', (nocc,nvir,nocc,nocc), 'f8', chunks=(nocc,1,nocc,nocc))
eris.ovov = eris.feri1.create_dataset('ovov', (nocc,nvir,nocc,nvir), 'f8', chunks=(nocc,1,nocc,nvir))
eris.ovvo = eris.feri1.create_dataset('ovvo', (nocc,nvir,nvir,nocc), 'f8', chunks=(nocc,1,nvir,nocc))
eris.ovvv = eris.feri1.create_dataset('ovvv', (nocc,nvir,nvir,nvir), 'f8')
eris.oovv = eris.feri1.create_dataset('oovv', (nocc,nocc,nvir,nvir), 'f8', chunks=(nocc,nocc,1,nvir))
eris.vvvv = eris.feri1.create_dataset('vvvv', (nvir,nvir,nvir,nvir), 'f8')
max_memory = max(MEMORYMIN, mycc.max_memory-lib.current_memory()[0])
ftmp = lib.H5TmpFile()
ao2mo.full(mol, mo_coeff, ftmp, max_memory=max_memory, verbose=log)
eri = ftmp['eri_mo']
nocc_pair = nocc*(nocc+1)//2
tril2sq = lib.square_mat_in_trilu_indices(nmo)
oo = eri[:nocc_pair]
eris.oooo[:] = ao2mo.restore(1, oo[:,:nocc_pair], nocc)
oovv = lib.take_2d(oo, tril2sq[:nocc,:nocc].ravel(), tril2sq[nocc:,nocc:].ravel())
eris.oovv[:] = oovv.reshape(nocc,nocc,nvir,nvir)
oo = oovv = None
tril2sq = lib.square_mat_in_trilu_indices(nmo)
blksize = min(nvir, max(BLKMIN, int(max_memory*1e6/8/nmo**3/2)))
for p0, p1 in lib.prange(0, nvir, blksize):
q0, q1 = p0+nocc, p1+nocc
off0 = q0*(q0+1)//2
off1 = q1*(q1+1)//2
buf = lib.unpack_tril(eri[off0:off1])
tmp = buf[ tril2sq[q0:q1,:nocc] - off0 ]
eris.ovoo[:,p0:p1] = tmp[:,:,:nocc,:nocc].transpose(1,0,2,3)
eris.ovvo[:,p0:p1] = tmp[:,:,nocc:,:nocc].transpose(1,0,2,3)
eris.ovov[:,p0:p1] = tmp[:,:,:nocc,nocc:].transpose(1,0,2,3)
eris.ovvv[:,p0:p1] = tmp[:,:,nocc:,nocc:].transpose(1,0,2,3)
tmp = buf[ tril2sq[q0:q1,nocc:q1] - off0 ]
eris.vvvv[p0:p1,:p1] = tmp[:,:,nocc:,nocc:]
if p0 > 0:
eris.vvvv[:p0,p0:p1] = tmp[:,:p0,nocc:,nocc:].transpose(1,0,2,3)
buf = tmp = None
log.timer('CCSD integral transformation', *cput0)
return eris
开发者ID:chrinide,项目名称:pyscf,代码行数:57,代码来源:rccsd.py
示例16: _trans_cvcv_
def _trans_cvcv_(mo, ncore, ncas, fload, ao_loc=None):
nmo = mo[0].shape[1]
c_nmo = ctypes.c_int(nmo)
jc_pp = numpy.empty((ncore[0],nmo,nmo))
jc_PP = numpy.zeros((nmo,nmo))
kc_pp = numpy.empty((ncore[0],nmo,nmo))
jcvcv = numpy.zeros((ncore[0],nmo-ncore[0],ncore[0],nmo-ncore[0]))
cvCV = numpy.empty((ncore[0],nmo-ncore[0],ncore[1],nmo-ncore[1]))
vcp = numpy.empty((nmo-ncore[0],ncore[0],nmo))
cpp = numpy.empty((ncore[0],nmo,nmo))
for i in range(ncore[0]):
buf = fload(i)
klshape = (0, ncore[1], ncore[1], nmo)
_ao2mo.nr_e2(buf[ncore[0]:nmo], mo[1], klshape,
aosym='s4', mosym='s1', out=cvCV[i], ao_loc=ao_loc)
klshape = (0, nmo, 0, nmo)
tmp = _ao2mo.nr_e2(buf[i:i+1], mo[1], klshape, aosym='s4',
mosym='s1', ao_loc=ao_loc)
jc_PP += tmp.reshape(nmo,nmo)
klshape = (0, ncore[0], 0, nmo)
_ao2mo.nr_e2(buf[ncore[0]:nmo], mo[0], klshape,
aosym='s4', mosym='s1', out=vcp, ao_loc=ao_loc)
kc_pp[i,ncore[0]:] = vcp[:,i]
klshape = (0, nmo, 0, nmo)
_ao2mo.nr_e2(buf[:ncore[0]], mo[0], klshape,
aosym='s4', mosym='s2', out=buf[:ncore[0]],
ao_loc=ao_loc)
lib.unpack_tril(buf[:ncore[0]], out=cpp)
jc_pp[i] = cpp[i]
kc_pp[i,:ncore[0]] = cpp[:,i]
#jcvcv = cvcv * 2 - cvcv.transpose(2,1,0,3) - ccvv.transpose(0,2,1,3)
jcvcv[i] = vcp[:,:,ncore[0]:] * 2 \
- vcp[:,:,ncore[0]:].transpose(2,1,0) \
- cpp[:,ncore[0]:,ncore[0]:].transpose(1,0,2)
return jc_pp, jc_PP, kc_pp, jcvcv, cvCV
开发者ID:eronca,项目名称:pyscf,代码行数:41,代码来源:mc_ao2mo_uhf.py
示例17: _get_ovvv_base
def _get_ovvv_base(ovvv, *slices):
if len(ovvv.shape) == 3: # DO NOT use .ndim here for h5py library
# backward compatbility
ovw = np.asarray(ovvv[slices])
nocc, nvir, nvir_pair = ovw.shape
ovvv = lib.unpack_tril(ovw.reshape(nocc*nvir,nvir_pair))
nvir1 = ovvv.shape[2]
return ovvv.reshape(nocc,nvir,nvir1,nvir1)
elif slices:
return ovvv[slices]
else:
return ovvv
开发者ID:wmizukami,项目名称:pyscf,代码行数:12,代码来源:uccsd.py
示例18: test_unpack
def test_unpack(self):
a = numpy.random.random((400,400))
a = a+a*.5j
for i in range(400):
a[i,i] = a[i,i].real
b = a-a.T.conj()
b = numpy.array((b,b))
x = lib.hermi_triu(b[0].T, hermi=2, inplace=0)
self.assertAlmostEqual(abs(b[0].T-x).max(), 0, 12)
x = lib.hermi_triu(b[1], hermi=2, inplace=0)
self.assertAlmostEqual(abs(b[1]-x).max(), 0, 12)
self.assertAlmostEqual(abs(x - lib.unpack_tril(lib.pack_tril(x), 2)).max(), 0, 12)
x = lib.hermi_triu(a, hermi=1, inplace=0)
self.assertAlmostEqual(abs(x-x.T.conj()).max(), 0, 12)
xs = numpy.asarray((x,x,x))
self.assertAlmostEqual(abs(xs - lib.unpack_tril(lib.pack_tril(xs))).max(), 0, 12)
numpy.random.seed(1)
a = numpy.random.random((5050,20))
self.assertAlmostEqual(lib.finger(lib.unpack_tril(a, axis=0)), -103.03970592075423, 10)
开发者ID:sunqm,项目名称:pyscf,代码行数:23,代码来源:test_numpy_helper.py
示例19: get_hcore
def get_hcore(self, mol=None):
if hasattr(method, 'get_hcore'):
h1e = method.get_hcore(mol)
else: # post-HF objects
h1e = method._scf.get_hcore(mol)
if 0: # For debug
v = 0
for i,q in enumerate(charges):
mol.set_rinv_origin_(coords[i])
v += mol.intor('cint1e_rinv_sph') * q
else:
fakemol = _make_fakemol(coords)
j3c = df.incore.aux_e2(mol, fakemol, intor='cint3c2e_sph', aosym='s2ij')
v = lib.unpack_tril(numpy.einsum('xk,k->x', j3c, charges))
return h1e + v
开发者ID:yidapa,项目名称:pyscf,代码行数:16,代码来源:itrf.py
示例20: _add_vvvv
def _add_vvvv(mycc, t1T, t2T, eris, out=None, with_ovvv=None, t2sym=None):
'''t2sym: whether t2 has the symmetry t2[ijab]==t2[jiba] or
t2[ijab]==-t2[jiab] or t2[ijab]==-t2[jiba]
'''
if t2sym == 'jiba':
nvir_seg, nvir, nocc = t2T.shape[:3]
Ht2tril = _add_vvvv_tril(mycc, t1T, t2T, eris, with_ovvv=with_ovvv)
Ht2 = numpy.zeros_like(t2T)
Ht2 = lib.unpack_tril(Ht2tril.reshape(nvir_seg*nvir,nocc*(nocc+1)//2),
filltriu=lib.PLAIN, out=Ht2).reshape(t2T.shape)
oidx = numpy.arange(nocc)
Ht2[:,:,oidx,oidx] *= .5
else:
Ht2 = _add_vvvv_full(mycc, t1T, t2T, eris, out, with_ovvv)
Ht2 *= .5
return Ht2
开发者ID:sunqm,项目名称:mpi4pyscf,代码行数:16,代码来源:ccsd.py
注:本文中的pyscf.lib.unpack_tril函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论