Example #1
0
def exercise_euler_params_qE_as_euler_angles_xyz_qE(mersenne_twister):
  for i_trial in range(30):
    qE = matrix.col(mersenne_twister.random_double(size=4)).normalize()
    qr = matrix.col(mersenne_twister.random_double(size=3)-0.5)
    J = joint_lib.six_dof(type="euler_params", qE=qE, qr=qr)
    Jea = joint_lib.six_dof(type="euler_angles_xyz", qE=qE, qr=qr)
    assert approx_equal(Jea.E, J.E)
    assert approx_equal(Jea.r, J.r)
    Jep = joint_lib.six_dof(type="euler_params", qE=Jea.qE, qr=qr)
    assert approx_equal(Jep.E, J.E)
    assert approx_equal(Jep.r, J.r)
def exercise_euler_params_qE_as_euler_angles_xyz_qE(mersenne_twister):
  for i_trial in xrange(30):
    qE = matrix.col(mersenne_twister.random_double(size=4)).normalize()
    qr = matrix.col(mersenne_twister.random_double(size=3)-0.5)
    J = joint_lib.six_dof(type="euler_params", qE=qE, qr=qr)
    Jea = joint_lib.six_dof(type="euler_angles_xyz", qE=qE, qr=qr)
    assert approx_equal(Jea.E, J.E)
    assert approx_equal(Jea.r, J.r)
    Jep = joint_lib.six_dof(type="euler_params", qE=Jea.qE, qr=qr)
    assert approx_equal(Jep.E, J.E)
    assert approx_equal(Jep.r, J.r)
Example #3
0
 def d_pot_d_q_via_finite_differences(O, eps=1.e-6):
     result = []
     for q in [O.J.qE, O.J.qr]:
         for i in xrange(len(q)):
             fs = []
             for signed_eps in [eps, -eps]:
                 q_eps = list(q)
                 q_eps[i] += signed_eps
                 q_eps = matrix.col(q_eps)
                 if (q is O.J.qE):
                     qE = q_eps
                     qr = O.J.qr
                 else:
                     qE = O.J.qE
                     qr = q_eps
                 J = joint_lib.six_dof(type=O.J.type,
                                       qE=qE,
                                       qr=qr,
                                       r_is_qr=O.J.r_is_qr)
                 e_pot = test_utils.potential_energy(sites=O.sites_F0,
                                                     wells=O.wells,
                                                     A=O.A,
                                                     J=J)
                 fs.append(e_pot)
             result.append((fs[0] - fs[1]) / (2 * eps))
     return matrix.col(result)
Example #4
0
 def __init__(O, labels, sites, bonds, mersenne_twister):
   O.labels = labels
   O.sites = sites
   O.bonds = bonds
   O.A = joint_lib.six_dof_alignment(sites=O.sites)
   O.I = spatial_inertia_from_sites(sites=O.sites, alignment_T=O.A.T0b)
   #
   O.wells = shift_gently(sites=O.sites, mersenne_twister=mersenne_twister)
   #
   qE = matrix.col((0,0,0))
   qr = matrix.col((0,0,0))
   O.J = joint_lib.six_dof(type="euler_params", qE=qE, qr=qr, r_is_qr=True)
   O.qd = O.J.qd_zero
Example #5
0
 def __init__(O, mersenne_twister, n_sites):
   if (n_sites > 0):
     O.sites = [matrix.col(mersenne_twister.random_double_point_on_sphere())]
   while (len(O.sites) != n_sites):
     O.sites.append(O.sites[0]
       + matrix.col(mersenne_twister.random_double_point_on_sphere()))
   O.A = joint_lib.six_dof_alignment(sites=O.sites)
   O.I = spatial_inertia_from_sites(sites=O.sites, alignment_T=O.A.T0b)
   #
   O.wells = create_wells(sites=O.sites, mersenne_twister=mersenne_twister)
   #
   qE = matrix.col(mersenne_twister.random_double(size=4)).normalize()
   qr = matrix.col(mersenne_twister.random_double(size=3)-0.5)
   O.J = joint_lib.six_dof(type="euler_params", qE=qE, qr=qr, r_is_qr=True)
   O.qd = matrix.col(mersenne_twister.random_double(size=6)*2-1)
