# - computeVariables (pyTree) - import Converter.PyTree as C import Converter.Internal as Internal import Post.PyTree as P import Generator.PyTree as G import KCore.test as test #------------------------- # Test reference state #------------------------- ni = 31 dh = 10. / (ni - 1) m = G.cart((0, 0, 0), (dh, dh, 1), (ni, ni, 1)) m = C.initVars(m, 'Density', 1.) m = C.initVars( m, '{MomentumX}=0.1+3.*{CoordinateX}+5.*{CoordinateY}+2.*{CoordinateZ}') m = C.initVars(m, 'MomentumY', 0.) m = C.initVars(m, 'MomentumZ', 0.) m = C.initVars( m, '{EnergyStagnationDensity}=1.e5+1.5*{CoordinateX}**2+{CoordinateY}**2+3.*{CoordinateZ}**2' ) t = C.newPyTree(['Base', 1]) t[2][1][2].append(m) t = C.addState(t, adim='adim1', MInf=0.6) t = P.computeVariables(t, ['Mach', 'Pressure']) test.testT(t, 1)
#----- ni = 30 m = G.cart((0, 0, 0), (10. / (ni - 1), 1, 1), (ni, 1, 1)) m = C.initVars(m, 'Density', initDensity, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = C.initVars(m, 'centers:Density', 1.) m = C.initVars(m, 'MomentumX', initMomentum, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = C.initVars(m, 'MomentumY', 0.) m = C.initVars(m, 'MomentumZ', 0.) m = C.initVars(m, 'EnergyStagnationDensity', initEnergy, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) t = C.newPyTree(['Base', 1]) t[2][1][2].append(m) t[2][1] = C.addState(t[2][1], 'Mach', 0.6) t = P.computeVariables(t, ['Mach', 'Pressure']) test.testT(t, 1) #----- # 2D #----- ni = 30 nj = 40 m = G.cart((0, 0, 0), (10. / (ni - 1), 10. / (nj - 1), 1), (ni, nj, 1)) m = C.initVars(m, 'Density', initDensity, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = C.initVars(m, 'centers:Density', 1.) m = C.initVars(m, 'MomentumX', initMomentum, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = C.initVars(m, 'MomentumY', initMomentum, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = C.initVars(m, 'MomentumZ', 0.)
#----- # 1D #----- ni = 30 m = G.cart((0, 0, 0), (10. / (ni - 1), 1, 1), (ni, 1, 1)) m = C.initVars(m, 'Density', initDensity, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = C.initVars(m, 'centers:Density', 1.) m = C.initVars(m, 'MomentumX', initMomentum, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = C.initVars(m, 'MomentumY', 0.) m = C.initVars(m, 'MomentumZ', 0.) m = C.initVars(m, 'EnergyStagnationDensity', initEnergy, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = P.computeVariables(m, ['Pressure', 'Mach']) test.testT(m, 1) #----- # 2D #----- ni = 30 nj = 40 m = G.cart((0, 0, 0), (10. / (ni - 1), 10. / (nj - 1), 1), (ni, nj, 1)) m = C.initVars(m, 'Density', initDensity, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = C.initVars(m, 'centers:Density', 1.) m = C.initVars(m, 'MomentumX', initMomentum, ['CoordinateX', 'CoordinateY', 'CoordinateZ']) m = C.initVars(m, 'MomentumY', initMomentum, ['CoordinateX', 'CoordinateY', 'CoordinateZ'])
def computeVariables(): if CTK.t == []: return nzs = CPlot.getSelectedZones() varname = VARS[0].get() # Adimensionnement adim = VARS[7].get() nodes = Internal.getNodesFromName(CTK.t, 'ReferenceState') if nodes != []: state = nodes[0] else: CTK.TXT.insert('START', 'ReferenceState is missing (tkState).\n') CTK.TXT.insert('START', 'Error: ', 'Error') return nodes = Internal.getNodesFromName(state, 'Mach') if nodes != []: if isinstance(nodes[0][1], numpy.ndarray): MInf = nodes[0][1][0] else: MInf = nodes[0][1] else: CTK.TXT.insert('START', 'Mach is missing (tkState).\n') CTK.TXT.insert('START', 'Error: ', 'Error') return nodes = Internal.getNodesFromName(state, 'Reynolds') if nodes != []: if isinstance(nodes[0][1], numpy.ndarray): ReInf = nodes[0][1][0] else: ReInf = nodes[0][1] else: ReInf = 1. if adim == 'Adim1 (ro,a,T)': adim = Adim.adim1(MInf, 0., 0., ReInf) elif adim == 'Adim2 (ro,u,T)': adim = Adim.adim2(MInf, 0., 0., ReInf) else: CTK.TXT.insert('START', 'Unknown adim type.\n') CTK.TXT.insert('START', 'Error: ', 'Error') return gamma = adim[11] cv = adim[7] rgp = (gamma - 1) * cv TInf = adim[6] muInf = 1. / ReInf Cs = adim[10] loc = VARS[6].get() CTK.saveTree() if (varname == 'Vorticity' or varname == 'VorticityMagnitude' or varname == 'QCriterion' or varname == 'ShearStress' or varname == 'SkinFriction' or varname == 'SkinFrictionTangential'): # extra variables varloc = loc + ':' + varname if CTK.__MAINTREE__ <= 0 or nzs == []: try: CTK.t = P.computeExtraVariable(CTK.t, varloc, gamma=gamma, rgp=rgp, Cs=Cs, mus=muInf, Ts=TInf) CTK.TXT.insert('START', 'Variable %s computed.\n' % varloc) except Exception as e: Panels.displayErrors([0, str(e)], header='Error: computeExtraVariables') CTK.TXT.insert('START', 'Computation of variable %s failed.\n' % varloc) CTK.TXT.insert('START', 'Error: ', 'Error') else: fail = False errors = [] for nz in nzs: nob = CTK.Nb[nz] + 1 noz = CTK.Nz[nz] try: CTK.t[2][nob][2][noz] = \ P.computeExtraVariable(CTK.t[2][nob][2][noz], varloc, gamma=gamma, rgp=rgp, Cs=Cs, mus=muInf, Ts=TInf) except Exception as e: fail = True errors += [0, str(e)] if not fail: CTK.TXT.insert('START', 'Variable %s computed.\n' % varloc) else: Panels.displayErrors(errors, header='Error: computeExtraVariables') CTK.TXT.insert('START', 'Computation of variable %s failed.\n' % varloc) CTK.TXT.insert('START', 'Error: ', 'Error') else: # std variables varloc = loc + ':' + varname if CTK.__MAINTREE__ <= 0 or nzs == []: try: CTK.t = P.computeVariables(CTK.t, [varloc], gamma=gamma, rgp=rgp, Cs=Cs, mus=muInf, Ts=TInf) CTK.TXT.insert('START', 'Variable %s computed.\n' % varloc) except Exception as e: Panels.displayErrors([0, str(e)], header='Error: computeVariables') CTK.TXT.insert('START', 'Computation of variable %s failed.\n' % varloc) CTK.TXT.insert('START', 'Error: ', 'Error') else: fail = False errors = [] for nz in nzs: nob = CTK.Nb[nz] + 1 noz = CTK.Nz[nz] try: CTK.t[2][nob][2][noz] = \ P.computeVariables(CTK.t[2][nob][2][noz], [varloc], gamma=gamma, rgp=rgp, Cs=Cs, mus=muInf, Ts=TInf) except Exception as e: fail = True errors += [0, str(e)] if not fail: CTK.TXT.insert('START', 'Variable %s computed.\n' % varloc) else: Panels.displayErrors(errors, header='Error: computeVariables') CTK.TXT.insert('START', 'Computation of variable %s failed.\n' % varloc) CTK.TXT.insert('START', 'Error: ', 'Error') #C._fillMissingVariables(CTK.t) CTK.TKTREE.updateApp() CTK.display(CTK.t) if CTK.TKPLOTXY is not None: CTK.TKPLOTXY.updateApp()