# -*- coding: iso-8859-1 -*- # #------------------------------------------------------------------------------- # Code_Saturne version 1.3 # ------------------------ # # # This file is part of the Code_Saturne User Interface, element of the # Code_Saturne CFD tool. # # Copyright (C) 1998-2007 EDF S.A., France # # contact: saturne-support@edf.fr # # The Code_Saturne User Interface is free software; you can redistribute it # and/or modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # The Code_Saturne User Interface is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied warranty # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with the Code_Saturne Kernel; if not, write to the # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301 USA # #------------------------------------------------------------------------------- """ This module defines the Thermal Radiation model This module contains the following classes and function: - ThermalRadiationModel - ThermalRadiationView - PageText - ThermalRadiationTestCase """ #------------------------------------------------------------------------------- # Library modules import #------------------------------------------------------------------------------- import Tix, unittest from Tkconstants import * #------------------------------------------------------------------------------- # Application modules import #------------------------------------------------------------------------------- from Base.Common import * import Base.Toolbox as Tool import Base.Dialog as Dialog import Base.TkPage as TkPage from Base.XMLvariables import Variables #------------------------------------------------------------------------------- # ThermalRadiation model class #------------------------------------------------------------------------------- class ThermalRadiationModel: def __init__(self, case): """ Constuctor """ self.case = case self.node_models = self.case.xmlGetNode('thermophysical_models') self.node_ray = self.node_models.xmlInitNode('radiative_transfer') self.node_coeff = self.node_ray.xmlInitNode('absorption_coefficient', 'type') self.node_rstart = self.node_ray.xmlInitNode('restart', 'status') self.node_Coal = self.node_models.xmlGetNode('pulverized_coal') self.radiativeTransferModelsList = ['dom', 'p-1'] self.mVariable_ray() def defaultRadiativeTRansferValues(self): """ Return in a dictionnary which contains default values """ default = {} default['radiative_model'] = "off" return default def _dependsPages(self, name): """ Construction of the list of dependencies Pages. """ self.case[name]['depends'] = ['models/initia','bounda/scalar'] def isCoalCombustion(self): """ is coal combustion. """ value = 0 if self.node_Coal.xmlGetAttribute('model') != 'off': value = 1 return value def mGetModelCoal(self, mod, event=None): """ """ text = 'off' if mod == 'p-1' and self.node_Coal.xmlGetAttribute('model') == 'off': text = 'PULV_COAL' if mod == 'dom' and self.node_Coal.xmlGetAttribute('model') !='off': text = 'PULV_COAL_P1' return text def mVariable_ray(self, event=None): """ """ dico = Tool.dicoRayLabel() model = self.mGetModel() if model != "off": for nb in range(len(dico[0])): if not self.node_ray.xmlGetNode('property', name =dico[0][nb]): self.node_ray.xmlInitNode('property', label=dico[1][nb], name =dico[0][nb], status='on') def mGetAdvancedOptions(self, page, stbar, title): """ Ask one popup for advanced specifications """ default = {} default['frequ'] = self.node_ray.xmlGetInt('frequency') default['caltsr'] = self.node_ray.xmlGetString('thermal_radiative_source_term') default['printT'] = self.node_ray.xmlGetString('temperature_listing_printing') default['listing']= self.node_ray.xmlGetString('intensity_resolution_listing_printing') default['model'] = self.node_ray['model'] if not default['frequ']: default['frequ'] = 1 if not default['caltsr']: default['caltsr'] = 0 if not default['printT']: default['printT'] = 0 if not default['listing']: default['listing']= 0 dialog = AdvancedOptionsDialog(page, stbar=stbar, title=title, default=default) self.node_ray.xmlSetData('frequency', dialog.result['frequ']) self.node_ray.xmlSetData('thermal_radiative_source_term', dialog.result['caltsr']) self.node_ray.xmlSetData('temperature_listing_printing', dialog.result['printT']) self.node_ray.xmlSetData('intensity_resolution_listing_printing', dialog.result['listing']) def mGetModel(self, event=None): if self.isCoalCombustion(): return self.mGetCoalModel() else: model = self.node_ray['model'] if model not in self.radiativeTransferModelsList: model = self.defaultRadiativeTRansferValues()['radiative_model'] self.mSetModel(model) return model def mGetCoalModel(self): import Pages.CoalThermoChemistry as CoalThermoChemistry model = CoalThermoChemistry.CoalThermoChemistryModel("dp_FCP", self.case) model.load() ind = model.radiativTransfer.getRadiativTransfer() val = "off" if (ind == 1) or (ind == 2): val = "dom" elif (ind == 3) or (ind == 4): val = "p-1" return val def mSetBoundCond(self): import Pages.RadiativeBoundaries as RadBound nodeList = RadBound.RadiativeBoundariesModel(self.case).getBoundDefList() if nodeList: for node in nodeList: label = node['label'] RadBound.RadiativeBoundariesModel(self.case).getTypeOfCondition(label) del RadBound def mSetModel(self, model, event=None): self.node_ray['model'] = model if model in self.radiativeTransferModelsList: self.mVariable_ray() self.mSetBoundCond() if self.isCoalCombustion(): self.mSetCoalModel(model) def mSetCoalModel(self, model2): import Pages.CoalThermoChemistry as CoalThermoChemistry model = CoalThermoChemistry.CoalThermoChemistryModel("dp_FCP", self.case) model.load() ind = 0 if model2 != "off": if model2 == "p-1": ind = 2 coalCoeff = self.node_coeff['type'] if coalCoeff == 'constant': ind += 1 elif coalCoeff == 'modak': ind += 2 model.radiativTransfer.setRadiativTransfer(ind) model.save() def mGetNbDir(self, event=None): return self.node_ray.xmlGetString('directions_number') def mSetNbDir(self, val, event=None): self.node_ray.xmlSetData('directions_number',val) def mGetRestart(self, event=None): return self.node_rstart['status'] def mSetRestart(self, val, event=None): self.node_rstart['status'] = val def mGetTypeCoeff(self, event=None): if self.isCoalCombustion(): val = self.mGetTypeCoalCoeff() if val == "off": val = self.node_coeff['type'] print "coal transfer radiativ type error" else : val = self.node_coeff['type'] return val def mGetTypeCoalCoeff(self): import Pages.CoalThermoChemistry as CoalThermoChemistry model = CoalThermoChemistry.CoalThermoChemistryModel("dp_FCP", self.case) model.load() ind = model.radiativTransfer.getRadiativTransfer() val = "off" if (ind == 1) or (ind == 3): val = "constant" elif (ind == 2) or (ind == 4): val = "modak" return val def mSetTypeCoalCoeff(self, val): import Pages.CoalThermoChemistry as CoalThermoChemistry model = CoalThermoChemistry.CoalThermoChemistryModel("dp_FCP", self.case) model.load() if val == "constant": ind = 1 else : ind = 2 radModel = self.node_ray['model'] ## print "radModel :", radModel if radModel == 'p-1': ind += 2 elif radModel == 'off': ind = 0 model.radiativTransfer.setRadiativTransfer(ind) model.save() def mSetTypeCoeff(self, val , event=None): if self.isCoalCombustion(): self.mSetTypeCoalCoeff(val) self.node_coeff['type'] = val def mGetAbsorCoeff(self, event=None): if self.isCoalCombustion(): import Pages.CoalThermoChemistry as CoalThermoChemistry model = CoalThermoChemistry.CoalThermoChemistryModel("dp_FCP", self.case) model.load() return model.radiativTransfer.getAbsorptionCoeff() else : return self.node_ray.xmlGetDouble('absorption_coefficient') def mSetAbsorCoeff(self, val, event=None): if self.isCoalCombustion(): import Pages.CoalThermoChemistry as CoalThermoChemistry model = CoalThermoChemistry.CoalThermoChemistryModel("dp_FCP", self.case) model.load() model.radiativTransfer.setAbsorptionCoeff(val) model.save() self.node_ray.xmlSetData('absorption_coefficient', val) def mGetFrequency(self, event=None): return self.node_ray.xmlGetInt('frequency') def mSetFrequency(self, val, event=None): self.node_ray.xmlSetData('frequency', val) def mGetIntensityResolution(self, event=None): return self.node_ray.xmlGetString('intensity_resolution_listing_printing') def mSetIntensityResolution(self, val, event=None): self.node_ray.xmlSetData('intensity_resolution_listing_printing', val) def mGetTemperatureListing(self, event=None): return self.node_ray.xmlGetString('temperature_listing_printing') def mSetTemperatureListing(self, val, event=None): self.node_ray.xmlSetData('temperature_listing_printing', val) def mGetTrs(self, event=None): return self.node_ray.xmlGetString('thermal_radiative_source_term') def mSetTrs(self, val, event=None): self.node_ray.xmlSetData('thermal_radiative_source_term', val) #-------------------------------------------------------------------------------- # Popup Class #-------------------------------------------------------------------------------- class AdvancedOptionsDialog(Dialog.Dialog): """ """ def buttonbox(self): """ Add standard button box. Override if you don't want the standard buttons. """ t = PageText() # Separator # Tix.Frame(self, height=2, bd=2, relief=SUNKEN).pack(side=TOP, fill=X) # Button box # box = Tix.Frame(self, relief=FLAT) box.pack() self.b1 = Tix.Button(box, text=t.VALIDATE, underline=0, width=10, command=self.ok, default=ACTIVE) self.b1.grid(row=0, column=0, padx=5, pady=10) self.b1.bind('', self.ok) b2 = Tix.Button(box, text=t.CANCEL, underline=0, width=10, command=self.cancel) b2.grid(row=0, column=1, padx=5, pady=10) b2.bind('', self.cancel) def getFrequency(self, event=None): """ """ if self.check2.isSPositive(self.eFrequ, self.frequ): self.b1.config(state=ACTIVE) else: self.b1.config(state=DISABLED) return self.frequ.get() def body(self,master): """ Creation of popup window's widgets """ t = PageText() self.frequ = Tix.IntVar() self.printLum = Tix.StringVar() self.printTemp = Tix.StringVar() self.tsr = Tix.StringVar() model = Tix.StringVar() self.result = self.default self.frequ.set(self.result['frequ']) self.tsr.set(self.result['caltsr']) self.printTemp.set(self.result['printT']) self.printLum.set(self.result['listing']) model = self.result['model'] self.pw1 = Tix.Frame(master,width=200,relief=FLAT, bd=2) self.pw1.pack(side=TOP, fill=X, padx=10,pady=10) self.lFrequ = Tix.Label(self.pw1,text=t.FREQUENCY) self.lPrintL = Tix.Label(self.pw1,text=t.PRINT_S) self.ltsray = Tix.Label(self.pw1,text=t.TSRAY) self.lPrintT = Tix.Label(self.pw1,text=t.PRINT_T) self.eFrequ = Tix.Entry(self.pw1, bd=2, width=6, textvariable=self.frequ) self.eFrequ.event_add("<>", "", "", "") self.eFrequ.bind("<>",self.getFrequency) self.balloon.bind_widget(self.eFrequ,balloonmsg=t.KEYWORD+'NREFQR') self.tsray = Tix.OptionMenu(self.pw1, options='menubutton.width 3') self.tsray.menubutton.config(bd=2, relief=RAISED) self.tsray.menu.config() self.tsray.grid(pady=15, padx=10) self.tsray.add_command('0', label='0') self.tsray.add_command('1', label='1') self.tsray.add_command('2', label='2') self.tsray.config(variable=self.tsr) self.balloon.bind_widget(self.tsray, balloonmsg=t.KEYWORD+'IDIVER') self.printT = Tix.OptionMenu(self.pw1, options='menubutton.width 3') self.printT.menubutton.config(bd=2, relief=RAISED) self.printT.menu.config() self.printT.grid(pady=15, padx=10) self.printT.add_command('0', label='0') self.printT.add_command('1', label='1') self.printT.add_command('2', label='2') self.printT.config(variable=self.printTemp) self.balloon.bind_widget(self.printT, balloonmsg=t.KEYWORD+'IIMPAR') self.printL = Tix.OptionMenu(self.pw1, options='menubutton.width 3') self.printL.menubutton.config(bd=2, relief=RAISED) self.printL.menu.config() self.printL.grid(pady=15, padx=10) self.printL.add_command('0', label='0') self.printL.add_command('1', label='1') self.printL.add_command('2', label='2') self.printL.config(variable=self.printLum) self.balloon.bind_widget(self.printL, balloonmsg=t.KEYWORD+'IIMLUM') if model == 'dom': self.lFrequ.grid (row=0, column=0, padx=10, pady=10) self.eFrequ.grid (row=0, column=1, padx=10, pady=10) self.ltsray.grid (row=1, column=0, padx=10, pady=10) self.tsray.grid (row=1, column=1, padx=10, pady=10) self.lPrintT.grid(row=2, column=0, padx=10, pady=10) self.printT.grid (row=2, column=1, padx=10, pady=10) self.lPrintL.grid(row=3, column=0, padx=10, pady=10) self.printL.grid (row=3, column=1, padx=10, pady=10) else: self.lFrequ.grid (row=0, column=0, padx=10, pady=10) self.eFrequ.grid (row=0, column=1, padx=10, pady=10) self.ltsray.grid (row=1, column=0, padx=10, pady=10) self.tsray.grid (row=1, column=1, padx=10, pady=10) self.lPrintT.grid(row=2, column=0, padx=10, pady=10) self.printT.grid (row=2, column=1, padx=10, pady=10) self.lPrintL.grid_forget() self.printL.grid_forget() def apply(self): """ What to do when user clicks on 'OK'. """ self.result['frequ'] = self.frequ.get() self.result['caltsr'] = self.tsr.get() self.result['printT'] = self.printTemp.get() self.result['listing'] = self.printLum.get() def sequence(self): """ Bind the dialog window with 'Echap' and 'Return' Override if you don't want the standard binding (for example ou have to bind the dialog window with only 'Echap' and delete sequence 'Return', when there is any entries on the dialog window). """ self.bind('', self.cancel) #------------------------------------------------------------------------------- # Main class #------------------------------------------------------------------------------- class ThermalRadiationView(TkPage.Page): """ Class to open Thermal Scalar Transport Page. """ def _dependsPages(self, name): """ Construction of the list of dependencies Pages. """ self.case[name]['depends'] = ['models/therma'] def _tkControlVariables(self): """ Tkinter variables declaration. """ self.model = Tix.StringVar() self.restart = Tix.StringVar() self.nbdir = Tix.StringVar() self.typeCoeff = Tix.StringVar() self.absorCoeff = Tix.DoubleVar() self.frequency = Tix.IntVar() self.printList = Tix.StringVar() def _pageControl(self): """ Xml node declaration and supplementary default value settings. """ self.tR = ThermalRadiationModel(self.case) def getModel(self, event=None): """ """ t = PageText() text = 'off' mod = self.model.get() if self.tR.mGetModelCoal(mod) == 'PULV_COAL': Dialog.ShowInfo(self.master, title=t.COAL, text=t.PULV_COAL) elif self.tR.mGetModelCoal(mod) == 'PULV_COAL_P1': Dialog.ShowInfo(self.master, title=t.COAL, text = t.PULV_COAL_P1) if mod!= 'off': self.myTree.tree.hlist.show_entry('output/solutray') else: self.myTree.tree.hlist.hide_entry('output/solutray') return self.model.get() def getRestart(self, event=None): """ """ if not self.restart.get(): self.restart.set('off') self.tR.mSetRestart(self.restart.get()) return self.restart.get() def getNbDir(self, event=None): """ """ if not self.nbdir.get(): self.nbdir.set(32) self.tR.mSetNbDir(self.nbdir.get()) return self.nbdir.get() def getTypeCoeff(self, event=None): """ l'initialisation a la creation du noeud (def _pageControl) n'est pas prise en compte. ??? """ if not self.typeCoeff.get(): self.typeCoeff.set('constant') if self.typeCoeff.get() == 'constant': self.l4.grid_forget() self.e4.grid() self.e4.config(state=NORMAL) elif self.typeCoeff.get() == 'modak': self.l4.grid_forget() self.e4.grid() self.e4.config(state=DISABLED) else: self.l4.grid() self.e4.grid_forget() self.tR.mSetTypeCoeff(self.typeCoeff.get()) return self.typeCoeff.get() def getAbsorCoeff(self, event=None): """ """ if self.check2.isPositive(self.e4, self.absorCoeff): self.tR.mSetAbsorCoeff(self.absorCoeff.get()) def getAdvancedOptions(self, event=None): """ Ask one popup for advanced specifications """ t=PageText() self.stbar.busy() self.tR.mGetAdvancedOptions(self.myPage, self.stbar, t.POPUP) self.stbar.idle() def getRadiativeTransfer(self, event=None): """ """ t = PageText() self.stbar.busy() model = self.getModel() self.s1.pack_forget() self.w2.pack_forget() self.s2.pack_forget() self.w3.pack_forget() self.s3.pack_forget() self.w4.pack_forget() self.s4.pack_forget() self.w5.pack_forget() if model == 'p-1': self.s1.pack(side=TOP, fill=X) self.w2.pack(side=TOP, pady=10) self.s2.pack(side=TOP, fill=X) self.w4.pack(side=TOP, pady=10) self.s4.pack(side=TOP, fill=X) self.w5.pack(side=TOP, fill=X, pady=10) if model == 'dom': self.s1.pack(side=TOP, fill=X) self.w2.pack(side=TOP, pady=10) self.s2.pack(side=TOP, fill=X) self.w3.pack(side=TOP, pady=10, ipadx=30) self.s3.pack(side=TOP, fill=X) self.w4.pack(side=TOP, pady=10) self.s4.pack(side=TOP, fill=X) self.w5.pack(side=TOP, fill=X, pady=10) self.tR.mSetModel(model) self.stbar.idle() def _createWidgets(self): """ Create the Page layout. """ t = PageText() lf = Tix.LabelFrame(self.myPage, bd=2, label=t.RADIATIVE, relief=FLAT) lf.label.config(font=fT) lf.pack(side=TOP, fill=X, padx=10, pady=10) w1 = Tix.Frame(lf.frame, relief=FLAT) w1.pack(side=TOP, fill=X, pady=10) self.s1 = Tix.Frame(lf.frame, height=2, bd=2, relief=SUNKEN) self.s1.pack(side=TOP, fill=X) self.w2 = Tix.Frame(lf.frame, relief=FLAT,) self.w2.pack(side=TOP, pady=10) self.w21 = Tix.Frame(self.w2, relief=FLAT, width=300) self.w22 = Tix.Frame(self.w2, relief=FLAT) self.w22.pack(pady=10, padx=30, side=RIGHT) self.w21.pack(pady=10, padx=20, side=RIGHT) self.s2 = Tix.Frame(lf.frame, height=2, bd=2, relief=SUNKEN) self.s2.pack(side=TOP, fill=X) self.w3 = Tix.Frame(lf.frame, relief=FLAT) self.w3.pack(side=TOP, pady=10, ipadx=30) self.w31 = Tix.Frame(self.w3, relief=FLAT) self.w32 = Tix.Frame(self.w3, relief=FLAT) self.w32.pack( pady=10, padx=30, side=RIGHT) self.w31.pack( pady=10, padx=20, side=RIGHT) self.s3 = Tix.Frame(lf.frame, height=2, bd=2, relief=SUNKEN) self.s3.pack(side=TOP, fill=X) self.w4 = Tix.Frame(lf.frame, relief=FLAT) self.w4.pack(side=TOP, pady=10,fill=X) self.w41 = Tix.Frame(self.w4, relief=FLAT) self.w42 = Tix.Frame(self.w4, relief=FLAT) self.w411 = Tix.Frame(self.w41, relief=FLAT) self.w412 = Tix.Frame(self.w41, relief=FLAT) self.w41.pack(padx=40, pady=10, side=TOP) self.w42.pack(pady=10, side=BOTTOM) self.w411.grid(row=0,column=0, padx=25, ipadx=15) self.w412.grid(row=0,column=1, padx =0) self.s4 = Tix.Frame(lf.frame, height=2, bd=2, relief=SUNKEN) self.s4.pack(side=TOP, fill=X) self.w5 = Tix.Frame(lf.frame, relief=FLAT) self.w5.pack(side=TOP, fill=X, pady=10) self.b = Tix.OptionMenu(w1, options='menubutton.width 45') self.b.menubutton.config(bd=2, relief=RAISED) self.b.menu.config() self.balloon.bind_widget(self.b, statusmsg=t.MSG_MODEL, balloonmsg=t.KEYWORD+'IRAYON, IRAYPP') self.b.pack(side=TOP, pady=15, padx=10) self.b.add_command('off', label=t.NO_MODEL) self.b.add_separator('') self.b.add_command('dom', label=t.DOM) self.b.add_command('p-1', label=t.P1) self.b.config(variable=self.model, command= self.getRadiativeTransfer) # restart : w2 Tix.Label(self.w21, text=t.SUITE, relief=FLAT).grid() self.buw2 = [0]*2 for (i, tx1, tx2) in [(0, t.ON, "on"), (1, t.OFF, "off")]: self.buw2[i] = Tix.Radiobutton(self.w22, text=tx1, value=tx2, variable=self.restart, command= self.getRestart) self.buw2[i].grid(row=0,column=i+1, padx=5) self.balloon.bind_widget(self.buw2[i],balloonmsg=t.KEYWORD+'ISUIRD') # number of directions : w3 Tix.Label(self.w31, text=t.NB_DIRECT, relief=FLAT).grid() self.buw3 = [0]*2 for (i, tx1, tx2) in [(0, 32, "32"), (1, 128, "128")]: self.buw3[i] = Tix.Radiobutton(self.w32, text=tx1, value=tx2, variable=self.nbdir, command= self.getNbDir) self.buw3[i].grid(row=0,column=i+1, padx=5) self.balloon.bind_widget(self.buw3[i],balloonmsg=t.KEYWORD+'NDIREC') # absorption coefficient : w4 Tix.Label(self.w411, text=t.COEFF_ABS, relief=FLAT).grid(row=0,column=0, padx=0) self.buw4 = [0]*2 self.bu = Tix.OptionMenu(self.w412, options='menubutton.width 45') self.bu.menubutton.config(bd=2, width=7, relief=RAISED) self.bu.add_command('constant', label='Constant' ) if self.tR.isCoalCombustion(): self.bu.add_command('variable', label='Variable', state=DISABLED) self.bu.add_command('modak', label='Modak') else: self.bu.add_command('variable', label='Variable') self.bu.add_command('modak', label='Modak', state=DISABLED) self.bu.grid(row=0, column=1,padx=15, pady=0) self.bu.config(variable=self.typeCoeff, command=self.getTypeCoeff) self.l4 = Tix.Message(self.w42, bd=2, relief=FLAT,text=t.MSG_VARICOEFF, \ width=400,foreground='red', font=fL) self.e4 = Tix.Entry(self.w42, bd=2, width=10, textvariable=self.absorCoeff) self.e4.event_add("<>", "", "", "") self.e4.bind("<>",self.getAbsorCoeff) # advanced options : w5 Tix.Label(self.w5, text=t.ADVANCED, relief=FLAT).grid(padx=20) self.imsop = Tix.PhotoImage(file=PIC_PATH+'graduate.gif') self.buw5 = Tix.Button(self.w5, image=self.imsop, command=self.getAdvancedOptions) self.buw5.grid(row=0, column=1) def _initializeWidgets(self): """ Extract resquested informations from XML document. This informations are used to initialize the widgets. For this page default values of all widgets are necessary included in the XML file. """ t = PageText() nodeList = [] model = self.tR.mGetModel() if self.tR.mGetModel() == "off": self.b.config(value = 'off') else: self.b.config(value = model) if self.tR.mGetNbDir(): self.nbdir.set(self.tR.mGetNbDir()) else: self.nbdir.set('128') self.tR.mSetNbDir(self.nbdir.get()) if self.tR.mGetRestart(): self.restart.set(self.tR.mGetRestart()) else: self.restart.set('off') self.tR.mSetRestart('off') if self.tR.mGetTypeCoeff(): self.typeCoeff.set(self.tR.mGetTypeCoeff()) else: self.typeCoeff.set('constant') self.tR.mSetTypeCoeff('constant') absorCoeff = self.tR.mGetAbsorCoeff() if not absorCoeff: absorCoeff = 0.0 self.absorCoeff.set(absorCoeff) self.tR.mSetAbsorCoeff(absorCoeff) # Initialization for "Avdanced Options" parameters if not self.tR.mGetFrequency() : self.tR.mSetFrequency(1) if not self.tR.mGetIntensityResolution() : self.tR.mSetIntensityResolution(0) if not self.tR.mGetTemperatureListing() : self.tR.mSetTemperatureListing(1) if not self.tR.mGetTrs() : self.tR.mSetTrs(2) # verouillage # self.b.config(value = 'off') # self.b.config(state=DISABLED, bg='grey') #------------------------------------------------------------------------------- # Text and messages for this page #------------------------------------------------------------------------------- class PageText: """ Storage of all texts and messages for this page. """ def __init__(self): # 1) Texts # if Tool.GuiParam.lang == 'fr': self.KEYWORD = "Mots clé Code_Saturne : " self.ON = "oui" self.OFF = "non" self.RADIATIVE = "Transfert thermique radiatif" self.NO_MODEL = "Pas de transferts radiatifs" self.P1 = "Modèle P-1" self.DOM = "Méthode des ordonnées discrètes" self.SUITE = "Suite de calcul radiatif" self.NB_DIRECT = "Nombre de directions" self.COEFF_ABS = "Coefficient d'absorption" self.FREQUENCY = "Fréquence de passage" self.PRINT_S = "Niveau d'impression listing \nsur " \ "la résolution de la luminance" self.PRINT_T = "Niveau d'impression listing \nsur " \ "la temperature de paroi" self.TSRAY = "Mode de calcul du Terme Source\n"\ "radiatif explicite" self.ADVANCED = "Options avancées" self.MSG_VARICOEFF = "Vous devez remplir la routine USRAY3.F" self.POPUP = "Options spécifiques" self.VALIDATE = "Valider" self.CANCEL = "Annuler" self.COAL = "ATTENTION : Combustion charbon" self.PULV_COAL = "Ce modele de rayonnement n'est pas " \ "recommandé si vous ne faites pas de combustion de charbon" self.PULV_COAL_P1 = "Le modele P-1 est mieux adpaté pour la "\ "combustion de charbon" else: self.KEYWORD = "Code_Saturne key words: " self.ON = "on" self.OFF = "off" self.RADIATIVE = "Thermal radiative transfer" self.NO_MODEL = "No radiative transfers" self.P1 = "P-1 Model" self.DOM = "Méthode des ordonnées discrètes" self.SUITE = "Restart of radiative calculation" self.NB_DIRECT = "Number of directions" self.COEFF_ABS = "Absorption coefficient" self.FREQUENCY = "Iteration frequency" self.PRINT_S = "Printing level for \nbrigthness resolution" self.PRINT_T = "Printing level for \nwall temperature" self.TSRAY = "Radiative Source Term \ncalculus " self.ADVANCED = "Advanced options" self.MSG_VARICOEFF = "You have to complete USRAY3.F" self.POPUP = "Specifics options" self.VALIDATE = "Validate" self.CANCEL = "Cancel" self.COAL = "WARNING : Pulverized Coal" self.PULV_COAL = "This radiative transfer model is not " \ "recommended if you don't use Pulverized Coal model" self.PULV_COAL_P1 = "P-1 model is better with Pulverized Coal" # 2) Messages # if Tool.GuiParam.lang == 'fr': self.MSG_MODEL = "Sélectionner le modèle de rayonnement thermique" else: self.MSG_MODEL = "Select the thermic radiation model" #------------------------------------------------------------------------------- # ThermalRadiation test case #------------------------------------------------------------------------------- class ThermalRadiationTestCase(unittest.TestCase): """ """ def setUp(self): """ This method is executed before all "check" methods. """ ## from Base.XMLengine import Case ## self.case = Case() from Base.XMLengine import Case, XMLDocument from Base.XMLinitialize import XMLinit Tool.GuiParam.lang = 'en' self.case = Case(None) XMLinit(self.case) self.doc = XMLDocument() def tearDown(self): """ This method is executed after all "check" methods. """ del self.case def checkThermalRadiationInstantiation(self): """ Check whether the ThermalRadiationModel class could be instantiated """ mdl = None mdl = ThermalRadiationModel(self.case) assert mdl != None, 'Could not instantiate ThermalRadiationModel' def checkIsCoalCombustion(self): """ Check whether the ThermalRadiationModel class could be in coal combustion """ mdl = ThermalRadiationModel(self.case) mdl.node_Coal['model'] = 'off' assert mdl.isCoalCombustion() != 1, 'Could not verify pulverized_coal is "on"' def checkSetModel(self): """ Check whether the ThermalRadiationModel class could be set model """ mdl = ThermalRadiationModel(self.case) model = 'dom' mdl.mSetModel(model) truc = mdl.node_ray.toString() doc = ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ '' assert doc == truc, 'Could not set model on radiative_transfer node' def checkGetModel(self): """ Check whether the ThermalRadiationModel class could be get model """ mdl = ThermalRadiationModel(self.case) model = 'dom' mdl.mSetModel(model) assert mdl.mGetModel() == model,'Could not get model from radiative_transfer node' def out_checkGetModelCoal(self): """ """ mdl = ThermalRadiationModel(self.case) mdl.node_Coal['model'] = 'coal_homo' model = 'dom' mdl.mSetModel(model) assert mdl.mGetModelCoal(model) == 'PULV_COAL_P1',\ 'Could not put good text for coal model' def out_checkGetandSetCoalModel(self): """ """ mdl = ThermalRadiationModel(self.case) mdl.node_Coal['model'] = 'coal_homo' model = 'dom' mdl.mSetModel(model) mdl.mSetCoalModel(model) assert mdl.mGetCoalModel() == 'off','Could not get coal model' def checkThermalRadiationNode(self): """ """ mdl = ThermalRadiationModel(self.case) mdl.node_coeff.xmlRemoveChild('radiative_transfer') truc = mdl.node_ray.toString() doc = ''\ ''\ ''\ '' assert doc == truc, 'Could not set radiative transfer node' def checkThermalRadiationModel(self): """ """ mdl = ThermalRadiationModel(self.case) mdl.node_coeff.xmlRemoveChild('radiative_transfer') mdl.node_ray['model'] = 'dom' truc = mdl.node_ray.toString() doc = ''\ ''\ ''\ '' assert doc == truc, 'Could not set radiative transfer model' def checkSetThermalRadiationAbsorCoeff(self): """ Check whether the ThermalRadiationModel class could be set Coefficient absorption and its type """ mdl = ThermalRadiationModel(self.case) mdl.mSetModel('dom') mdl.mSetAbsorCoeff('0.1') mdl.mSetTypeCoeff('constant') truc = mdl.node_ray.toString() doc = ''\ '0.1'\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ '' assert doc == truc, 'Could not set type of absorption_coefficient' def checkGetThermalRadiationAbsorCoeff(self): """ Check whether the ThermalRadiationModel class could be get restart's status """ mdl = ThermalRadiationModel(self.case) mdl.mSetModel('dom') mdl.mSetAbsorCoeff('0.1') mdl.mSetTypeCoeff('constant') assert mdl.mGetAbsorCoeff() == 0.1,'Could not get value of absorption_coefficient' assert mdl.mGetTypeCoeff() == 'constant','Could not get type of absorption_coefficient' def checkSetThermalRadiationRestart(self): """ Check whether the ThermalRadiationModel class could be set restart'status node """ mdl = ThermalRadiationModel(self.case) mdl.mSetModel('dom') mdl.mSetAbsorCoeff('0.1') mdl.mSetTypeCoeff('constant') mdl.mSetRestart('on') truc = mdl.node_ray.toString() doc = ''\ '0.1'\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ '' assert doc == truc, 'Could not set restart' def checkGetThermalRadiationRestart(self): """ Check whether the ThermalRadiationModel class could be get restart's status """ mdl = ThermalRadiationModel(self.case) mdl.mSetModel('dom') mdl.mSetAbsorCoeff('0.1') mdl.mSetTypeCoeff('constant') mdl.mSetRestart('on') assert mdl.mGetRestart() == 'on','Could not get status of restart' def checkSetNbDir(self): """ Check whether the ThermalRadiationModel class could be set number of directions """ mdl = ThermalRadiationModel(self.case) mdl.mSetModel('dom') mdl.mSetAbsorCoeff('0.1') mdl.mSetTypeCoeff('constant') mdl.mSetRestart('on') mdl.mSetNbDir('32') truc = mdl.node_ray.toString() doc = ''\ '0.1'\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ '32'\ '' assert doc == truc, 'Could not set direction_number' def checkGetNbDir(self): """ Check whether the ThermalRadiationModel class could be get number of directions """ mdl = ThermalRadiationModel(self.case) mdl.mSetModel('dom') mdl.mSetAbsorCoeff('0.1') mdl.mSetTypeCoeff('constant') mdl.mSetNbDir('32') assert mdl.mGetNbDir() == '32',\ 'Could not get number of directions' def checkSetAdvancedOptions(self): """ Check whether the ThermalRadiationModel class could be set advanced options """ mdl = ThermalRadiationModel(self.case) mdl.mSetModel('dom') mdl.mSetAbsorCoeff('0.1') mdl.mSetTypeCoeff('constant') mdl.mSetRestart('on') mdl.mSetFrequency('10') mdl.mSetTrs('1') mdl.mSetTemperatureListing('1') mdl.mSetIntensityResolution('1') truc = mdl.node_ray.toString() doc = ''\ '0.1'\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ ''\ '10'\ '1'\ '1'\ '1'\ '' assert doc == truc, 'Could not set advanced options' def checkGetAdvancedOptions(self): """ Check whether the ThermalRadiationModel class could be get advanced options """ mdl = ThermalRadiationModel(self.case) mdl.mSetModel('dom') mdl.mSetAbsorCoeff('0.1') mdl.mSetTypeCoeff('constant') mdl.mSetRestart('on') mdl.mSetFrequency('10') mdl.mSetTrs('1') mdl.mSetTemperatureListing('1') mdl.mSetIntensityResolution('1') assert mdl.mGetFrequency() == 10,\ 'Could not get advanced option frequency' assert mdl.mGetTrs() == '1',\ 'Could not get advanced option thermal source term' assert mdl.mGetTemperatureListing() == '1',\ 'Could not get advanced option temperature Listing' assert mdl.mGetIntensityResolution() == '1',\ 'Could not get advanced option intensity resolution' def suite(): testSuite = unittest.makeSuite(ThermalRadiationTestCase, "check") return testSuite def runTest(): print "ThermalRadiationTestCase to be completed..." runner = unittest.TextTestRunner() runner.run(suite()) #------------------------------------------------------------------------------- # End #-------------------------------------------------------------------------------