#!/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(test_set_file, '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("onedim", 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.06 -case " + case).split()) error_cases.append(error) print "Errorneous cases" print error_cases sys.exit(sum(error_cases))