Example #6
0
 def __init__(O, mersenne_twister, n_sites):
   if (n_sites > 0):
     O.sites = [matrix.col(mersenne_twister.random_double_point_on_sphere())]
   while (len(O.sites) != n_sites):
     O.sites.append(O.sites[0]
       + matrix.col(mersenne_twister.random_double_point_on_sphere()))
   O.A = joint_lib.six_dof_alignment(sites=O.sites)
   O.I = spatial_inertia_from_sites(sites=O.sites, alignment_T=O.A.T0b)
   #
   O.wells = create_wells(sites=O.sites, mersenne_twister=mersenne_twister)
   #
   qE = matrix.col(mersenne_twister.random_double(size=4)).normalize()
   qr = matrix.col(mersenne_twister.random_double(size=3)-0.5)
   O.J = joint_lib.six_dof(type="euler_params", qE=qE, qr=qr, r_is_qr=True)
   O.qd = matrix.col(mersenne_twister.random_double(size=6)*2-1)
 def __init__(O, labels, sites, bonds, mersenne_twister):
     O.labels = labels
     O.sites = sites
     O.bonds = bonds
     O.A = joint_lib.six_dof_alignment(sites=O.sites)
     O.I = spatial_inertia_from_sites(sites=O.sites, alignment_T=O.A.T0b)
     #
     O.wells = shift_gently(sites=O.sites,
                            mersenne_twister=mersenne_twister)
     #
     qE = matrix.col((0, 0, 0))
     qr = matrix.col((0, 0, 0))
     O.J = joint_lib.six_dof(type="euler_params",
                             qE=qE,
                             qr=qr,
                             r_is_qr=True)
     O.qd = O.J.qd_zero
Example #8
0
 def __init__(O, six_dof_type, r_is_qr, mersenne_twister):
   O.sites_F0 = create_triangle_with_random_center_of_mass(
     mersenne_twister=mersenne_twister)
   O.A = joint_lib.six_dof_alignment(sites=O.sites_F0)
   O.I_spatial = spatial_inertia_from_sites(
     sites=O.sites_F0, alignment_T=O.A.T0b)
   #
   O.wells = test_utils.create_wells(
     sites=O.sites_F0, mersenne_twister=mersenne_twister)
   #
   qE = matrix.col(mersenne_twister.random_double(size=4)).normalize()
   qr = matrix.col(mersenne_twister.random_double(size=3)-0.5)
   if (r_is_qr):
     qr = joint_lib.RBDA_Eq_4_12(qE).transpose() * qr
   O.J = joint_lib.six_dof(type=six_dof_type, qE=qE, qr=qr, r_is_qr=r_is_qr)
   O.qd = matrix.col(mersenne_twister.random_double(size=6)*2-1)
   #
   O.energies_and_accelerations_update()
 def __init__(O, six_dof_type, r_is_qr, mersenne_twister):
   O.sites_F0 = create_triangle_with_random_center_of_mass(
     mersenne_twister=mersenne_twister)
   O.A = joint_lib.six_dof_alignment(sites=O.sites_F0)
   O.I_spatial = spatial_inertia_from_sites(
     sites=O.sites_F0, alignment_T=O.A.T0b)
   #
   O.wells = test_utils.create_wells(
     sites=O.sites_F0, mersenne_twister=mersenne_twister)
   #
   qE = matrix.col(mersenne_twister.random_double(size=4)).normalize()
   qr = matrix.col(mersenne_twister.random_double(size=3)-0.5)
   if (r_is_qr):
     qr = joint_lib.RBDA_Eq_4_12(qE).transpose() * qr
   O.J = joint_lib.six_dof(type=six_dof_type, qE=qE, qr=qr, r_is_qr=r_is_qr)
   O.qd = matrix.col(mersenne_twister.random_double(size=6)*2-1)
   #
   O.energies_and_accelerations_update()
 def d_pot_d_q_via_finite_differences(O, eps=1.e-6):
   result = []
   for q in [O.J.qE, O.J.qr]:
     for i in xrange(len(q)):
       fs = []
       for signed_eps in [eps, -eps]:
         q_eps = list(q)
         q_eps[i] += signed_eps
         q_eps = matrix.col(q_eps)
         if (q is O.J.qE): qE = q_eps; qr=O.J.qr
         else:             qE = O.J.qE; qr=q_eps
         J = joint_lib.six_dof(
           type=O.J.type, qE=qE, qr=qr, r_is_qr=O.J.r_is_qr)
         e_pot = test_utils.potential_energy(
           sites=O.sites_F0, wells=O.wells, A=O.A, J=J)
         fs.append(e_pot)
       result.append((fs[0]-fs[1])/(2*eps))
   return matrix.col(result)