Beispiel #1
0
def get_V_hartree(V_hartree, elektroni_tiheys, tolerance=1e-5):
    """ lasketaan Hartree potentiaali tämänhetkiselle elektronitiheydelle"""
    e_vanha = E_elektroni_elektroni(elektroni_tiheys, V_hartree)
    e_uusi = e_vanha + 100.0
    counter = 0
    while (abs (e_uusi - e_vanha) > tolerance ):
        tee_gauss_seidel_yksi_askel(V_hartree, elektroni_tiheys)
        e_vanha = e_uusi
        e_uusi = E_elektroni_elektroni(elektroni_tiheys, V_hartree)
        counter = counter + 1
Beispiel #2
0
def get_V_hartree(V_hartree, elektroni_tiheys_3d, dx, dy, dz, n_iter=10):
    """ lasketaan Hartree potentiaali tämänhetkiselle elektronitiheydelle"""
    for step in range(n_iter):
        tee_gauss_seidel_yksi_askel(V_hartree, elektroni_tiheys_3d, dx, dy, dz)
Beispiel #3
0
nx = 4
ny = 4
nz = 1
dx = 0.1
dy = 0.1
dz = 0.1
V_hartree = tee_gridi(nx,ny,nz)
#print "V_hartree", V_hartree
elektroni_tiheys = tee_gridi(nx,ny,nz)
elektroni_tiheys[1,1,0] = -1
elektroni_tiheys[2,2,0] = -1
#elektroni_tiheys[3,0,1] = -3

aseta_gridin_alkuarvo(0, V_hartree)
#print "elektroni_tiheys", elektroni_tiheys
#print "V_hartree", V_hartree
#sys.exit()
for step in range(10):
    tee_gauss_seidel_yksi_askel(V_hartree, elektroni_tiheys, dx, dy, dz)
    #print V_hartree

print "kineettinen energia", E_T(elektroni_tiheys)
print "vaihtokorrelaatio energia", E_vaihtokorrelaatio(elektroni_tiheys)
print "elektroni_elektroni energia", \
    E_elektroni_elektroni(elektroni_tiheys,V_hartree)
print "elektroni_ydin energia", \
    E_elektroni_ydin(elektroni_tiheys,ytimet,dx,dy,dz)

plot2d(V_hartree, dx, dy, nx, ny)