Exemplo n.º 1
0
def test_division():
    """
    Tests true division.

    E.g. 3/2 is 1.5, not 1 in the mesh file. This test tests it.
    """
    mesh = """\
vertices =
{
  { 0, -1 },
  { %s, 0.707106781 }
}

elements =
{
  { 0, 1, 4, 3, 0 }
}

boundaries =
{
  { 0, 1, 1 }
}
    """
    nodes, elements, boundaries, _ = read_hermes_format_str(mesh % "3")
    assert compare(nodes, ((0, -1), (3, 0.70710678100000002)))

    nodes, elements, boundaries, _ = read_hermes_format_str(mesh % "3/2")
    assert compare(nodes, ((0, -1), (1.5, 0.70710678100000002)))
Exemplo n.º 2
0
def test_errors():
    mesh = """\
a = %s
vertices =
{
  { 0, -1 }, # first vertex
  { 0.707106781, 0.707106781 }
}

elements =
{
  { 0, 1, 4, 3, 0 }
}

boundaries =
{
  { 0, 1, 1 }
}
    """
    # this works:
    read_hermes_format_str(mesh % "34")
    # this fails:
    assert raises(ParseError, "read_hermes_format_str(mesh % 'x x x')")
    assert raises(ParseError, "read_hermes_format_str(mesh % '3 3 3')")
    assert raises(ParseError, "read_hermes_format_str(mesh % '+')")
    assert raises(ParseError, "read_hermes_format_str(mesh % '^^')")
Exemplo n.º 3
0
def test_loader7():
    nodes, elements, boundary, nurbs = read_hermes_format_str(mesh7)
    assert compare(nodes, ((0.6, 0), (0.7, 0),
        (0.59396969619669993, 0.084852813742385721), (0.7, 0.1),
        (0.51428571428571435, 0.30904725218262763), (0.6, 0.36055512754639885),
        (0.7, 0.36055512754639885), (0, 0.6), (0, 0.7),
        (0.084852813742385721, 0.59396969619669993), (0.1, 0.7),
        (0.30904725218262763, 0.51428571428571435), (0.36055512754639885, 0.6),
        (0.36055512754639885, 0.7), (0.6, 0.6), (0.7, 0.6), (0.7, 0.7),
        (0.6, 0.7), (0.7, -0.1), (0.62928932188134523, -0.070710678118654766),
        (-0.1, 0.7), (-0.070710678118654766, 0.62928932188134523)))
    assert elements == ((0, 1, 3, 2, 0), (2, 3, 5, 4, 0), (6, 5, 3, 0),
            (8, 7, 9, 10, 0), (10, 9, 11, 12, 0), (13, 10, 12, 0),
            (4, 5, 12, 11, 0), (5, 6, 15, 14, 0), (13, 12, 14, 17, 0),
            (14, 15, 16, 17, 0), (0, 19, 1, 0), (19, 18, 1, 0), (21, 7, 8, 0),
            (20, 21, 8, 0))
    assert boundary == ((18, 1, 1), (1, 3, 1), (3, 6, 1), (6, 15, 1),
            (15, 16, 1), (16, 17, 2), (17, 13, 2), (13, 10, 2), (10, 8, 2),
            (8, 20, 2), (20, 21, 3), (21, 7, 3), (7, 9, 3), (9, 11, 3),
            (11, 4, 3), (4, 2, 3), (2, 0, 3), (0, 19, 3), (19, 18, 3),
            (5, 14, 3), (14, 12, 3), (12, 5, 3))
    assert nurbs == ((0, 2, 8.13010235415598), (2, 4, 22.872616779718008),
            (4, 11, 27.994561732252027), (11, 9, 22.872616779718008),
            (9, 7, 8.13010235415598), (5, 12, 27.994561732252027),
            (0, 19, 45.0), (19, 18, 45.0), (20, 21, 45.0), (21, 7, 45.0))
