Example #1
0

# Test 3

if test3:
    pcd        = 1000.0    # distance of the two point charges
    maxcharge  = 100.0     # maximum charge on the point charge

    e        = [ ]
    e1s      = [ ]
    d        = [ ]
    charges  = np.linspace(-maxcharge, maxcharge, nfs)
    fields   = [ ]
    for charge in charges:
        ex = PointCharges(
            positions  = [ [ a0/2, a0/2, -pcd/2+a0/2 ], [ a0/2, a0/2, pcd/2+a0/2 ] ],
            charges    = [ charge, -charge ]
            )
        c.set(
            external  = ex
            )
        etot = a.get_potential_energy()
        e      += [ etot ]
        ev0     = c.get_eigenvalues(0)
        ev1     = c.get_eigenvalues(1)
        e1s    += [ min( ev0[0], ev1[0] ) ]
        dip     = c.get_dipole_moment()
        d      += [ dip[2] ]
        field   = ex.get_taylor(position=a[0].position)[1][1]
        if rank == 0 and debug:
            print field*to_eVA, 2*charge/((pcd/2)**2)*Hartree*Bohr
        fields += [ field*to_eVA ]
Example #2
0
    alpha2 = (pol1 - pol2) / 2

# Test 3

if test3:
    pcd = 1000.0  # distance of the two point charges
    maxcharge = 100.0  # maximum charge on the point charge

    e = []
    e1s = []
    d = []
    charges = np.linspace(-maxcharge, maxcharge, nfs)
    fields = []
    for charge in charges:
        ex = PointCharges(positions=[[a0 / 2, a0 / 2, -pcd / 2 + a0 / 2],
                                     [a0 / 2, a0 / 2, pcd / 2 + a0 / 2]],
                          charges=[charge, -charge])
        c.set(external=ex)
        etot = a.get_potential_energy()
        e += [etot]
        ev0 = c.get_eigenvalues(0)
        ev1 = c.get_eigenvalues(1)
        e1s += [min(ev0[0], ev1[0])]
        dip = c.get_dipole_moment()
        d += [dip[2]]
        field = ex.get_taylor(position=a[0].get_position())[1][1]
        if rank == 0 and debug:
            print field * to_eVA, 2 * charge / ((pcd / 2)**2) * Hartree * Bohr
        fields += [field * to_eVA]

    pol1, dummy = np.polyfit(fields, d, 1)
nelectrons = 2 * H2[0].number

txt = None
#txt = '-'

# load point charges
fname = 'pc.xyz'
if world.rank == 0:
    f = open('i' + fname, 'w')
    print("""1

X 0 0 100 -0.5""", file=f)
    f.close()
world.barrier()

ex = PointCharges()
ex.read('i' + fname)
ex.write('o' + fname)

convergence = {
    'eigenstates': 1.e-4 * 40 * 1.5**3,
    'density': 1.e-2,
    'energy': 0.1
}

# without potential
if True:
    if txt:
        print('\n################## no potential')
    c00 = GPAW(h=0.3, nbands=-1, convergence=convergence, txt=txt)
    c00.calculate(H2)
Example #4
0

# Test 3

if test3:
    pcd        = 1000.0    # distance of the two point charges
    maxcharge  = 100.0     # maximum charge on the point charge

    e        = [ ]
    e1s      = [ ]
    d        = [ ]
    charges  = np.linspace(-maxcharge, maxcharge, nfs)
    fields   = [ ]
    for charge in charges:
        ex = PointCharges(
            positions  = [ [ a0/2, a0/2, -pcd/2+a0/2 ], [ a0/2, a0/2, pcd/2+a0/2 ] ],
            charges    = [ charge, -charge ]
            )
        c.set(
            external  = ex
            )
        etot = a.get_potential_energy()
        e      += [ etot ]
        ev0     = c.get_eigenvalues(0)
        ev1     = c.get_eigenvalues(1)
        e1s    += [ min( ev0[0], ev1[0] ) ]
        dip     = c.get_dipole_moment()
        d      += [ dip[2] ]
        field   = ex.get_taylor(position=a[0].get_position())[1][1]
        if rank == 0 and debug:
            print field*to_eVA, 2*charge/((pcd/2)**2)*Hartree*Bohr
        fields += [ field*to_eVA ]
Example #5
0
import numpy as np
from ase import *

from gpaw.cluster import Cluster
from gpaw.point_charges import PointCharges

# I/O, translate

# old Cmdft style
fCmdft = 'PC_info'
f = open(fCmdft, 'w')
print >> f, """0.4
-3.0  0 0 -4
1.5   0 0 4.
"""
f.close()

pc = PointCharges(fCmdft)
assert (len(pc) == 2)
assert (pc.charge() == -1.5)

fxyz = 'pc.xyz'
pc.write(fxyz)

shift = np.array([0.2, 0.6, 2.8])
pc.translate(shift)

pc2 = PointCharges(fxyz)
for p1, p2 in zip(pc, pc2):
    assert (np.sum(p1.position - shift - p2.position) < 1e-6)
# txt = '-'

# load point charges
fname = "pc.xyz"
if world.rank == 0:
    f = open("i" + fname, "w")
    print(
        """1

X 0 0 100 -0.5""",
        file=f,
    )
    f.close()
world.barrier()

ex = PointCharges()
ex.read("i" + fname)
ex.write("o" + fname)

convergence = {"eigenstates": 1.0e-4 * 40 * 1.5 ** 3, "density": 1.0e-2, "energy": 0.1}

# without potential
if True:
    if txt:
        print("\n################## no potential")
    c00 = GPAW(h=0.3, nbands=-1, convergence=convergence, txt=txt)
    c00.calculate(H2)
    eps00_n = c00.get_eigenvalues()

# 0 potential
if True:
Example #7
0
            Atom(at, (a/2, a/2, (c+R)/2))],
           cell=(a,a,c), pbc=False)
print at, 'dimer'
nelectrons = 2 * H2[0].number

txt = None
#txt = '-'

# load point charges
fname = 'pc.xyz'
f = open('i' + fname, 'w')
print >> f, """1

X 0 0 100 -0.5"""
f.close()
ex = PointCharges()
ex.read('i' + fname)
ex.write('o' + fname)

convergence = {'eigenstates':1.e-4, 'density':1.e-2, 'energy':0.1}

# without potential
if True:
    if txt:
        print '\n################## no potential'
    c00 = GPAW(h=0.3, nbands=-1,
               convergence=convergence,
               txt=txt)
    c00.calculate(H2)
    eps00_n = c00.get_eigenvalues()
Example #8
0
import numpy as np
from ase import *

from gpaw.cluster import Cluster
from gpaw.point_charges import PointCharges

# I/O, translate

# old Cmdft style
fCmdft='PC_info'
f = open(fCmdft, 'w')
print >> f, """0.4
-3.0  0 0 -4
1.5   0 0 4.
"""
f.close()

pc = PointCharges(fCmdft)
assert(len(pc) == 2)
assert(pc.charge() == -1.5)

fxyz='pc.xyz'
pc.write(fxyz)

shift = np.array([0.2, 0.6, 2.8])
pc.translate(shift)

pc2 = PointCharges(fxyz)
for p1, p2 in zip(pc, pc2):
    assert(np.sum(p1.position - shift - p2.position) < 1e-6)