コード例 #1
0
 def update(self):
     energy = 0
     for i in self.model.schedule:
         other = self.model.schedule[i]
         if other.unique_id != self.unique_id:
             energy += freeEnergy(
                 [self.pos_ca,
                  get_energy(self.a_type), self.a_type],
                 [other.pos_ca,
                  get_energy(other.a_type), other.a_type])
     self.energy = energy
コード例 #2
0
def molecular_dynamics(vertices, edges, polys, parameters, T, folder):

	delta_t = parameters['delta_t']
	lx = parameters['lx']
	ly = parameters['ly']
	L = np.array([lx,ly])

	# time
	t = 0
	count = 0

	while t < T:

		# get energy for network
		energy = get_energy(vertices, polys, edges, parameters)
		# print energy		
		
		# get forces for network
		forces = get_forces(vertices, polys, edges, parameters)
		print t, np.sum(forces**2)**(0.5)

		# move vertices
		vertices = move_vertices(vertices, forces, parameters)

		# check for T1 transitions
		polys, edges = T1_transition(vertices, polys, edges, parameters)

		# add routine to write vertices, energy, forces at every time step
		# can be used for plotting routines later...
		# write_vertices(vertices, "%s/%.2f.txt" % (folder,t))
		# write edges?
		# write polygons?
		# if count % 21 == 0:
		plot_network(vertices, polys, L, "%s/%.2f.jpg" % (folder,t))

		count += 1
		t += delta_t

	return
コード例 #3
0
def speaker_recog_thread(outLabel, outLabelp):
    global pre_spk
    while True:
        try:
            data = q.get()
            t1 = time.time()
            outLabel.config(text='...')
            t2 = time.time()
            post_res('%s\n%s' % ('...', pre_spk))
            t3 = time.time()
            write_wave(
                os.path.join(speaker_recog_final.DATA_DIR, 'test', 'test.wav'),
                data)
            t4 = time.time()
            energy = get_energy(
                os.path.join(speaker_recog_final.DATA_DIR, 'test', 'test.wav'))
            t5 = time.time()
            if energy > eng_th:
                speaker = speaker_recog_final.test_speaker_recog()
                t6 = time.time()
                if speaker != '...':
                    spk_history.append(speaker)
                    spk = modefinder(spk_history)
                    if spk:
                        post_res('%s\n%s' % (spk, pre_spk))
                        print(spk)
                        outLabel.config(text=spk)
                        if pre_spk != spk:
                            pre_spk = spk
                            outLabelp.config(text=pre_spk)
                    t7 = time.time()
                    print(t2 - t1, t3 - t2, t4 - t3, t5 - t4, t6 - t5, t7 - t6)
                    print(t7 - t1, spk_history)
            else:
                # post_res('%s\n%s'%('empty', pre_spk))
                # outLabel.config(text='empty')
                pass
        except queue.Empty:
            continue
コード例 #4
0
def steepest_descent(vertices, edges, polys, parameters, folder):

	epsilon = 10**-6
	delta_t = parameters['delta_t']
	lx = parameters['lx']
	ly = parameters['ly']
	L = np.array([lx,ly])
	t = 0.

	energylist = []

	forces = 10**6
	while np.sum(forces**2)**(0.5) > epsilon:

		# get energy for network
		energy = get_energy(vertices, polys, edges, parameters)
		energylist.append(energy)	

		
		# get forces for network
		forces = get_forces(vertices, polys, edges, parameters)
		print np.sum(forces**2)**(0.5)

		# move vertices
		vertices = move_vertices(vertices, forces, parameters)

		# check for T1 transitions
		cells, edges = T1_transition(vertices, polys, edges, parameters)

		# plot_network(vertices, polys, L, "%s/%.2f.jpg" % (folder,t))

		t += delta_t

	return 




































# def steepest_descent(network, vertices, cells, edges, delta_t, epsilon, folder):

# 	# keep track of time steps
# 	time = []
# 	t = 0

# 	# keep track of energy
# 	energy = []

# 	# for T1 transition
# 	min_dist = 0.2

# 	L = network.L

# 	# while forces are greater than epsilon
# 	forces = epsilon**0.5
# 	count = 0

# 	# generate random angle vectors
# 	for cell in cells:
# 		cell.theta = rand_angle()
	

# 	os.mkdir("noise/hex/%s" % folder)
# 	# f = open("energy/energy.txt", "w+")

# 	while count < 50:
# 	# while np.sum(forces**2)**(0.5) > epsilon:

