eReactingFoam-4.x/testApp/Alltest2.py
2018-12-21 02:04:41 -05:00

61 lines
1.5 KiB
Python
Executable file

#!/usr/bin/python
#
import os, sys
import shutil
import csv
import subprocess as sp
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("test_set", help="Cantera 1-D flame result csv file used as a test set")
parser.add_argument("cases_dir", help="directory where dummy OpenFOAM cases for test are created")
args = parser.parse_args()
cases_dir = args.cases_dir
test_set_file = args.test_set
os.mkdir(cases_dir)
exit_code=0
error_cases=[]
FNULL = open(os.devnull, 'w')
with open('./c2h6_diffusion.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile) # , delimiter=' ', quotechar='|')
header = spamreader.next()
print header
species = header[5:]
for row in spamreader:
record = { k.split()[0]:v for k, v in zip(header, row)}
case = os.path.join(cases_dir, record['z'])
case_ic = os.path.join(case, "constant/initialConditions")
shutil.copytree("gri2", case)
# sp.check_call(("echo foamDictionary -entry fractions -set '{}' cases2/"+record['z']+"/constant/initialConditions").split())
sp.check_call(("foamDictionary -entry Tl -set ").split() + [record["T"] , case_ic], stdout=FNULL)
for s in species:
sp.check_call(("foamDictionary -entry fractions." + s + " -set ").split() + [record[s] , case_ic], stdout=FNULL)
error = sp.call(("./canteraTest -relTol 0.05 -case " + case).split())
error_cases.append(error)
print error_cases
sys.exit(sum(error_cases))