def energy_plot(freq, angle): system = classes.System(width=500. / 3., height=200. / 3.0, drag_coeff=.01, buffer_width=10.0, frequency=freq, time=0.0, angle=angle, amplitude=3., step_size=.1) last_state = './w_167_h_77.txt' class_helpers.load_state_from_file(system, last_state) loops = 200 print(len(system.particles)) t0 = time.time() data_out = open('../produced_data/energy_plots/%s.txt' % str(system), 'w') for i in xrange(loops): system.time_step() PE = system.potential_energy() KE = system.kinetic_energy() TE = PE + KE T = system.time data_vals = (T, PE, KE, TE) print(i, T, TE) # print('%f %f %f %f\n' % data_vals) data_out.write('%f %f %f %f\n' % data_vals) tf = time.time() delta_t = tf - t0 print('%f to take %d steps' % (delta_t, loops))
def test_add_particle(self): system = classes.System() system.add_particle(classes.Particle()) self.assertEqual(1, len(system.particles)) self.assertEqual(system, system.particles[0].system) system.add_particle(classes.Particle()) self.assertEqual(2, len(system.particles))
def test_address_find(self): system = classes.System(width=500., height=200., cell_length=2.) system.add_particle(classes.Particle()) system.particles[0].state[:2] = [1.4, 1.2] self.assertEqual([0, 0], system.particles[0].cell_address()) system.particles[0].state[:2] = [201.4, 1.2] self.assertEqual([100, 0], system.particles[0].cell_address()) system.particles[0].state[:2] = [15.4, 11.2] self.assertEqual([7, 5], system.particles[0].cell_address())
def test_confinement_force(self): system = classes.System(buffer_width=10., height=100.) bottom_state = numpy.array([0.0, 5.0, 0, 0]) force_bottom = system.confinement_force(bottom_state) self.assertTrue(force_bottom[3] > 0) top_state = numpy.array([0.0, 95.0, 0, 0]) force_top = system.confinement_force(top_state) self.assertTrue(force_top[3] < 0) middle_state = numpy.array([0.0, 50.0, 0, 0]) force_middle = system.confinement_force(middle_state) self.assertTrue(abs(force_middle[3]) < abs(force_top[3]))
def setUp(self): self.random4vec_1 = numpy.array( [random.random() * 4. - 2. for i in range(4)]) self.random4vec_2 = numpy.array( [random.random() * 4. - 2. for i in range(4)]) self.system = classes.System(width=500, height=200, buffer_width=10, drag_coeff=.01, step_size=0.01, cell_length=2.) self.system.add_particle(classes.Particle())
def main(): system = classes.System(width=500. / 3., height=200. / 3.0, drag_coeff=.01, buffer_width=10.0, frequency=139, time=1.0, step_size=.05) last_state = './w_167_h_77.txt' class_helpers.load_state_from_file(system, last_state) # cell_maker(system) time_step(system) return
def test_make_cell_list(self): system = classes.System(width=500., height=200., cell_length=2.) system.add_particle(classes.Particle()) system.add_particle(classes.Particle()) system.add_particle(classes.Particle()) system.add_particle(classes.Particle()) system.particles[0].state[:2] = [1.4, 1.2] system.particles[1].state[:2] = [4.4, 3.2] system.particles[2].state[:2] = [8.4, 5.2] system.particles[3].state[:2] = [9.4, 5.7] system.populate_cell_list() self.assertEqual([0], system.cell_list[0][0]) self.assertEqual([1], system.cell_list[1][2]) self.assertEqual([2, 3], system.cell_list[2][4])
def relaxer(): system = classes.System(width=500. / 3., height=200. / 3.0, drag_coeff=.1, buffer_width=10.0, frequency=138) class_helpers.system_with_density(system, .25) loops = 2 print(len(system.particles)) t0 = time.time() data_utils.save_state_data(system) for i in xrange(loops): system.time_step() data_utils.save_state_data(system) tf = time.time() delta_t = tf - t0 print('%f to take %d steps' % (delta_t, loops))
def test_get_neighbors(self): system = classes.System(width=6., height=7., cell_length=1.) system.add_particle(classes.Particle()) system.add_particle(classes.Particle()) system.add_particle(classes.Particle()) system.add_particle(classes.Particle()) system.add_particle(classes.Particle()) system.particles[0].state[:2] = [2.5, 2.5] system.particles[1].state[:2] = [1.5, 2.5] system.particles[2].state[:2] = [0.5, 3.5] system.particles[3].state[:2] = [5.5, 3.5] system.particles[4].state[:2] = [3.5, 6.5] system.populate_cell_list() self.assertEqual(2, len(system.particles[0].neighbor_ids)) self.assertEqual(3, len(system.particles[1].neighbor_ids)) self.assertEqual([0, 2, 3], sorted(system.particles[1].neighbor_ids)) self.assertEqual(0, len(system.particles[4].neighbor_ids))
def continue_system(): system = classes.System(width=500. / 3., height=200. / 3.0, drag_coeff=.01, buffer_width=10.0, frequency=1., time=0.0, amplitude=3., angle=0., step_size=.05) last_state = './w_167_h_77.txt' class_helpers.load_state_from_file(system, last_state) loops = 200 print(len(system.particles)) t0 = time.time() data_utils.save_state_data(system) for i in xrange(loops): system.time_step() data_utils.save_state_data(system) print(i, system.time, system.kinetic_energy(), system.potential_energy()) tf = time.time() delta_t = tf - t0 print('%f to take %d steps' % (delta_t, loops))
temperature = ("cold", "termperate", "warm") biosphere = ( "No Native Bioshpere", "Microbial Life", "human-miscibal", "immiscible Biosphere", ) population = ("Tens of Thousands", "Hundreds of Thousands", "Millions", "Billions") #Start Sys Chauvin chauvin = classes.System( "Chauvin", {"confederated Dominion": regions.confederated_dominion}, "0406", atmosphere[2], temperature[2], biosphere[0], population[2], "3") #End sys chauvin #start sys vale vale = classes.System("vale", {"Confederated Dominon": regions.confederated_dominion}, "0607", atmosphere[2], temperature[0], biosphere[1], population[1], "3") #end sys vale #start sys kogami kogami = classes.System( "kogami", {"confederated Dominion": regions.confederated_dominion}, "0608", atmosphere[2], temperature[0], biosphere[0], population[1], "3")
def test_drag_force(self): system = classes.System(drag_coeff=.1) state = numpy.array([0.0, 0.0, 0.0, random.random() * 50 - 25]) force = system.drag_force(state) self.assertEqual(0.0, force[2]) self.assertTrue(0.0 > force[3] * state[3])
def test_string_form(self): system = classes.System() self.assertTrue('Rh' in str(system))