def streamSurface(): if (CTK.t == []): return if (CTK.__MAINTREE__ <= 0): CTK.TXT.insert('START', 'Fail on a temporary tree.\n') CTK.TXT.insert('START', 'Error: ', 'Error') return npts = CTK.varsFromWidget(VARS[0].get(), type=2) if (len(npts) != 1): CTK.TXT.insert('START', 'Number of points in stream incorrect.\n') CTK.TXT.insert('START', 'Error: ', 'Error') return npts = npts[0] nzs = CPlot.getSelectedZones() if (nzs == []): CTK.TXT.insert('START', 'Selection is empty.\n') CTK.TXT.insert('START', 'Error: ', 'Error') return v1 = VARS[1].get() v2 = VARS[2].get() v3 = VARS[3].get() streams = [] fail = False errors = [] for nz in nzs: nob = CTK.Nb[nz] + 1 noz = CTK.Nz[nz] z = CTK.t[2][nob][2][noz] z = C.convertArray2Tetra(z) try: stream = P.streamSurf(CTK.t, z, [v1, v2, v3], N=npts) streams.append(stream) except Exception as e: fail = True errors += [0, str(e)] CTK.saveTree() CTK.t = C.addBase2PyTree(CTK.t, 'STREAMS', 2) b = Internal.getNodesFromName1(CTK.t, 'STREAMS') nob = C.getNobOfBase(b[0], CTK.t) for i in streams: CTK.add(CTK.t, nob, -1, i) if (fail == False): CTK.TXT.insert('START', 'Stream surface created.\n') else: Panels.displayErrors(errors, header='Error: streamSurf') CTK.TXT.insert('START', 'Sream surface fails for at least one zone.\n') CTK.TXT.insert('START', 'Warning: ', 'Warning') (CTK.Nb, CTK.Nz) = CPlot.updateCPlotNumbering(CTK.t) CTK.TKTREE.updateApp() CPlot.render()
ni = 30 nj = 40 nk = 5 m1 = G.cart((0, 0, 0), (10. / (ni - 1), 10. / (nj - 1), 1), (ni, nj, nk)) m1[0] = 'cart1' m2 = G.cart((5.5, 0, 0), (9. / (ni - 1), 9. / (nj - 1), 1), (ni, nj, nk)) m2[0] = 'cart2' b = D.line((0.1, 5., 0.1), (0.1, 5., 3.9), N=5) b = C.convertArray2Tetra(b) def F(x): return M.cos(x) m = [m1, m2] m = C.initVars(m, 'u', 1.) m = C.initVars(m, 'v', F, ['CoordinateX']) m = C.initVars(m, 'w', 0.) m = C.initVars(m, 'centers:G', 1.) m = C.addBC2Zone(m, 'wall', 'BCWall', 'imin') m = C.addBC2Zone(m, 'BCOverlap', 'BCOverlap', 'imax') # 3D struct t = C.newPyTree(['Base']) t[2][1][2] += m t[2][1] = C.addState(t[2][1], 'Mach', 0.6) p = P.streamSurf(t, b, ['u', 'v', 'w']) t = C.addBase2PyTree(t, 'Base2', 2) t[2][2][2] = [p] test.testT(t, 1)
import Post.PyTree as P import Generator.PyTree as G import Geom.PyTree as D import math as M ni = 30 nj = 40 nk = 5 m1 = G.cart((0, 0, 0), (10. / (ni - 1), 10. / (nj - 1), 1), (ni, nj, nk)) m1[0] = 'cart1' m2 = G.cart((5.5, 0, 0), (9. / (ni - 1), 9. / (nj - 1), 1), (ni, nj, nk)) m2[0] = 'cart2' b = D.line((0.1, 5., 0.1), (0.1, 5., 3.9), N=10) b = C.convertArray2Tetra(b) def F(x): return M.cos(x) t = C.newPyTree(['Base', 'StreamR']) t[2][1][2] = [m1, m2] t = C.initVars(t, 'vx', 1.) t = C.initVars(t, 'vy', F, ['CoordinateX']) t = C.initVars(t, 'vz', 0.) x0 = 0.1 y0 = 5. z0 = 0.5 p = P.streamSurf(t, b, ['vx', 'vy', 'vz']) C.convertPyTree2File(p, "out.cgns")