def test_eval_mat(self): cell, grids = make_grids(30) numpy.random.seed(10) nao = 10 ngrids = 500 rho = numpy.random.random((6, ngrids)) vxc = numpy.random.random((4, ngrids)) weight = numpy.random.random(ngrids) ao = (numpy.random.random((10, ngrids, nao)) + numpy.random.random( (10, ngrids, nao)) * 1j) mat0 = numpy.einsum('pi,p,pj->ij', ao[0].conj(), weight * vxc[0], ao[0]) mat1 = numint.eval_mat(cell, ao[0], weight, rho, vxc, xctype='LDA') self.assertTrue(numpy.allclose(mat0, mat1)) vrho, vsigma = vxc[:2] wv = weight * vsigma * 2 mat0 = numpy.einsum('pi,p,pj->ij', ao[0].conj(), weight * vrho, ao[0]) mat0 += numpy.einsum( 'pi,p,pj->ij', ao[0].conj(), rho[1] * wv, ao[1]) + numpy.einsum( 'pi,p,pj->ij', ao[1].conj(), rho[1] * wv, ao[0]) mat0 += numpy.einsum( 'pi,p,pj->ij', ao[0].conj(), rho[2] * wv, ao[2]) + numpy.einsum( 'pi,p,pj->ij', ao[2].conj(), rho[2] * wv, ao[0]) mat0 += numpy.einsum( 'pi,p,pj->ij', ao[0].conj(), rho[3] * wv, ao[3]) + numpy.einsum( 'pi,p,pj->ij', ao[3].conj(), rho[3] * wv, ao[0]) mat1 = numint.eval_mat(cell, ao, weight, rho, vxc, xctype='GGA') self.assertTrue(numpy.allclose(mat0, mat1))
def test_eval_mat(self): cell, grids = make_grids([61]*3) numpy.random.seed(10) nao = 10 ngrids = 500 rho = numpy.random.random((6,ngrids)) vxc = numpy.random.random((4,ngrids)) weight = numpy.random.random(ngrids) ao =(numpy.random.random((10,ngrids,nao)) + numpy.random.random((10,ngrids,nao))*1j) mat0 = numpy.einsum('pi,p,pj->ij', ao[0].conj(), weight*vxc[0], ao[0]) mat1 = numint.eval_mat(cell, ao[0], weight, rho, vxc, xctype='LDA') self.assertTrue(numpy.allclose(mat0, mat1)) vrho, vsigma = vxc[:2] wv = weight * vsigma * 2 mat0 = numpy.einsum('pi,p,pj->ij', ao[0].conj(), weight*vrho, ao[0]) mat0 += numpy.einsum('pi,p,pj->ij', ao[0].conj(), rho[1]*wv, ao[1]) + numpy.einsum('pi,p,pj->ij', ao[1].conj(), rho[1]*wv, ao[0]) mat0 += numpy.einsum('pi,p,pj->ij', ao[0].conj(), rho[2]*wv, ao[2]) + numpy.einsum('pi,p,pj->ij', ao[2].conj(), rho[2]*wv, ao[0]) mat0 += numpy.einsum('pi,p,pj->ij', ao[0].conj(), rho[3]*wv, ao[3]) + numpy.einsum('pi,p,pj->ij', ao[3].conj(), rho[3]*wv, ao[0]) mat1 = numint.eval_mat(cell, ao, weight, rho, vxc, xctype='GGA') self.assertTrue(numpy.allclose(mat0, mat1)) mat1 = numint.eval_mat(cell, ao, weight, rho, vxc, xctype='MGGA') self.assertAlmostEqual(finger(mat1), -106.84965223363503+50.089526939523154j, 7) mat1 = numint.eval_mat(cell, ao[0], weight, rho, vxc, xctype='LDA') self.assertAlmostEqual(finger(mat1), 10.483493302918024+3.5590312220458227j, 7)
def test_eval_mat(self): cell, grids = make_grids(30) ng = grids.weights.size np.random.seed(1) rho = np.random.random(ng) rho *= 1/np.linalg.norm(rho) vrho = np.random.random(ng) ao1 = numint.eval_ao(cell, grids.coords) mat1 = numint.eval_mat(cell, ao1, grids.weights, rho, vrho) w = np.arange(mat1.size) * .01 self.assertAlmostEqual(np.dot(w,mat1.ravel()), (.14777107967912118+0j), 8)
def test_eval_mat(self): cell, grids = make_grids([61]*3) ng = grids.weights.size np.random.seed(1) rho = np.random.random(ng) rho *= 1/np.linalg.norm(rho) vrho = np.random.random(ng) ao1 = numint.eval_ao(cell, grids.coords) mat1 = numint.eval_mat(cell, ao1, grids.weights, rho, vrho) w = np.arange(mat1.size) * .01 self.assertAlmostEqual(np.dot(w,mat1.ravel()), (.14777107967912118+0j), 8)
def test_eval_mat1(self): cell, grids = make_grids([61] * 3) numpy.random.seed(10) nao = 10 ngrids = 500 rho = numpy.random.random((6, ngrids)) vxc = numpy.random.random((4, ngrids)) weight = numpy.random.random(ngrids) ao = (numpy.random.random((10, ngrids, nao)) + numpy.random.random( (10, ngrids, nao)) * 1j) mat0 = numpy.einsum('pi,p,pj->ij', ao[0].conj(), weight * vxc[0], ao[0]) mat1 = numint.eval_mat(cell, ao[0], weight, rho, vxc, xctype='LDA') self.assertAlmostEqual(abs(mat0 - mat1).max(), 0, 12) vrho, vsigma = vxc[:2] wv = weight * vsigma * 2 mat0 = numpy.einsum('pi,p,pj->ij', ao[0].conj(), weight * vrho, ao[0]) mat0 += numpy.einsum( 'pi,p,pj->ij', ao[0].conj(), rho[1] * wv, ao[1]) + numpy.einsum( 'pi,p,pj->ij', ao[1].conj(), rho[1] * wv, ao[0]) mat0 += numpy.einsum( 'pi,p,pj->ij', ao[0].conj(), rho[2] * wv, ao[2]) + numpy.einsum( 'pi,p,pj->ij', ao[2].conj(), rho[2] * wv, ao[0]) mat0 += numpy.einsum( 'pi,p,pj->ij', ao[0].conj(), rho[3] * wv, ao[3]) + numpy.einsum( 'pi,p,pj->ij', ao[3].conj(), rho[3] * wv, ao[0]) mat1 = numint.eval_mat(cell, ao, weight, rho, vxc, xctype='GGA') self.assertAlmostEqual(abs(mat0 - mat1).max(), 0, 11) mat1 = numint.eval_mat(cell, ao, weight, rho, vxc, xctype='MGGA') self.assertAlmostEqual(lib.fp(mat1), -160.191390949408 + 21.478570186344374j, 7) mat1 = numint.eval_mat(cell, ao[0], weight, rho, vxc, xctype='LDA') self.assertAlmostEqual(lib.fp(mat1), 10.483493302918024 + 3.5590312220458227j, 7)
def test_eval_mat(self): cell, grids = make_grids(30) numpy.random.seed(10) nao = 10 ngrids = 500 rho = numpy.random.random((6,ngrids)) vxc = numpy.random.random((4,ngrids)) weight = numpy.random.random(ngrids) ao =(numpy.random.random((10,ngrids,nao)) + numpy.random.random((10,ngrids,nao))*1j) mat0 = numpy.einsum('pi,p,pj->ij', ao[0].conj(), weight*vxc[0], ao[0]) mat1 = numint.eval_mat(cell, ao[0], weight, rho, vxc, xctype='LDA') self.assertTrue(numpy.allclose(mat0, mat1)) vrho, vsigma = vxc[:2] wv = weight * vsigma * 2 mat0 = numpy.einsum('pi,p,pj->ij', ao[0].conj(), weight*vrho, ao[0]) mat0 += numpy.einsum('pi,p,pj->ij', ao[0].conj(), rho[1]*wv, ao[1]) + numpy.einsum('pi,p,pj->ij', ao[1].conj(), rho[1]*wv, ao[0]) mat0 += numpy.einsum('pi,p,pj->ij', ao[0].conj(), rho[2]*wv, ao[2]) + numpy.einsum('pi,p,pj->ij', ao[2].conj(), rho[2]*wv, ao[0]) mat0 += numpy.einsum('pi,p,pj->ij', ao[0].conj(), rho[3]*wv, ao[3]) + numpy.einsum('pi,p,pj->ij', ao[3].conj(), rho[3]*wv, ao[0]) mat1 = numint.eval_mat(cell, ao, weight, rho, vxc, xctype='GGA') self.assertTrue(numpy.allclose(mat0, mat1))