Example #1
0
    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))
Example #2
0
    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)
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
    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)
Example #6
0
    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))