from laskentaa import tee_gauss_seidel_yksi_askel from ydin import Ydin from piirtoa import plot2d #atomiytimet ytimet = [] ytimet.append(Ydin((0.15,0.15,0.15), +1)) ytimet.append(Ydin((0.05,0.05,0.05), +2)) 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)
from alustus import tee_gridi, aseta_gridin_alkuarvo from energiat import E_T, E_vaihtokorrelaatio, E_elektroni_elektroni, \ E_elektroni_ydin, E_tot from ydin import Ydin from piirtoa import plot2d import numpy as np from scipy.optimize import fmin_powell, fmin, anneal nx = 5 ny = 5 nz = 1 dx = 0.2 dy = 0.2 dz = 0.2 V_hartree_init = tee_gridi(nx,ny,nz) elektroni_tiheys_init = tee_gridi(nx,ny,nz) ydin_tiheys_init = tee_gridi(nx,ny,nz) tasa_tiheys = 1/(nx*ny*nz*dx*dy*dz) V_hartree = aseta_gridin_alkuarvo(0, V_hartree_init) elektroni_tiheys = aseta_gridin_alkuarvo(-0.1, elektroni_tiheys_init) ydin_tiheys = aseta_gridin_alkuarvo(0, ydin_tiheys_init) ydin_tiheys[1,1,0] = 1 ydin_tiheys[3,3,0] = 1 elektroni_tiheys_flat = elektroni_tiheys.ravel().tolist() xopt = fmin(func=E_tot, x0=elektroni_tiheys_flat, \ args = (V_hartree, ydin_tiheys, dx, dy, dz), \ V_hartree_xy = np.sum(V_hartree, axis=2)