def exercise_volume():
  for (a,b,c) in ((1,2,3), (2,3,1), (3,1,2)):
    for vertices in permutations(((1,1,1), (1+a,1,1), (1,1+b,1), (1,1,1+c))):
      t = tetrahedron(vertices)
      assert t.vertices == vertices
      vol = a*b*c/6
      assert approx_equal(t.volume(), vol)
  # regular tetrahedron
  for vertices in permutations(((1,1,1), (1,-1,-1), (-1,1,-1), (-1,-1,1))):
    t = tetrahedron(vertices)
    assert approx_equal(t.volume(), 8/3)
Example #2
0
def exercise_volume():
    for (a, b, c) in ((1, 2, 3), (2, 3, 1), (3, 1, 2)):
        for vertices in permutations(
            ((1, 1, 1), (1 + a, 1, 1), (1, 1 + b, 1), (1, 1, 1 + c))):
            t = tetrahedron(vertices)
            assert t.vertices == vertices
            vol = a * b * c / 6
            assert approx_equal(t.volume(), vol)
    # regular tetrahedron
    for vertices in permutations(
        ((1, 1, 1), (1, -1, -1), (-1, 1, -1), (-1, -1, 1))):
        t = tetrahedron(vertices)
        assert approx_equal(t.volume(), 8 / 3)
def exercise_gradients(n_points):
  eta = 1e-6
  for i in xrange(n_points):
    v = tuple((random(), random(), random()) for j in xrange(4))
    t = tetrahedron(v)
    g = t.gradients()
    for j in xrange(4):
      for k in xrange(3):
        (tm, tp) = tuple(tetrahedron(
          v[:j] + (v[j][:k] + (v[j][k] + h,) + v[j][k+1:],) + v[j+1:])
          for h in (-eta, eta))
        dv = (tp.volume() - tm.volume())/(2*eta)
        assert approx_equal(dv, g[j][k]), (j,k)
Example #4
0
def exercise_gradients(n_points):
    eta = 1e-6
    for i in range(n_points):
        v = tuple((random(), random(), random()) for j in range(4))
        t = tetrahedron(v)
        g = t.gradients()
        for j in range(4):
            for k in range(3):
                (tm, tp) = tuple(
                    tetrahedron(v[:j] + (v[j][:k] +
                                         (v[j][k] + h, ) + v[j][k + 1:], ) +
                                v[j + 1:]) for h in (-eta, eta))
                dv = (tp.volume() - tm.volume()) / (2 * eta)
                assert approx_equal(dv, g[j][k]), (j, k)