conditional-analysis-dns/extract_all.py

42 lines
1.1 KiB
Python

import argparse
import datetime
import numpy as np
import dnstool
from pycompact import CompactScheme
# Commandline argument parser
parser = argparse.ArgumentParser()
parser.add_argument("-c", "--case", help="target case name", required=True)
args = parser.parse_args()
params = vars(args)
casename = params["case"]
u_idx = 1
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()