135 lines
4.5 KiB
Python
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)
|
|
|
|
|
|
|
|
|
|
|