Пример #1
0
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())
Пример #6
0
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])
Пример #8
0
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))
Пример #10
0
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))
Пример #11
0
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))