Exemple #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)))
Exemple #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 % '^^')")
Exemple #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))
Exemple #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))
Exemple #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 )
                )
Exemple #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
Exemple #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))
Exemple #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