Example #1
0
def test_tag_shallow_copy():
    """
    Tests that PyMOAB will handle the passing of a shallow-copy numpy expression
    appropriately
    """

    mb = core.Core()
    vh = vertex_handle(mb)
    test_tag = mb.tag_get_handle("Test", 5, types.MB_TYPE_DOUBLE, True,
                                 types.MB_TAG_SPARSE)
    test_val = np.array([1., 2., 3., 4., 5.])
    mb.tag_set_data(test_tag, vh, test_val)

    # some other large numpy array
    external_data = np.ones((5, 10))
    external_data[0, :] = np.linspace(1, 10, 10)
    external_data[1, :] = np.linspace(1, 10, 10)
    external_data[2, :] = np.linspace(1, 10, 10)
    external_data[3, :] = np.linspace(1, 10, 10)
    external_data[4, :] = np.linspace(1, 10, 10)

    # slice data (shallow copy, unevaluated)
    data_slice = external_data[:, 0]

    # update data
    mb.tag_set_data(test_tag, vh, data_slice)

    expected_data = np.array([1., 1., 1., 1., 1.])
    actual_data = mb.tag_get_data(test_tag, vh, flat=True)

    CHECK_ITER_EQ(actual_data, expected_data)
Example #2
0
def test_set_coords():
    mb = core.Core()
    coords = np.array((0, 0, 0, 1, 0, 0, 1, 1, 1), dtype='float64')
    verts = mb.create_vertices(coords)
    ret_coords = mb.get_coords(verts)
    coords += 1.0  # Shift x/y/z coordinates by 1.0
    mb.set_coords(verts, coords)
    ret_coords2 = mb.get_coords(verts)
    for i in range(len(coords)):
        CHECK_EQ(ret_coords[i], ret_coords2[i] - 1.0)

    # check that setting with a single eh is ok
    coord = np.array((5, 5, 5), dtype='float64')
    mb.set_coords(verts[0], coord)
    ret_coords3 = mb.get_coords(verts[0])
    CHECK_ITER_EQ(ret_coords3, coord)
Example #3
0
def test_vec_tags():
    mb = core.Core()
    coords = np.array((0, 0, 0, 1, 0, 0, 1, 1, 1), dtype='float64')
    verts = mb.create_vertices(coords)

    int_vec_test_tag = mb.tag_get_handle("IntegerVecTestTag", 3,
                                         types.MB_TYPE_INTEGER,
                                         types.MB_TAG_DENSE, True)
    dbl_vec_test_tag = mb.tag_get_handle("DoubleVecTestTag", 3,
                                         types.MB_TYPE_DOUBLE,
                                         types.MB_TAG_DENSE, True)
    opaque_vec_test_tag = mb.tag_get_handle("OPTag", 10, types.MB_TYPE_OPAQUE,
                                            types.MB_TAG_DENSE, True)
    #should be able to successfully tag using a 2-D array
    int_vec_test_tag_values = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
    dbl_vec_test_tag_values = np.array([[9.0, 10.0, 11.0], [12.0, 13.0, 14.0],
                                        [15.0, 16.0, 17.0]])
    opaque_vec_test_tag_values = np.array([["One"], ["Two"], ["Three"]])
    mb.tag_set_data(int_vec_test_tag, verts, int_vec_test_tag_values)
    mb.tag_set_data(dbl_vec_test_tag, verts, dbl_vec_test_tag_values)
    mb.tag_set_data(opaque_vec_test_tag, verts, opaque_vec_test_tag_values)

    #or a 1-D array
    int_vec_test_tag_values_flat = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
    dbl_vec_test_tag_values_flat = np.array(
        [9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0])
    opaque_vec_test_tag_values_flat = np.array(["One", "Two", "Three"])
    mb.tag_set_data(int_vec_test_tag, verts, int_vec_test_tag_values)
    mb.tag_set_data(dbl_vec_test_tag, verts, dbl_vec_test_tag_values)
    mb.tag_set_data(opaque_vec_test_tag, verts,
                    opaque_vec_test_tag_values_flat)

    #these values should then be able to be retrieved as a 2-D array
    returned_int_test_tag_values = mb.tag_get_data(int_vec_test_tag, verts)
    CHECK_ITER_EQ(returned_int_test_tag_values, int_vec_test_tag_values)
    returned_dbl_test_tag_values = mb.tag_get_data(dbl_vec_test_tag, verts)
    CHECK_ITER_EQ(returned_dbl_test_tag_values, dbl_vec_test_tag_values)
    returned_opaque_test_tag_values = mb.tag_get_data(opaque_vec_test_tag,
                                                      verts)
    CHECK_ITER_EQ(returned_opaque_test_tag_values, opaque_vec_test_tag_values)

    #or as a 1-D array
    returned_int_test_tag_values = mb.tag_get_data(int_vec_test_tag,
                                                   verts,
                                                   flat=True)
    CHECK_ITER_EQ(returned_int_test_tag_values, int_vec_test_tag_values_flat)
    returned_dbl_test_tag_values = mb.tag_get_data(dbl_vec_test_tag,
                                                   verts,
                                                   flat=True)
    CHECK_ITER_EQ(returned_dbl_test_tag_values, dbl_vec_test_tag_values_flat)
    returned_opaque_test_tag_values = mb.tag_get_data(opaque_vec_test_tag,
                                                      verts,
                                                      flat=True)
    CHECK_ITER_EQ(returned_opaque_test_tag_values,
                  opaque_vec_test_tag_values_flat)
