Exemple #1
0
print elektroni_tiheys.to_1d_list()

print "ydintiheys",ydin_tiheys.gridi
#Elektronien määrä on vakio
elektroni_tiheys.set_summa()
ntot = np.sum(elektroni_tiheys.gridi)*V_hartree.get_volume_of_a_box()
print "elektronien kokonaisvaraus", ntot, elektroni_tiheys.get_summa_mennyt()

# otetaan tavoitteeksi että siirto hyväksytään joka viides kerta
# silloin on sopivasti riskiä yrityksessä
tiheydenmuutos = 0.1
outfile = open('energiat.txt', 'w')
for step in range(10):
    konvergoinut = laskentaa.minimoi_monte_carlolla(
        outfile, 
        elektroni_tiheys, V_hartree,
        ydin_tiheys,
        tiheydenmuutos,
        n_iter=100, tol=1e-4) 
    
    if konvergoinut:
        print "konvergoi"
        break


    ##piirtoa.plot3d(elektroni_tiheys)
    piirtoa.plot2d_simple(elektroni_tiheys)
outfile.close()


         read_data.read_data(filename = filename)

        elektroni_tiheys.set_summa()
        elektroni_tiheys.set_mylambda(mylambda)
        elektroni_tiheys.set_n_iter(n_iter)
        elektroni_tiheys.set_tol(tol)
        elektroni_tiheys.set_temperature(temperature)
        elektroni_tiheys.set_tiheydenmuutos(tiheydenmuutos)
        elektroni_tiheys.set_d_rho(d_rho)
        elektroni_tiheys.set_askel(askel)

        outfile = open('mc_'+filename+'energiat.txt', 'w')
        start = time.time()
        konvergoinut = \
            laskentaa.minimoi_monte_carlolla(
            outfile, 
            elektroni_tiheys, V_hartree,
            ydin_tiheys)
        if konvergoinut:
            print "konvergoi"
            print "elektronimäärä", elektroni_tiheys.get_number_of_electrons()
            end = time.time()
            outfile.write("#time elapsed"+str(end-start))
        outfile.close()


        ##piirtoa.plot3d(elektroni_tiheys)
        if piirra:
            piirtoa.plot2d_simple(elektroni_tiheys)
        print filename+"MC: ETOT", energiat.E_tot(
            elektroni_tiheys, V_hartree, ydin_tiheys)