import argparse import datetime import numpy as np import dnstool from pycompact import CompactScheme program_description = '''\ Read all DNS data files and extract u, c and ddx(c) to single array. New array dimension is (nx, time, ny, nz) ''' # Commandline argument parser parser = argparse.ArgumentParser(description=program_description) parser.add_argument("-c", "--case", help="target case name", required=True) args = parser.parse_args() params = vars(args) casename = params["case"] u_idx = 0 y_idx = 4 cases = dnstool.case_library() case = cases[casename] nx, ny, nz = case.shape cs = CompactScheme(nx, ny, nz, False, True, True, 4, 2, 2) file1 = "u.dat" file2 = "c.dat" file3 = "ddxc.dat" storage1 = np.memmap(file1, mode='w+', dtype=np.double, shape=(nx, len(case.data_files), ny, nz)) storage2 = np.memmap(file2, mode='w+', dtype=np.double, shape=(nx, len(case.data_files), ny, nz)) storage3 = np.memmap(file3, mode='w+', dtype=np.double, shape=(nx, len(case.data_files), ny, nz)) for i, fname in enumerate(case.data_files): print(datetime.datetime.now(), i, fname) time, u = case.read_single_field(fname, u_idx) time, y = case.read_single_field(fname, y_idx) c = (1. - y) storage1[:,i,:,:] = u.T storage2[:,i,:,:] = c.T storage3[:,i,:,:] = cs.ddx(c).T storage.flush()