Beispiel #1
0
    abs_kpts = cell.get_abs_kpts(scaled_kpts)
    kmf = pbchf.KRHF(cell, abs_kpts, exxdiv=exxdiv)
    kmf.verbose = 7
    print kmf.scf()
    return kmf


def run_kdft(cell, nmp=[1, 1, 1], gamma=False):
    """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)
    kmf = pbcdft.KRKS(cell, abs_kpts)
    kmf.xc = 'lda,vwn'
    kmf.verbose = 7
    print kmf.scf()
    return kmf


if __name__ == '__main__':
    from helpers 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)
Beispiel #2
0
    return e,c


if __name__ == '__main__':
    import sys
    from helpers import get_ase_diamond_primitive, build_cell
    from scf import run_khf

    args = sys.argv[1:]
    if len(args) != 6:
        print 'usage: atom basis ke nkx nky nkz'
        sys.exit(1)
    atom = args[0]
    bas = args[1]
    ke = float(args[2])
    nmp = np.array([int(nk) for nk in args[3:6]])
  
    assert atom in ['C','Si']
    ase_atom = get_ase_diamond_primitive(atom=atom) 
    cell = build_cell(ase_atom, ke=ke, basis=bas, incore_anyway=True)

    nmp = nmp
    mf = run_khf(cell, nmp=nmp)
    
    cc = run_krccsd(mf)
    print "KRCCSD E =", cc.ecc

    print "%0.4f %0.8f %0.8f %0.8f"%(
            np.prod(nmp)**(1./3), mf.e_tot, cc.emp2, cc.ecc)

Beispiel #3
0
    e, c = cc.eeccsd(nroots)
    return e


def print_with_degeneracy(energies, dec=7):
    # numpy 1.9.0 only
    es, ns = np.unique(energies.round(decimals=dec), return_counts=True)
    for e, n in zip(es, ns):
        print e, "( x", n, ")"


if __name__ == '__main__':
    from helpers import get_ase_diamond_primitive, build_cell
    from scf import run_hf
    ase_atom = get_ase_diamond_primitive()
    cell = build_cell(ase_atom, incore_anyway=True)
    mf = run_hf(cell)

    cc = run_ccsd(mf)
    print "CCSD E =", cc.ecc

    eip = run_ipccsd(cc)
    print "IP-CCSD E ="
    print_with_degeneracy(eip)

    eea = run_eaccsd(cc)
    print "EA-CCSD E ="
    print_with_degeneracy(eea)

    print "Bandgap =", (eip[0] + eea[0]) * 27.211, "eV"
Beispiel #4
0
def run_eeccsd(cc, nroots=4):
    e,c = cc.eeccsd(nroots)
    return e

def print_with_degeneracy(energies, dec=7):
    # numpy 1.9.0 only
    es, ns = np.unique(energies.round(decimals=dec), return_counts=True)
    for e,n in zip(es,ns):
        print e, "( x", n, ")"

if __name__ == '__main__':
    from helpers import get_ase_diamond_primitive, build_cell
    from scf import run_hf
    ase_atom = get_ase_diamond_primitive() 
    cell = build_cell(ase_atom, incore_anyway=True)
    mf = run_hf(cell)
    
    cc = run_ccsd(mf)
    print "CCSD E =", cc.ecc

    eip = run_ipccsd(cc)
    print "IP-CCSD E ="
    print_with_degeneracy(eip)

    eea = run_eaccsd(cc)
    print "EA-CCSD E ="
    print_with_degeneracy(eea)

    print "Bandgap =", (eip[0]+eea[0])*27.211, "eV"
Beispiel #5
0
    e, c = cc.eaccsd(nroots)
    return e, c


if __name__ == '__main__':
    import sys
    from helpers import get_ase_diamond_primitive, build_cell
    from scf import run_khf

    args = sys.argv[1:]
    if len(args) != 6:
        print 'usage: atom basis ke nkx nky nkz'
        sys.exit(1)
    atom = args[0]
    bas = args[1]
    ke = float(args[2])
    nmp = np.array([int(nk) for nk in args[3:6]])

    assert atom in ['C', 'Si']
    ase_atom = get_ase_diamond_primitive(atom=atom)
    cell = build_cell(ase_atom, ke=ke, basis=bas, incore_anyway=True)

    nmp = nmp
    mf = run_khf(cell, nmp=nmp)

    cc = run_krccsd(mf)
    print "KRCCSD E =", cc.ecc

    print "%0.4f %0.8f %0.8f %0.8f" % (np.prod(nmp)
                                       **(1. / 3), mf.e_tot, cc.emp2, cc.ecc)
Beispiel #6
0
    print "After shifting back"
    print scaled_kpts
    abs_kpts = cell.get_abs_kpts(scaled_kpts)
    kmf = pbchf.KRHF(cell, abs_kpts, exxdiv=exxdiv)
    kmf.verbose = 7
    print kmf.scf()
    return kmf

def run_kdft(cell, nmp=[1,1,1], gamma=False):
    """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)
    kmf = pbcdft.KRKS(cell, abs_kpts)
    kmf.xc = 'lda,vwn'
    kmf.verbose = 7
    print kmf.scf()
    return kmf

if __name__ == '__main__':
    from helpers 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)