コード例 #1
0
def test_extract_arfi_data():
    """test extraction of arfi data at specific timesteps
    """
    from fem.post.create_res_sim import extract_arfi_data
    from fem.post.create_res_sim import read_header
    from fem.post.create_res_sim import extract_image_plane
    from fem.mesh.fem_mesh import load_nodeIDs_coords
    from fem.mesh.fem_mesh import SortNodeIDs
    from scipy.io import loadmat
    import numpy as np

    gauss_qsym_pml_example_path = examplesPath / "gauss_qsym_pml"
    dispout = gauss_qsym_pml_example_path / "disp.dat.xz"
    nodedyn = gauss_qsym_pml_example_path / "nodes.dyn"
    valid_data = loadmat(gauss_qsym_pml_example_path / "res_sim_valid.mat")['arfidata']
    
    header = read_header(dispout)
    node_id_coords = load_nodeIDs_coords(nodedyn)
    [snic, axes] = SortNodeIDs(node_id_coords)
    image_plane = extract_image_plane(snic, axes)

    test_data0 = extract_arfi_data(dispout, header, image_plane)
    test_data1 = extract_arfi_data(dispout, header, image_plane, specific_times=[1, 3])
    test_data2 = extract_arfi_data(dispout, header, image_plane, specific_times=[3, 2, 1])
    
    assert np.array_equal(test_data0, valid_data)
    assert np.array_equal(test_data1, valid_data[:, :, [0, 2]])
    assert np.array_equal(test_data2, np.flip(valid_data, axis=-1))
コード例 #2
0
def axes(nodeIDcoords):
    """create axes numpy array from nodes.dyn & elems.dyn

    :returns: axes
    """
    from fem.mesh.fem_mesh import SortNodeIDs
    [sorted_nodes, axes] = SortNodeIDs(nodeIDcoords, sort=False)

    return axes
コード例 #3
0
ファイル: test_bc.py プロジェクト: mtubpeng1/fem
def test_exclude_zminmax_edge_sym_constraints(nodeIDcoords):
    from fem.mesh.fem_mesh import SortNodeIDs
    from fem.mesh.bc import assign_edge_sym_constraints
    [snic, axes] = SortNodeIDs(nodeIDcoords, sort=False)
    bcdict = {}
    edge_constraints = (((0, 1), (1, 0), (0, 0)), '1,1,0,1,1,1')
    bcdict = assign_edge_sym_constraints(bcdict, snic, axes, edge_constraints)

    for nodeID in (1221, 11):
        assert nodeID not in bcdict.keys()
コード例 #4
0
ファイル: test_bc.py プロジェクト: mtubpeng1/fem
def test_assign_edge_sym_constraints(nodeIDcoords):
    from fem.mesh.fem_mesh import SortNodeIDs
    from fem.mesh.bc import assign_edge_sym_constraints
    [snic, axes] = SortNodeIDs(nodeIDcoords, sort=False)
    bcdict = {}
    edge_constraints = (((0, 1), (1, 0), (0, 0)), '1,1,0,1,1,1')
    bcdict = assign_edge_sym_constraints(bcdict, snic, axes, edge_constraints)

    for nodeID in (737, 616, 495, 374):
        assert bcdict[nodeID] == "1,1,0,1,1,1"
コード例 #5
0
ファイル: test_bc.py プロジェクト: mtubpeng1/fem
def test_assign_node_constraints(nodeIDcoords):
    from fem.mesh.fem_mesh import SortNodeIDs
    from fem.mesh.bc import assign_node_constraints
    [snic, axes] = SortNodeIDs(nodeIDcoords, sort=False)
    face_constraints = (('1,1,1,1,1,1', '2,2,2,2,2,2'),
                        ('3,3,3,3,3,3', '4,4,4,4,4,4'), ('5,5,5,5,5,5',
                                                         '6,6,6,6,6,6'))
    bcdict = assign_node_constraints(snic, axes, face_constraints)

    assert bcdict[1] == '5,5,5,5,5,5'
コード例 #6
0
def sorted_elems(nodeIDcoords):
    """create sorted elements numpy array from nodes.dyn & elems.dyn

    :returns: sorted_elems
    """
    from fem.mesh.fem_mesh import load_elems
    from fem.mesh.fem_mesh import SortElems
    from fem.mesh.fem_mesh import SortNodeIDs
    elems = load_elems(testPath / "elems.dyn")
    [snic, axes] = SortNodeIDs(nodeIDcoords, sort=False)
    sorted_elems = SortElems(elems, axes)

    return sorted_elems
コード例 #7
0
ファイル: test_bc.py プロジェクト: mtubpeng1/fem
def test_constrain_sym_pml_nodes(nodeIDcoords):
    """THIS FUNCTION IS NOT NEEDED!!
    """
    from fem.mesh.fem_mesh import SortNodeIDs
    from fem.mesh.bc import constrain_sym_pml_nodes
    [snic, axes] = SortNodeIDs(nodeIDcoords, sort=False)
    bcdict = {}
    edge_constraints = (((0, 1), (1, 0), (0, 0)), '1,1,0,1,1,1')
    pml_elems = ((3, 0), (0, 1), (2, 3))
    bcdict = constrain_sym_pml_nodes(bcdict, snic, axes, pml_elems,
                                     edge_constraints)
    # check x sym face
    for start_node in (11, 132, 253, 858, 979, 1100, 1221):
        for nodeID in range(start_node, start_node + 111, 11):
            assert bcdict[nodeID] == '1,1,1,1,1,1'
    for not_in_bc in (374, 495, 616, 737):
        assert not_in_bc not in bcdict.keys()
    # check y sym face
    for start_node in (1, 122, 243, 848, 969, 1090, 1211):
        for nodeID in range(start_node, start_node + 11):
            assert bcdict[nodeID] == '1,1,1,1,1,1'