Ejemplo n.º 1
0
    def test_nonorth_lda_rho(self):
        ao = ao_north
        ref = numpy.einsum('gi,ij,gj->g', ao[0], dm[0], ao[0].conj())
        pcell, contr_coeff = uncontract(mol_north)
        dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff)
        out = eval_rho(pcell, dm1)
        self.assertAlmostEqual(abs(out - ref).max(), 0, 9)

        out = eval_rho(pcell, dm1, hermi=1)
        self.assertAlmostEqual(abs(out - ref).max(), 0, 9)
Ejemplo n.º 2
0
    def test_nonorth_lda_rho(self):
        ao = ao_north
        ref = numpy.einsum('gi,ij,gj->g', ao[0], dm[0], ao[0].conj())
        pcell, contr_coeff = uncontract(mol_north)
        dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff)
        out = eval_rho(pcell, dm1)
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)

        out = eval_rho(pcell, dm1, hermi=1)
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
Ejemplo n.º 3
0
    def test_pbc_nonorth_lda_rho(self):
        ref = sum([numpy.einsum('gi,ij,gj->g', ao[0], dm[k], ao[0].conj())
                   for k,ao in enumerate(ao_kpts_north)])
        pcell, contr_coeff = uncontract(cell_north)
        dm1 = numpy.einsum('pi,kij,qj->kpq', contr_coeff, dm, contr_coeff)
        out = eval_rho(pcell, dm1, kpts=kpts)
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)

        out = eval_rho(pcell, dm1, hermi=1, kpts=kpts)
        self.assertTrue(out.dtype == numpy.double)
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
Ejemplo n.º 4
0
    def test_pbc_nonorth_lda_rho(self):
        ref = sum([numpy.einsum('gi,ij,gj->g', ao[0], dm[k], ao[0].conj())
                   for k,ao in enumerate(ao_kpts_north)])
        pcell, contr_coeff = uncontract(cell_north)
        dm1 = numpy.einsum('pi,kij,qj->kpq', contr_coeff, dm, contr_coeff)
        out = eval_rho(pcell, dm1, kpts=kpts)
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)

        out = eval_rho(pcell, dm1, hermi=1, kpts=kpts)
        self.assertTrue(out.dtype == numpy.double)
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
Ejemplo n.º 5
0
    def test_pbc_nonorth_gga_rho(self):
        ao = ao_gamma_north
        ref = numpy.einsum('ngi,ij,gj->ng', ao, dm[0], ao[0].conj())
        pcell, contr_coeff = uncontract(cell_north)
        dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff)
        out = eval_rho(pcell, dm1, xctype='GGA')
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)

        ref = sum([numpy.einsum('ngi,ij,gj->ng', ao, dm[k], ao[0].conj())
                   for k,ao in enumerate(ao_kpts_north)])
        dm1 = numpy.einsum('pi,kij,qj->kpq', contr_coeff, dm, contr_coeff)
        out = eval_rho(pcell, dm1, kpts=kpts, xctype='GGA')
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
Ejemplo n.º 6
0
    def test_pbc_nonorth_gga_rho(self):
        ao = ao_gamma_north
        ref = numpy.einsum('ngi,ij,gj->ng', ao, dm[0], ao[0].conj())
        pcell, contr_coeff = uncontract(cell_north)
        dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff)
        out = eval_rho(pcell, dm1, xctype='GGA')
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)

        ref = sum([numpy.einsum('ngi,ij,gj->ng', ao, dm[k], ao[0].conj())
                   for k,ao in enumerate(ao_kpts_north)])
        dm1 = numpy.einsum('pi,kij,qj->kpq', contr_coeff, dm, contr_coeff)
        out = eval_rho(pcell, dm1, kpts=kpts, xctype='GGA')
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)
Ejemplo n.º 7
0
    def test_nonorth_gga_rho(self):
        ao = ao_north
        ref = numpy.einsum('ngi,ij,gj->ng', ao, dm[0], ao[0].conj())
        pcell, contr_coeff = uncontract(mol_north)
        dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff)
        out = eval_rho(pcell, dm1, xctype='GGA')
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)

        #out = eval_rho(pcell, dm1, hermi=1, xctype='GGA')
        self.assertRaises(RuntimeError, eval_rho, pcell, dm1, xctype='GGA', hermi=1)
Ejemplo n.º 8
0
    def test_nonorth_gga_rho(self):
        ao = ao_north
        ref = numpy.einsum('ngi,ij,gj->ng', ao, dm[0], ao[0].conj())
        pcell, contr_coeff = uncontract(mol_north)
        dm1 = numpy.einsum('pi,ij,qj->pq', contr_coeff, dm[0], contr_coeff)
        out = eval_rho(pcell, dm1, xctype='GGA')
        self.assertAlmostEqual(abs(out-ref).max(), 0, 9)

        #out = eval_rho(pcell, dm1, hermi=1, xctype='GGA')
        self.assertRaises(RuntimeError, eval_rho, pcell, dm1, xctype='GGA', hermi=1)
Ejemplo n.º 9
0
 def test_pbc_nonorth_lda_rho_submesh(self):
     cell = gto.M(atom='H 2 3 4; H 3 4 3',
                  basis=[[0, (2.2, 1)], [1, (1.9, 1)]],
                  unit='B',
                  mesh=[7, 6, 5],
                  a=numpy.eye(3) * 8 + numpy.random.rand(3, 3))
     grids = cell.get_uniform_grids()
     ao = cell.pbc_eval_gto('GTOval', grids)
     nao = cell.nao_nr()
     dm = numpy.random.random((nao, nao))
     dm = dm + dm.T
     ref = numpy.einsum('gi,ij,gj->g', ao, dm, ao.conj())
     ref = ref.reshape(cell.mesh)[1:6, 2:5, 2:4].ravel()
     out = eval_rho(cell, dm, offset=[1, 2, 2], submesh=[5, 3, 2])
     self.assertAlmostEqual(abs(out - ref).max(), 0, 9)
Ejemplo n.º 10
0
 def test_pbc_nonorth_lda_rho_submesh(self):
     cell = gto.M(atom='H 2 3 4; H 3 4 3',
               basis=[[0, (2.2, 1)],
                      [1, (1.9, 1)]],
               unit='B',
               mesh=[7,6,5],
               a=numpy.eye(3)*8+numpy.random.rand(3,3))
     grids = cell.get_uniform_grids()
     ao = cell.pbc_eval_gto('GTOval', grids)
     nao = cell.nao_nr()
     dm = numpy.random.random((nao,nao))
     dm = dm + dm.T
     ref = numpy.einsum('gi,ij,gj->g', ao, dm, ao.conj())
     ref = ref.reshape(cell.mesh)[1:6,2:5,2:4].ravel()
     out = eval_rho(cell, dm, offset=[1,2,2], submesh=[5,3,2])
     self.assertAlmostEqual(abs(out-ref).max(), 0, 9)