Example #1
0
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"
Example #3
0
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)
Example #4
0
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)
Example #5
0
 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)
Example #6
0
 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)
Example #7
0
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")
Example #8
0
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())