예제 #1
0
    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 ]

    pol1, dummy = np.polyfit(fields, d, 1)
    pol2, dummy1, dummy2 = np.polyfit(fields, e1s, 2)

    if rank == 0 and debug:
        print 'From shift in 1s-state between two point charges:'
        print '  alpha = ', -pol2, ' A**2/eV'
        print '  alpha = ', -pol2*to_au, ' Bohr**3'

        #print 'From dipole moment between two point charges:'
        #print '  alpha = ', pol1, ' A**2/eV'
        #print '  alpha = ', pol1*to_au, ' Bohr**3'
예제 #2
0
파일: stark_shift.py 프로젝트: qsnake/gpaw
    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)
    pol2, dummy1, dummy2 = np.polyfit(fields, e1s, 2)

    if rank == 0 and debug:
        print 'From shift in 1s-state between two point charges:'
        print '  alpha = ', -pol2, ' A**2/eV'
        print '  alpha = ', -pol2*to_au, ' Bohr**3'

        #print 'From dipole moment between two point charges:'
        #print '  alpha = ', pol1, ' A**2/eV'
        #print '  alpha = ', pol1*to_au, ' Bohr**3'
예제 #3
0
    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)
    pol2, dummy1, dummy2 = np.polyfit(fields, e1s, 2)

    if rank == 0 and debug:
        print 'From shift in 1s-state between two point charges:'
        print '  alpha = ', -pol2, ' A**2/eV'
        print '  alpha = ', -pol2 * to_au, ' Bohr**3'

        #print 'From dipole moment between two point charges:'
        #print '  alpha = ', pol1, ' A**2/eV'
        #print '  alpha = ', pol1*to_au, ' Bohr**3'
예제 #4
0
    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]

    pol1, dummy = np.polyfit(fields, d, 1)
    pol2, dummy1, dummy2 = np.polyfit(fields, e1s, 2)

    if rank == 0 and debug:
        print('From shift in 1s-state between two point charges:')
        print('  alpha = ', -pol2, ' A**2/eV')
        print('  alpha = ', -pol2 * to_au, ' Bohr**3')

        #print 'From dipole moment between two point charges:'
        #print '  alpha = ', pol1, ' A**2/eV'
        #print '  alpha = ', pol1*to_au, ' Bohr**3'