Beispiel #1
0
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")