Пример #1
0
def ParseInp(fname, bIsolate):
    ######## Parse input file
    with open(args.inp_filename) as fid:
        lines = fid.readlines()

    for i, line in enumerate(lines):
        if line.startswith("*Node"):
            inodes = i + 1
        if line.startswith("*Element"):
            iel = i + 1
            break
    nlines = len(lines)

    nvertex = iel - inodes - 1
    vertex = np.zeros((nvertex, 3), dtype=object)
    vid = np.zeros((nvertex), dtype=int)

    # Fill in vertex array
    vid_lookup = {}
    for i0, i in enumerate(range(inodes, iel - 1)):
        vals = lines[i].split(",")
        vid_lookup[int(vals[0])] = i0
        vertex[i0, :] = [float(val) for val in vals[1:4]]

    # Fill in the triangles array
    faces = []
    triangles = []

    for i in range(iel, nlines):
        line = lines[i]
        if line.startswith("*Element"):
            if bIsolate:
                myFace = Face(vertex=None, connect=np.asarray(triangles))
                faces.append(myFace)
                triangles = []
            continue
        val = [int(v) for v in lines[i].split(",")[1:4]]
        triangles.append(val)

    myFace = Face(vertex=None, connect=np.asarray(triangles))
    faces.append(myFace)

    for myFace in faces:
        myFace.reindex(vid_lookup)
        # reorder vertex from 0 to n where n is the number of vertice in the face
        unique_vid = list(set(list(myFace.connect.flatten())))
        vid_lu = {unique_vid[k]: k for k in range(len(unique_vid))}
        myFace.reindex(vid_lu)
        vertex0 = vertex[unique_vid, :]
        myFace.vertex = vertex0
    return faces
    structured_grid.smooth(args.smooth[0])

structured_grid.generate_vertex()

structured_grid.generate_connect()
structured_grid.isolate_hole(args.hole)
if args.proj:
    structured_grid.proj_vertex(args.proj[0])

if args.translate:
    structured_grid.translate(args.translate)

basename, ext = os.path.splitext(args.output_file)
nsolid = max(structured_grid.solid_id) + 1

if nsolid == 1:
    myFace = Face(structured_grid.vertex, structured_grid.connect)
    if structured_grid.is_sparse:
        myFace.reindex(structured_grid.vid_lookup)
    myFace.write(f"{basename}{ext}")
else:
    for sid in range(nsolid):
        idtr = np.where(structured_grid.solid_id == sid)[0]
        aVid = np.unique(structured_grid.connect[idtr, :].flatten())
        myFace = Face(vertex=None, connect=structured_grid.connect[idtr, :])
        if structured_grid.is_sparse:
            myFace.reindex(structured_grid.vid_lookup)
        myFace.write(f"{basename}{sid}{ext}",
                     structured_grid.vertex,
                     write_full_vertex_array=False)