Source code for model_package.Filter.xdmf_tomfoolery

import sys
import os
import inspect
import argparse

import numpy
import meshio

import file_io.xdmf

file_path = os.path.dirname(os.path.abspath(__file__))


[docs] def XDMF_tomfoolery(input_file, output_file): '''Modify an XDMF file by combining elements from separate 'blocks' :param str input_file: The XDMF mesh file to operate on :param str output_file: The output filename for the h5 + XDMF file pair :returns: ``{output_file}.xdmf`` ''' mesh=meshio.read(input_file) filter_points = mesh.points # manipulate blocks and stack into single connectivity array num_blocks = len(mesh.cells) connect = [] for i in range(num_blocks): connect.append(mesh.cells[i].data) connect = numpy.array(connect) tup = numpy.shape(connect) filter_connectivity = connect.reshape((tup[0]*tup[1],tup[2])) # Write the filter to a file xdmf = file_io.xdmf.XDMF(output_filename=output_file) grid = xdmf.addGrid(xdmf.output_timegrid, {}) xdmf.addPoints(grid, filter_points) xdmf.addConnectivity(grid, "HEXAHEDRON", filter_connectivity) print("Writing single filter domain file!") xdmf.write() print("filter domain file written!") return 0
def get_parser(): filename = inspect.getfile(lambda: None) basename = os.path.basename(filename) basename_without_extension, extension = os.path.splitext(basename) cli_description = "Modify an XDMF file by combining elements from separate 'blocks'" parser = argparse.ArgumentParser(description=cli_description, prog=os.path.basename(filename)) parser.add_argument('-o', '--output-file', type=str, required=True, help='Specify the output filename for the h5 + XDMF file pair') parser.add_argument('--input-file', type=str, required=True, help='Specify the XDMF mesh file to operate on') return parser if __name__ == '__main__': parser = get_parser() args = parser.parse_args() sys.exit(XDMF_tomfoolery(input_file=args.input_file, output_file=args.output_file, ))