# 		# plot_network(vertices, cells, L, "motility/%d.jpg" % count)

# 		# if count % 200 == 0:
# 		# 	for cell in cells:
# 		# 		cell.theta = rand_angle()

# 		# # write cell vertices for MSD

# 		os.chdir("noise/hex/%s" % folder)
# 		np.savetxt("%d.txt" % count, vertices)
# 		os.chdir("..")
# 		os.chdir("..")
# 		os.chdir("..")

# 		# get energy for network
# 		energy = network.get_energy(vertices, cells, edges)

# 		# get forces for network
# 		forces = network.get_forces(vertices, cells, edges)
	
# 		# move vertices with forces
# 		vertices = network.move_vertices(forces, vertices)


# 		ka = network.parameters['ka']
# 		A0 = 1.
# 		print t, energy / (24.*ka*(A0**2)), np.sum(forces**2)**(0.5)
# 		# norm_energy = np.array(energy / (24.*ka*(A0**2)))
# 		# f.write("%f\n" % norm_energy)


# 		# new time step
# 		t += delta_t

# 		# # check for T1 transitions
# 		cells, edges = T1_transition(network, vertices, cells, edges, min_dist)
# 		count += 1

# 	# f.close()
# 	return vertices
コード例 #5
0
 def set_energy(self, key, geom, d=None):
     e = get_energy(np.array(geom))
     if d != None:
         d[key] = e
         return
     self.energy[key] = e
コード例 #6
0
from molecule import Molecule
from grad import gradient_descent
from hessian import Hessian
from frequencies import Frequencies
from pbc import pbc_sep
import numpy as np
if __name__ == '__main__':
    print("Starting to make initial configuration.")
    get_config()  # Q1
    init_mol = None
    with open("molecule.xyz") as f:
        print("Initial Configuration Generated for Arg LJ Model")
        print("Initial COnfiguration for Q1 will the saved to molecule.xyz")
        init_mol = Molecule(f, "Angstrom")
        print("Starting to do Q2 and Q3...")
        e = get_energy(np.array(init_mol.geom))  # Q2
        # print(e)
        # Q3 Steapest Descend is a heuristic.. Needs tuning of parameters...
        print("Starting Steepest Descent Algoithm to minimise Energy...")
        g = gradient_descent(0.135, 100, init_mol.geom)
        print("Steepest Descent Algoithm Ended.. Results below\n")
        print("Original Energy: ", e)
        print("New Energy:", np.min(np.array(g[1])))
        print()
        i = np.argmin(np.array(g[1]))
        print("New Configuration will be saved in new_molecule.xyz")
        with open("new_molecule.xyz", "w") as f2:
            print(len(g[0][i]), file=f2)
            print(file=f2)
            for p in g[0][i]:
                print(f"C {p[0]} {p[1]} {p[2]}", file=f2)
コード例 #7
0
def steepest_descent(vertices, edges, polys, parameters):

    epsilon = 10**-6
    delta_t = parameters['delta_t']
    t = 0.

    count = 0
    forces = 10**6
    while np.sum(forces**2)**(0.5) > epsilon:

        # get energy for network
        energy = get_energy(vertices, polys, edges, parameters)
        # print energy

        # get forces for network
        forces = get_forces(vertices, polys, edges, parameters)
        print np.sum(forces**2)**(0.5)

        # move vertices
        vertices = move_vertices(vertices, forces, parameters)

        # check for T1 transitions
        cells, edges = T1_transition(vertices, polys, edges, parameters)

        # add routine to write vertices, energy, forces at every time step
        # can be used for plotting routines later...

        t += delta_t

    return


# def steepest_descent(network, vertices, cells, edges, delta_t, epsilon, folder):

# 	# keep track of time steps
# 	time = []
# 	t = 0

# 	# keep track of energy
# 	energy = []

# 	# for T1 transition
# 	min_dist = 0.2

# 	L = network.L

# 	# while forces are greater than epsilon
# 	forces = epsilon**0.5
# 	count = 0

# 	# generate random angle vectors
# 	for cell in cells:
# 		cell.theta = rand_angle()

# 	os.mkdir("noise/hex/%s" % folder)
# 	# f = open("energy/energy.txt", "w+")

# 	while count < 50:
# 	# while np.sum(forces**2)**(0.5) > epsilon:

# 		# plot_network(vertices, cells, L, "motility/%d.jpg" % count)

# 		# if count % 200 == 0:
# 		# 	for cell in cells:
# 		# 		cell.theta = rand_angle()

# 		# # write cell vertices for MSD

