cantera/interfaces/python/MixMaster/newflow.py
Ray Speth 2528df0f75 Reorganized source tree structure
These changes make it unnecessary to copy header files around during
the build process, which tends to confuse IDEs and debuggers. The
headers which comprise Cantera's external C++ interface are now in
the 'include' directory.

All of the samples and demos are now in the 'samples' subdirectory.
2012-02-12 02:27:14 +00:00

135 lines
4.5 KiB
Python

from Tkinter import *
from tkFileDialog import askopenfilename
import tkMessageBox
from Cantera.gases import IdealGasMix
from Cantera import *
class NewFlowDialog:
def __init__(self, parent):
top = self.top = Toplevel(parent)
pl = Label(top, text='Pressure')
pl.grid(row = 0, column = 0)
geom = Frame(top, bd=2, relief=GROOVE)
geom.grid(row = 1, column = 0)
lb = Listbox(geom)
for item in ["One-Dimensional", "Stagnation"]:
lb.insert(END, item)
lb.grid(row = 0, column = 0)
glb = Listbox(geom)
for item in ["Axisymmetric","2D"]:
glb.insert(END, item)
glb.grid(row = 1, column = 0)
# ------------- pressure input ----------------
self.p = DoubleVar()
self.pbox = Entry(top, textvariable = self.p)
self.pbox.grid(row = 0, column = 1)
# ------------- gas file name input -----------
gasf = Frame(top, bd=2, relief=GROOVE)
gasf.grid(row = 4, column = 0, columnspan=2)
gl = Label(gasf, text='Gas Mixture Specification')
gl.grid(row = 0, column = 0)
self.infile = StringVar()
Label(gasf, text='Mixture Input File').grid(row = 1, column = 0)
Entry(gasf, textvariable = self.infile).grid(row = 1, column = 1)
Button(gasf, text='Browse..', command=self.getinfile).grid(row = 1,
column = 2)
self.spfile = StringVar()
Label(gasf, text='Species Database').grid(row = 2, column = 0)
Entry(gasf, textvariable = self.spfile).grid(row = 2, column = 1)
Button(gasf, text='Browse..', command=self.getspfile).grid(row = 2,
column = 2)
self.trfile = StringVar()
Label(gasf, text='Transport Database').grid(row = 3, column = 0)
Entry(gasf, textvariable = self.trfile).grid(row = 3, column = 1)
Button(gasf, text='Browse..', command=self.gettrfile).grid(row = 3,
column = 2)
# ------------- grid -------------------------
gf = Frame(top, bd=2, relief=GROOVE)
gf.grid(row = 5, column = 0, columnspan=2)
gr = Label(gf, text='Initial Grid')
gr.grid(row = 0, column = 0)
self.zleft = DoubleVar()
self.zright = DoubleVar()
ll = Label(gf, text='Left boundary at ')
rl = Label(gf, text='Right boundary at ')
lbb = Entry(gf, textvariable = self.zleft)
rbb = Entry(gf, textvariable = self.zright)
ll.grid(row = 1, column = 0)
rl.grid(row = 2, column = 0)
lbb.grid(row = 1, column = 1)
rbb.grid(row = 2, column = 1)
ok = Button(top, text = 'OK', command=self.ok)
ok.grid(row = 20, column = 20)
def ok(self):
p = self.p.get()
try:
infile = self.infile.get()
spfile = self.spfile.get()
trfile = self.trfile.get()
if spfile and trfile:
self.gas = IdealGasMix(import_file = infile,
thermo_db = spfile,
transport_db = trfile)
elif spfile:
self.gas = IdealGasMix(import_file = infile,
thermo_db = spfile)
else:
self.gas = IdealGasMix(import_file = infile)
except:
tkMessageBox.showerror('Create Gas',
'Error reading file %s. See log file for more information.' % infile)
#self.flow = Flow1D(flow_type = ftype, flow_geom = fgeom,
# pressure = p, grid = gr, gas = g)
self.top.destroy()
def getinfile(self):
pathname = askopenfilename(filetypes=[
("Input Files", "*.xml *.inp"),
("All Files", "*.*")])
self.infile.set(pathname)
def getspfile(self):
pathname = askopenfilename(filetypes=[
("Species Data Files", "*.xml *.dat"),
("All Files", "*.*")])
self.spfile.set(pathname)
def gettrfile(self):
pathname = askopenfilename(filetypes=[
("Transport Data Files", "*.xml *.dat"),
("All Files", "*.*")])
self.trfile.set(pathname)