Exemplo n.º 4
0
def test_loader3():
    nodes, elements, boundary, nurbs = read_hermes_format_str(mesh3)
    assert compare(nodes, [[0.0, -1.0], [1.0, -1.0], [-1.0, 0.0], [0.0, 0.0],
        [1.0, 0.0], [-1.0, 1.0], [0.0, 1.0], [0.70710678100000002,
            0.70710678100000002]])
    assert elements == ( ( 0, 1, 4, 3, 0 ), ( 3, 4, 7, 0 ),
        ( 3, 7, 6, 0 ),
        ( 2, 3, 6, 5, 0 ))
    assert boundary == (
          ( 0, 1, 1 ),
          ( 1, 4, 2 ),
          ( 3, 0, 4 ),
          ( 4, 7, 2 ),
          ( 7, 6, 2 ),
          ( 2, 3, 4 ),
          ( 6, 5, 2 ),
          ( 5, 2, 3 )
          )
    assert nurbs == (
                  ( 4, 7, 45 ),
                  ( 7, 6, 45 )
                )
    assert boundary[1][0] == 1
    assert boundary[1][1] == 4
    assert boundary[1][2] == 2
    # this tests that ints are converted to ints, but not float
    assert isinstance(boundary[1][0], (int, long))
    assert isinstance(boundary[1][1], (int, long))
    assert isinstance(boundary[1][2], (int, long))
Exemplo n.º 5
0
def test_loader2():
    nodes, elements, boundary, nurbs = read_hermes_format_str(mesh2)
    assert compare(nodes, [
          [ 0.1, 0 ],
          [ 0.07071067809999999, 0.07071067809999999 ],
          [ 0, 0.1 ],
          [ 0.1707106781, 0 ],
          [ 0.1707106781, 0.07071067809999999 ],
          [ 0.1707106781, 0.1707106781 ],
          [ 0.07071067809999999, 0.1707106781 ],
          [ 0, 0.1707106781 ],
          [ 1, 0 ],
          [ 1, 0.07071067809999999 ],
          [ 1, 0.1707106781 ],
          [ 1, 1 ],
          [ 0.1707106781, 1 ],
          [ 0.07071067809999999, 1 ],
          [ 0, 1 ],
          [ -0.9, 1 ],
          [ -0.9, 0.1707106781 ],
          [ -0.9, 0.1 ]
            ] )
    assert elements == (
          ( 4, 1, 0, 0 ),
          ( 6, 2, 1, 0 ),
          ( 3, 4, 0, 0 ),
          ( 6, 7, 2, 0 ),
          ( 1, 4, 5, 6, 0 ),
          ( 3, 8, 9, 4, 0 ),
          ( 4, 9, 10, 5, 0 ),
          ( 5, 10, 11, 12, 0 ),
          ( 6, 5, 12, 13, 0 ),
          ( 7, 6, 13, 14, 0 ),
          ( 16, 7, 14, 15, 0 ),
          ( 17, 2, 7, 16, 0 )
            )
    assert boundary == (
          ( 1, 0, 5 ),
          ( 2, 1, 5 ),
          ( 0, 3, 1 ),
          ( 3, 8, 1 ),
          ( 8, 9, 2 ),
          ( 9, 10, 2 ),
          ( 10, 11, 2 ),
          ( 11, 12, 3 ),
          ( 12, 13, 3 ),
          ( 13, 14, 3 ),
          ( 14, 15, 3 ),
          ( 15, 16, 4 ),
          ( 17, 2, 5 ),
          ( 16, 17, 4 )
          )
    assert nurbs == (
                  ( 1, 0, -45 ),
                  ( 2, 1, -45 )
                )