Example #4
0
def test_w_coordinates():

    mb = core.Core()
    scd = ScdInterface(mb)

    xs = [-1, 3, 5]
    ys = [-1, 1]
    zs = [-1, 1]

    coords = []
    for k in zs:
        for j in ys:
            for i in xs:
                coords += [i, j, k]

    low = HomCoord([0, 0, 0, 0])
    high = HomCoord([2, 1, 1, 0])

    scdbox = scd.construct_box(low, high, coords)

    verts = mb.get_entities_by_type(0, types.MBVERTEX)
    assert len(verts) == 12

    # check verts
    for k in range(high[2] + 1):
        for j in range(high[1] + 1):
            for i in range(high[0] + 1):
                vert = scdbox.get_vertex([i, j, k])
                CHECK_TYPE(vert, _eh_py_type)
                vert_coords = mb.get_coords(vert)
                assert (all(vert_coords == [xs[i], ys[j], zs[k]]))

    hexes = mb.get_entities_by_type(0, types.MBHEX)

    hex_con_str = "Hex {} connectivity is: {}"
    vert_str = "Vert: {}"

    assert len(hexes) == 2

    # expected vertex connectivity
    hex1_conn = [1, 2, 5, 4, 7, 8, 11, 10]
    hex2_conn = [2, 3, 6, 5, 8, 9, 12, 11]

    hex_connectivity = [hex1_conn, hex2_conn]

    for i, h in enumerate(hexes):
        CHECK_ITER_EQ(mb.get_connectivity(h), hex_connectivity[i])
Example #5
0
def test_get_bridge_adjacencies():
    mb = core.Core()

    coords = np.array((0,0,0,1,0,0,1,1,1),dtype='float64')
    verts = mb.create_vertices(coords)
    CHECK_EQ(len(verts), 3)
    conn = np.array(((verts[0],verts[1],verts[2]),),dtype='uint64')
    tris = mb.create_elements(types.MBTRI, conn)

    mtu = topo_util.MeshTopoUtil(mb)

    rs = mb.get_root_set()
    tris = mb.get_entities_by_dimension(rs, 2)
    CHECK_EQ(len(tris), 1)
    adj_verts = mtu.get_bridge_adjacencies(tris, 0, 0, 1)

    CHECK_ITER_EQ(adj_verts,verts)