def exercise_pickle(): etm = tst_tardy.get_test_model_by_index(i=5) assert [body.joint.degrees_of_freedom for body in etm.bodies] \ == [6, 1, 1, 1, 1, 1] assert etm.potential_obj is not None etm.assign_random_velocities(e_kin_target=2.34) etm.dynamics_step(delta_t=0.937) def etm_as_ftm_with_q_qd(): result = etm_as_ftm(etm=etm) result.unpack_q(etm.pack_q()) result.unpack_qd(etm.pack_qd()) return result for protocol in xrange(pickle.HIGHEST_PROTOCOL): ftm1 = etm_as_ftm_with_q_qd() s = pickle.dumps(etm_as_ftm_with_q_qd(), protocol) ftm2 = pickle.loads(s) assert approx_equal(ftm2.pack_q(), ftm1.pack_q()) assert approx_equal(ftm2.pack_qd(), ftm1.pack_qd()) for delta_t in [0.538, 0.393]: ftm1.dynamics_step(delta_t=delta_t) ftm2.dynamics_step(delta_t=delta_t) assert approx_equal(ftm2.pack_q(), ftm1.pack_q()) assert approx_equal(ftm2.pack_qd(), ftm1.pack_qd())
def run(args): if (len(args) == 0): model_index = 1 n_dynamics_steps = 100 delta_t = 0.01 else: assert len(args) == 3, "model_index, n_dynamics_steps, delta_t" model_index = int(eval(args[0])) n_dynamics_steps = int(eval(args[1])) delta_t = float(eval(args[2])) tardy_model = tst_tardy.get_test_model_by_index(i=model_index) tardy_model.assign_random_velocities(e_kin_target=1) e_pots = flex.double([tardy_model.e_pot()]) e_kins = flex.double([tardy_model.e_kin()]) def show_e_tot(): print "e_tot: %.6g" % (e_pots[-1]+e_kins[-1]) sys.stdout.flush() for i_step in xrange(n_dynamics_steps): tardy_model.dynamics_step(delta_t=delta_t) e_pots.append(tardy_model.e_pot()) e_kins.append(tardy_model.e_kin()) if (i_step % 1000 == 0): print "i_step:", i_step, show_e_tot() print "i_step:", n_dynamics_steps, show_e_tot() e_tots = e_pots + e_kins f = open("e_pot_kin_tot_i=%02d_n=%d_d=%.5f.xy" % ( model_index, n_dynamics_steps, delta_t), "w") for es in [e_pots, e_kins, e_tots]: for e in es: print >> f, e print >> f, "&" f.close() print "OK"
def exercise_fixed_vertices(): etm = tst_tardy.get_test_model_by_index(i=0, fixed_vertex_lists=[[0]]) assert etm.degrees_of_freedom == 0 compare_essence_and_fast_tardy_models(etm=etm) # for i_case, etm in enumerate( tst_tardy.exercise_fixed_vertices_special_cases()): assert etm.potential_obj is not None compare_essence_and_fast_tardy_models(etm=etm, have_singularity=(i_case < 4)) # for fixed_vertices,expected_dof in \ tst_tardy.test_case_5_fixed_vertices_expected_dof: etm = tst_tardy.get_test_model_by_index( i=5, fixed_vertex_lists=[fixed_vertices]) assert etm.degrees_of_freedom == expected_dof compare_essence_and_fast_tardy_models(etm=etm)
def exercise_fixed_vertices(): etm = tst_tardy.get_test_model_by_index( i=0, fixed_vertex_lists=[[0]]) assert etm.degrees_of_freedom == 0 compare_essence_and_fast_tardy_models(etm=etm) # for i_case,etm in enumerate( tst_tardy.exercise_fixed_vertices_special_cases()): assert etm.potential_obj is not None compare_essence_and_fast_tardy_models( etm=etm, have_singularity=(i_case < 4)) # for fixed_vertices,expected_dof in \ tst_tardy.test_case_5_fixed_vertices_expected_dof: etm = tst_tardy.get_test_model_by_index( i=5, fixed_vertex_lists=[fixed_vertices]) assert etm.degrees_of_freedom == expected_dof compare_essence_and_fast_tardy_models(etm=etm)
def init_view_objects(self): box = wx.BoxSizer(wx.VERTICAL) self.view_objects = viewer(self.frame, size=(600, 600)) tardy_model = tst_tardy.get_test_model_by_index(i=self.model_index, fixed_vertex_lists=self.fixed_vertex_lists) if self.i_seq_labels: tardy_model.labels = [str(i) for i in xrange(len(tardy_model.labels))] self.view_objects.set_points_and_lines( tardy_model=tardy_model, velocity_scaling=self.velocity_scaling, e_kin_per_dof=self.e_kin_per_dof, minimum_covering_sphere_view_scale=self.view_scale, ) box.Add(self.view_objects, wx.EXPAND, wx.EXPAND) self.frame.SetSizer(box) box.SetSizeHints(self.frame)
def init_view_objects(self): box = wx.BoxSizer(wx.VERTICAL) self.view_objects = viewer(self.frame, size=(600, 600)) tardy_model = tst_tardy.get_test_model_by_index( i=self.model_index, fixed_vertex_lists=self.fixed_vertex_lists) if (self.i_seq_labels): tardy_model.labels = [ str(i) for i in range(len(tardy_model.labels)) ] self.view_objects.set_points_and_lines( tardy_model=tardy_model, velocity_scaling=self.velocity_scaling, e_kin_per_dof=self.e_kin_per_dof, minimum_covering_sphere_view_scale=self.view_scale) box.Add(self.view_objects, wx.EXPAND, wx.EXPAND) self.frame.SetSizer(box) box.SetSizeHints(self.frame)
def run(args): if (len(args) == 0): model_index = 1 n_dynamics_steps = 100 delta_t = 0.01 else: assert len(args) == 3, "model_index, n_dynamics_steps, delta_t" model_index = int(eval(args[0])) n_dynamics_steps = int(eval(args[1])) delta_t = float(eval(args[2])) tardy_model = tst_tardy.get_test_model_by_index(i=model_index) tardy_model.assign_random_velocities(e_kin_target=1) e_pots = flex.double([tardy_model.e_pot()]) e_kins = flex.double([tardy_model.e_kin()]) def show_e_tot(): print("e_tot: %.6g" % (e_pots[-1] + e_kins[-1])) sys.stdout.flush() for i_step in range(n_dynamics_steps): tardy_model.dynamics_step(delta_t=delta_t) e_pots.append(tardy_model.e_pot()) e_kins.append(tardy_model.e_kin()) if (i_step % 1000 == 0): print("i_step:", i_step, end=' ') show_e_tot() print("i_step:", n_dynamics_steps, end=' ') show_e_tot() e_tots = e_pots + e_kins f = open( "e_pot_kin_tot_i=%02d_n=%d_d=%.5f.xy" % (model_index, n_dynamics_steps, delta_t), "w") for es in [e_pots, e_kins, e_tots]: for e in es: print(e, file=f) print("&", file=f) f.close() print("OK")
def exercise_pickle(): etm = tst_tardy.get_test_model_by_index(i=5) assert [body.joint.degrees_of_freedom for body in etm.bodies] \ == [6, 1, 1, 1, 1, 1] assert etm.potential_obj is not None etm.assign_random_velocities(e_kin_target=2.34) etm.dynamics_step(delta_t=0.937) def etm_as_ftm_with_q_qd(): result = etm_as_ftm(etm=etm) result.unpack_q(etm.pack_q()) result.unpack_qd(etm.pack_qd()) return result for protocol in xrange(pickle.HIGHEST_PROTOCOL): ftm1 = etm_as_ftm_with_q_qd() s = pickle.dumps(etm_as_ftm_with_q_qd(), protocol) ftm2 = pickle.loads(s) assert approx_equal(ftm2.pack_q(), ftm1.pack_q()) assert approx_equal(ftm2.pack_qd(), ftm1.pack_qd()) for delta_t in [0.538, 0.393]: ftm1.dynamics_step(delta_t=delta_t) ftm2.dynamics_step(delta_t=delta_t) assert approx_equal(ftm2.pack_q(), ftm1.pack_q()) assert approx_equal(ftm2.pack_qd(), ftm1.pack_qd())