Exemplo n.º 6
0
def test_loader6():
    nodes, elements, boundary, nurbs = read_hermes_format_str(mesh6)
    assert compare(nodes, ((0.0, 0), (0.25, 0), (0.5, 0), (0.75, 0), (1.0, 0),
        (1.25, 0), (1.5, 0), (0.0, 0.1), (0.25, 0.1), (0.5, 0.1), (0.75, 0.1),
        (1.0, 0.1), (1.0, 0.1), (1.25, 0.1), (1.5, 0.1), (0.0, 0.2),
        (0.25, 0.2), (0.5, 0.2), (0.5, 0.2), (0.75, 0.2), (1.0, 0.2),
        (1.25, 0.2), (1.5, 0.2), (0.0, 0.3), (0.25, 0.3), (0.5, 0.3),
        (0.75, 0.3), (1.0, 0.3), (1.25, 0.3), (1.5, 0.3)))
    assert elements == ((0, 1, 8, 7, 0), (1, 2, 9, 8, 0), (2, 3, 10, 9, 0),
            (3, 4, 11, 10, 0), (4, 5, 13, 11, 0), (5, 6, 14, 13, 0),
            (7, 8, 16, 15, 0), (8, 9, 17, 16, 0), (9, 10, 19, 17, 0),
            (10, 12, 20, 19, 0), (12, 13, 21, 20, 0), (13, 14, 22, 21, 0),
            (15, 16, 24, 23, 0), (16, 18, 25, 24, 0), (18, 19, 26, 25, 0),
            (19, 20, 27, 26, 0), (20, 21, 28, 27, 0), (21, 22, 29, 28, 0))
    assert boundary == ((0, 1, 3), (1, 2, 3), (2, 3, 3), (3, 4, 3), (4, 5, 3),
            (5, 6, 3), (6, 14, 3), (14, 22, 3), (22, 29, 3), (29, 28, 2),
            (28, 27, 2), (27, 26, 2), (26, 25, 2), (25, 24, 2), (24, 23, 2),
            (23, 15, 1), (15, 7, 1), (7, 0, 1), (16, 17, 3), (17, 19, 3),
            (19, 18, 3), (18, 16, 3), (10, 11, 3), (11, 13, 3), (13, 12, 3),
            (12, 10, 3))
    assert nurbs is None
Exemplo n.º 7
0
def test_loader5():
    nodes, elements, boundary, nurbs = read_hermes_format_str(mesh5)
    assert compare(nodes, ((0, 0), (2.146446609406726, 0),
        (2.853553390593274, 0), (5.0, 0), (10.0, 0), (15, 0),
        (0, 2.146446609406726), (2.146446609406726, 2.146446609406726),
        (2.853553390593274, 2.146446609406726), (5.0, 2.146446609406726),
        (10.0, 2.146446609406726), (15, 2.146446609406726),
        (0, 2.853553390593274), (2.146446609406726, 2.853553390593274),
        (2.853553390593274, 2.853553390593274), (5.0, 3.0535533905932741),
        (10.0, 2.853553390593274), (15, 2.853553390593274), (0, 5),
        (2.146446609406726, 5), (2.853553390593274, 5), (5.0, 5), (10.0, 5),
        (15, 5)))
    assert elements == ((0, 1, 7, 6, 0), (1, 2, 8, 7, 0), (2, 3, 9, 8, 0),
            (3, 4, 10, 9, 0), (4, 5, 11, 10, 0), (6, 7, 13, 12, 0),
            (8, 9, 15, 14, 0), (9, 10, 16, 15, 0), (10, 11, 17, 16, 0),
            (12, 13, 19, 18, 0), (13, 14, 20, 19, 0), (14, 15, 21, 20, 0),
            (15, 16, 22, 21, 0), (16, 17, 23, 22, 0))
    assert boundary == ((0, 1, 1), (1, 2, 1), (2, 3, 1), (3, 4, 1), (4, 5, 1),
            (5, 11, 2), (11, 17, 2), (17, 23, 2), (23, 22, 3), (22, 21, 3),
            (21, 20, 3), (20, 19, 3), (19, 18, 3), (18, 12, 4), (12, 6, 4),
            (6, 0, 4), (7, 13, 5), (13, 14, 5), (14, 8, 5), (8, 7, 5))
    assert nurbs == ((7, 8, 90), (8, 14, 90), (14, 13, 90), (13, 7, 90))
Exemplo n.º 8
0
def test_loader4():
    nodes, elements, boundary, nurbs = read_hermes_format_str(mesh4)
    assert compare(nodes, ((0, 0), (1.0, 0), (1.0, 1.0), (0, 1.0)))
    assert elements == ((0, 1, 2, 3, 0),)
    assert boundary == ((0, 1, 1), (1, 2, 1), (2, 3, 1), (3, 0, 1))
    assert nurbs is None