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'
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'
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'
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'