# 		os.chdir("noise/hex/%s" % folder)
# 		np.savetxt("%d.txt" % count, vertices)
# 		os.chdir("..")
# 		os.chdir("..")
# 		os.chdir("..")

# 		# get energy for network
# 		energy = network.get_energy(vertices, cells, edges)

# 		# get forces for network
# 		forces = network.get_forces(vertices, cells, edges)

# 		# move vertices with forces
# 		vertices = network.move_vertices(forces, vertices)

# 		ka = network.parameters['ka']
# 		A0 = 1.
# 		print t, energy / (24.*ka*(A0**2)), np.sum(forces**2)**(0.5)
# 		# norm_energy = np.array(energy / (24.*ka*(A0**2)))
# 		# f.write("%f\n" % norm_energy)

# 		# new time step
# 		t += delta_t

# 		# # check for T1 transitions
# 		cells, edges = T1_transition(network, vertices, cells, edges, min_dist)
# 		count += 1

# 	# f.close()
# 	return vertices
コード例 #8
0
ファイル: solution.py プロジェクト: lgmartinez/plasma
def get_solution(enthalpy,temperature,reference_temperature,pressure,\
                 reference_pressure,density,reference_density,velocity,\
                 concentration_s1,concentration_s2,concentration_s3,\
                 concentration_g1,electric_potential,current_density,\
                 electrical_conductivity,number_density,\
                 delx,delt,cfl_energy,cfl_momentum,energyfluxmax,\
                 momentumfluxmax,reporting_interval1,reporting_interval2):
    ''' 
    this function combines the entire algorithm and provides a
    time-marched solution

    Parameters:
    -----------
    enhtalpy
    temperature
    reference_temperature
    pressure
    reference_pressure
    density
    reference_density
    velocity
    concentrations 1 through 4: B,Ni.Co,N
    electric_potential
    current_density
    electrical_conductivity
    number_density (e)
    delx,delt
    cfl_energy,cfl_momentum (if no initial value: use 125,0.75 respectively)
    energyfluxmax,momentumfluxmax (if no inital value: use 1e5,1.0 respectively)
    reporting_interval1,reporting_interval2

    Returns:
    -----------
    for now, output 2 scalar variables:
    number of iterations
    final time
    '''
    hnref = enthalpy.copy()
    #used for stability condition
    delt_ref = delt
    # cfl numbers for stability condition
    cflen = cfl_energy
    cflmn = cfl_momentum
    cflen_ref = cfl_energy
    cflmn_ref = cfl_momentum
    #fluxes for stability condition
    efmax = energyfluxmax
    mfmax = momentumfluxmax
    #temperature
    Tnref = temperature.copy()
    Tnref_old = reference_temperature.copy()
    #pressure
    pxn = pressure.copy() 
    pxn_ref = reference_pressure.copy()
    #density
    rhoxn = density.copy()
    rhoxn_ref = reference_density.copy()
    #velocity
    uxn = velocity.copy()
    #concentrations
    cB  = concentration_s1.copy()
    cNi = concentration_s2.copy()
    cCo = concentration_s3.copy()
    cN  = concentration_g1.copy() 
    # electric potential
    phin = electric_potential.copy()
    #current density
    jn = current_density.copy()
    # electrical conductivity
    econdxn = electrical_conductivity.copy()
    #number density of electrons
    nexn = number_density.copy()
    nexn_ref = number_density.copy() #reference_number_density
    # current time
    time = 0 + delt_ref
    #final time in seconds
    t_terminal = 0.0005
    #iteration count
    iterations = 0
    #-------------------
    #file = open('output_summary.txt','a')
    #
    while (time <t_terminal):
        iterations += 1
        delt = get_adaptive_time_step(cflen,cflmn,efmax,mfmax,\
                                      delx,delt_ref,numpy.max(uxn))
        time = time + delt
        mun,ktn,cpn,Rsn = get_thermophysical_properties(Tnref,cN,cB,cNi,cCo)
        ablrate,rhoevap,rholocal,rhoanbc,uanbc = get_ablation_properties(Tnref[0],pxn[1],\
                                                                 Tnref[1],Rsn[1])
        uxn = get_velocity_bc(uxn,uanbc)
        rhoxn = get_density_bc(rhoxn,rhoanbc)
        pxn = get_pressure_bc(pxn,Tnref[0],rhoxn[0],Rsn[0],\
                              Tnref[-1],rhoxn[-1],Rsn[-1]) 
        rhoxn,uxn,pxn,cflmn,mflux = get_flow(pxn,rhoxn,uxn,mun,\
                                             delx,delt,uanbc,rhoanbc)
        compress = get_compressibility(pxn,pxn_ref,rhoxn,rhoxn_ref)
        rhoB,rhoNi,rhoCo,rhoN,\
        cB,cNi,cCo,cN = get_mass_diffusion(pxn,Tnref,rhoxn,uxn,cB,cNi,cCo,cN,\
                                           delt,delx,rhoevap,rholocal)
        nexn,nixn,noxn,pexn = saha_algorithm(Tnref,rhoxn,cB,cNi,cCo,cN,nexn_ref)
        econdxn = get_electrical_conductivity(Tnref,nexn,noxn,time)
        Tn,hn,cflen,efmax,Tpa,Tpc = get_energy(ablrate,rhoxn,uxn,pxn,pxn_ref,Tnref,hnref,cpn,\
                                           ktn,mun,jn,econdxn,nexn,delx,delt)
        pxn[:] = rhoxn[:]*Rsn[:]*Tn[:]
	#reference values
        Tnref_old = Tnref.copy()
        Tnref = Tn.copy()
        hnref = hn.copy()
        rhoxn_ref = rhoxn.copy()
        pxn_ref = pxn.copy()
        nexn_ref = nexn.copy()
        delt_ref = delt
        time_ref = time
        cflen_ref = cflen
        cflmn_ref = cflmn
	#print summary
        if iterations in reporting_interval1:
            file = open('output_summary.txt','a')
            file.write('---------------------------------------\n' )
            file.write('current iteration is: %.3g\n' %iterations)
            file.write('evaporated density is: %.3g\n' %rhoevap)
            file.write('ablation rate is: %.3g\n' %ablrate)
            file.write('max compressibility is: %.3g \n' %numpy.max(compress))
            file.write('time step value is: %.3g\n' %delt)
            file.write('current time in seconds is: %.3g\n' %time)
            file.write('uxn[0] velocity in [m/s] is: %.3g\n' %uxn[0])
            file.write('uxn[1] velocity in [m/s] is: %.3g\n' %uxn[1])
            file.write('uxn[2] velocity in [m/s] is: %.3g\n' %uxn[2])
            file.write('uxn[3] velocity in [m/s] is: %.3g\n' %uxn[3])
            file.write('uxn[-1] velocity in [m/s] is: %.3g\n' %uxn[-1])
            file.write('uxn[-2] velocity in [m/s] is: %.3g\n' %uxn[-2])
            file.write('uxn[-3] velocity in [m/s] is: %.3g\n' %uxn[-3])
            file.write('max velocity is:  %.3g\n' %numpy.max(uxn))
            file.write('min velocity is:  %.3g\n' %numpy.min(uxn))
            file.write('anode density in [kg/m3] is: %.3g\n' %rhoxn[0])
            file.write('rhoxn[1] density in [kg/m3] is: %.3g\n' %rhoxn[1])
            file.write('rhoxn[2] density in [kg/m3] is: %.3g\n' %rhoxn[2])
            file.write('rhoxn[3] density in [kg/m3] is: %.3g\n' %rhoxn[3])
            file.write('rhoxn[-1] density in [kg/m3] is: %.3g\n' %rhoxn[-1])
            file.write('rhoxn[-2] density in [kg/m3] is: %.3g\n' %rhoxn[-2])
            file.write('rhoxn[-3] density in [kg/m3] is: %.3g\n' %rhoxn[-3])
            file.write('max density is:  %.3g\n' %numpy.max(rhoxn))
            file.write('min density is:  %.3g\n' %numpy.min(rhoxn))
            file.write('Anode Temperature [K] is: %.3g\n' %Tn[0])
            file.write('T[1] temperature in [K] is: %.3g\n' %Tn[1])
            file.write('T[2] temperature in [K] is: %.3g\n' %Tn[2])
            file.write('T[3] temperature in [K] is: %.3g\n' %Tn[3])
            file.write('T[-1] temperature in [K] is: %.3g\n' %Tn[-1])
            file.write('T[-2] temperature in [K] is: %.3g\n' %Tn[-2])
            file.write('T[-3] temperature in [K] is: %.3g\n' %Tn[-3])
            file.write('max temperature is:  %.3g\n' %numpy.max(Tn))
            file.write('min temperature is:  %.3g\n' %numpy.min(Tn))
            file.write('Anode Pressure [Pa] is: %.3g\n' %pxn[0])
            file.write('p[1] pressure in [Pa] is: %.3g\n' %pxn[1])
            file.write('p[2] pressure in [Pa] is: %.3g\n' %pxn[2])
            file.write('p[3] pressure in [Pa] is: %.3g\n' %pxn[3])
            file.write('p[-1] pressure in [Pa] is: %.3g\n' %pxn[-1])
            file.write('p[-2] pressure in [Pa] is: %.3g\n' %pxn[-2])
            file.write('p[-3] pressure in [Pa] is: %.3g\n' %pxn[-3])
            file.write('max pressure is:  %.3g\n' %numpy.max(pxn))
            file.write('min pressure is:  %.3g\n' %numpy.min(pxn))
            file.write('momentum cfl number is:  %.3g\n' %cflmn)
            file.write('energy cfl number is:  %.3g\n' %cflen)
            file.write('anode temperature addition [K]:  %.4g\n' %Tpa)
            file.write('cathode temperature addition [K]:  %.4g\n' %Tpc)
            file.write('---------------------------------------\n')
            file.close()
	#print graphs
        if iterations in reporting_interval2:
            plot( xc,numpy.round(Tn[1:-1],decimals=10),\
                 'grid location [m]','Temperature [K]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_temperature.png' %iterations)
            #
            plot( xb,numpy.round(uxn[1:-1],decimals=5),\
                 'grid location [m]','velocity [m/s]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_velocity.png' %iterations)
            #
            plot( xc,numpy.round(rhoxn[1:-1],decimals=4),\
                 'grid location [m]','density [kg/m3]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_density.png'%iterations)
            #
            plot( xc,numpy.round(pxn[1:-1],decimals=0),\
                 'grid location [m]','pressure [Pa]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_pressure.png'%iterations)
            #
            plot( xc,numpy.round(nexn[1:-1],decimals=0),\
                 'grid location [m]','ne [1/m3]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_ne.png'%iterations)
            #
            plot( xc,numpy.round(econdxn[1:-1],decimals=0),\
                 'grid location [m]','econd [S/m]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_econdavg.png'%iterations)
            #
            plot( xc,numpy.round(rhoB[1:-1],decimals=4),\
                 'grid location [m]','Boron Density [kg/m3]','time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_rhoB.png' %iterations)
            #
            plot( xc,numpy.round(rhoNi[1:-1],decimals=4),\
                 'grid location [m]','Nickel Density [kg/m3]','time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_rhoNi.png' %iterations)
            #
            plot( xc,numpy.round(rhoCo[1:-1],decimals=4),\
                 'grid location [m]','Cobalt Density [kg/m3]','time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_rhoCo.png' %iterations)
            #
            plot( xc,numpy.round(rhoN[1:-1],decimals=4),\
                 'grid location [m]','Nitrogen Density [kg/m3]','time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_rhoN.png' %iterations)
	#check for anode steady state:
       # if numpy.abs(Tnref[0]-Tnref_old[0]) <l2_target and iterations>1e6:
           # Tnref[0] = Tnref_old[0]
           # print('anode has reached steady state')
	#check for overall steady state
        if (numpy.all(numpy.abs(Tnref[:]-Tnref_old[:]) < l2_target)==True):
            plot( xc,numpy.round(Tn[1:-1],decimals=10),\
                 'grid location [m]','Temperature [K]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_temperature.png' %iterations)
            #
            plot( xb,numpy.round(uxn[1:-1],decimals=5),\
                 'grid location [m]','velocity [m/s]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_velocity.png' %iterations)
            #
            plot( xc,numpy.round(rhoxn[1:-1],decimals=4),\
                 'grid location [m]','density [kg/m3]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_density.png'%iterations)
            #
            plot( xc,numpy.round(pxn[1:-1],decimals=0),\
                 'grid location [m]','pressure [Pa]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_pressure.png'%iterations)
            #
            plot( xc,numpy.round(nexn[1:-1],decimals=0),\
                 'grid location [m]','ne [1/m3]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_ne.png'%iterations)
            #
            plot( xc,numpy.round(econdxn[1:-1],decimals=0),\
                 'grid location [m]','econd [S/m]',  'time= %.4g sec' %time)
            pyplot.savefig('./plots/%.5g_econdavg.png'%iterations)
            file.write('entire domain has reached steady state\n')
            file.write('terminal time is %.4g\n' %time)
            file.write('end of computation, see you later!\n')
            break
        #check for end of computation
        if (time >= t_terminal):
            file.write('max computational time reached.if steady state not achieved, increase terminal time\n')
    return iterations,time