コード例 #1
0
# - axisym (pyTree) -
import Generator.PyTree as G
import Converter.PyTree as C
import Geom.PyTree as D

# Axisym a curve
a0 = D.line((0.5,0,0), (0.6,0,1))
a = D.axisym(a0,(0.,0.,0.),(0.,0.,1.),360.,360)
C.convertPyTree2File(a, "out.cgns")

# Axisym a curve with varying r
a0 = D.line((1.0,0,0), (0.,0,1))
a1 = D.circle((0,0,0), 2.)
a = D.axisym(a0, (0.,0.,0.), (0.,0.,1.), rmod=a1)
C.convertPyTree2File([a,a0,a1], "out1.cgns")

# Axisym a 2D cart grid
a = G.cart((0.,0.,0.), (0.1,0.1,0.2),(10,10,1))
a = D.axisym(a,(1.,0.,0.),(0.,1.,0.),30.,4)
C.convertPyTree2File(a, 'out2.cgns')
コード例 #2
0
def revolve():
    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
    # - axis -
    name = VARS[4].get()
    names = name.split(';')
    curve = []
    for v in names:
        v = v.lstrip()
        v = v.rstrip()
        sname = v.split('/', 1)
        bases = Internal.getNodesFromName1(CTK.t, sname[0])
        if bases != []:
            nodes = Internal.getNodesFromType1(bases[0], 'Zone_t')
            for z in nodes:
                if z[0] == sname[1]: curve.append(z)
    if len(curve) == 0:
        CTK.TXT.insert('START', 'Axis is incorrect.\n')
        CTK.TXT.insert('START', 'Error: ', 'Error')
        return

    teta = CTK.varsFromWidget(VARS[5].get(), type=1)
    if len(teta) != 1:
        CTK.TXT.insert('START', 'Revolve angle is incorrect.\n')
        CTK.TXT.insert('START', 'Error: ', 'Error')
        return
    teta = teta[0]

    Nteta = CTK.varsFromWidget(VARS[6].get(), type=2)
    if len(Nteta) != 1:
        CTK.TXT.insert('START', 'Number of points for revolve is incorrect.\n')
        CTK.TXT.insert('START', 'Error: ', 'Error')
        return
    Nteta = Nteta[0]

    # - Extrait 2 pts de l'axe -
    axis = curve[0]
    [xo, yo, zo] = C.getValue(axis, Internal.__GridCoordinates__, 0)

    dim = Internal.getZoneDim(axis)
    if dim[0] == 'Structured': np = dim[1] * dim[2] * dim[3]
    else: np = dim[1]
    [x1, y1, z1] = C.getValue(axis, Internal.__GridCoordinates__, np - 1)

    ntx = x1 - xo
    nty = y1 - yo
    ntz = z1 - zo

    # - Extrait rmod si il y en a
    if len(curve) > 1: rmod = curve[1]
    else: rmod = None

    nzs = CPlot.getSelectedZones()
    if nzs == []:
        CTK.TXT.insert('START', 'Selection is empty.\n')
        CTK.TXT.insert('START', 'Error: ', 'Error')
        return

    CTK.saveTree()
    fail = False
    errors = []
    for nz in nzs:
        nob = CTK.Nb[nz] + 1
        noz = CTK.Nz[nz]
        z = CTK.t[2][nob][2][noz]
        try:
            z = D.axisym(z, (xo, yo, zo), (ntx, nty, ntz), teta, Nteta, rmod)
            CTK.replace(CTK.t, nob, noz, z)
        except Exception as e:
            fail = True
            errors += [0, str(e)]

    if not fail:
        CTK.TXT.insert('START', 'Mesh revolved with axis.\n')
    else:
        Panels.displayErrors(errors, header='Error: revolve')
        CTK.TXT.insert('START', 'Revolution 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()
コード例 #3
0
import Generator.PyTree as G
import Converter.PyTree as C
import Transform.PyTree as T
import Geom.PyTree as D
import KCore.test as test


def F(x):
    return x


# test 1D structure (i-array) + variable en noeuds
a = D.circle((0, 0, 0), 1., 20., 60.)
a = C.addVars(a, 'F')
a = C.initVars(a, 'F', F, ['CoordinateY'])
a = D.axisym(a, (0, 0, 0), (0, 1, 0), 360., 50)
t = C.newPyTree(['Base', 2])
t[2][1][2].append(a)
test.testT(t, 1)

# test 2D structure (i,j-array) + variable en centres
a = G.cart((0., 0., 0.), (0.1, 0.1, 0.2), (10, 10, 1))
a = C.addVars(a, 'centers:F')
a = D.axisym(a, (1., 0., 0.), (0., 1., 0.), 30., 20)
t = C.newPyTree(['Base', 3])
t[2][1][2].append(a)
test.testT(t, 2)

# test BAR-array + variable
a = D.circle((0, 0, 0), 1., 20., 60., 10)
a = C.convertArray2Tetra(a)