Ejemplo n.º 1
0
def extractIsoLine():
    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

    field = VARS[0].get()
    value = VARS[2].get()

    try:
        value = float(value)
    except:
        value = 1.

    nzs = CPlot.getSelectedZones()
    CTK.saveTree()

    if nzs == []:
        z = Internal.getZones(CTK.t)
    else:
        z = []
        for nz in nzs:
            nob = CTK.Nb[nz] + 1
            noz = CTK.Nz[nz]
            z.append(CTK.t[2][nob][2][noz])

    isos = []
    fail = False
    errors = []
    for zone in z:
        try:
            i = P.isoLine(zone, field, value)
            isos.append(i)
        except Exception as e:
            fail = True
            errors += [0, str(e)]

    CTK.t = C.addBase2PyTree(CTK.t, 'CONTOURS', 1)
    bases = Internal.getNodesFromName1(CTK.t, 'CONTOURS')
    nob = C.getNobOfBase(bases[0], CTK.t)
    for i in isos:
        CTK.add(CTK.t, nob, -1, i)
    if (fail == False):
        CTK.TXT.insert('START', 'Isolines extracted.\n')
    else:
        Panels.displayErrors(errors, header='Error: Isolines')
        CTK.TXT.insert('START', 'Isolines 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()
Ejemplo n.º 2
0
# - isoLine (pyTree) -
import Post.PyTree as P
import Converter.PyTree as C
import Generator.PyTree as G
import Geom.PyTree as D
import KCore.test as test


def F(x, y):
    return x * x + y * y


# Test sur un champ en noeuds
a = G.cartTetra((0, 0, 0), (1, 1, 1), (10, 10, 1))
a = C.initVars(a, 'field', F, ['CoordinateX', 'CoordinateY'])
iso = P.isoLine(a, 'field', 15.)
test.testT(iso, 1)

# Test sur un champ en centres
b = G.cartTetra((0, 0, 0), (1, 1, 1), (10, 10, 1))
b = C.node2Center(b, ['CoordinateX', 'CoordinateY'])
b = C.initVars(b, 'centers:field', F,
               ['centers:CoordinateX', 'centers:CoordinateY'])
b = C.rmVars(b, ['centers:CoordinateX', 'centers:CoordinateY'])
iso = P.isoLine(b, 'centers:field', 15.)
t = C.newPyTree(['Base'])
t[2][1][2] += [b, iso]
#test.testA(iso, 2)
Ejemplo n.º 3
0
# - isoLine (pyTree) -
import Post.PyTree as P
import Converter.PyTree as C
import Generator.PyTree as G
import Geom.PyTree as D


def F(x, y):
    return x * x + y * y


a = G.cartTetra((0, 0, 0), (1, 1, 1), (10, 10, 1))
a = C.initVars(a, 'field', F, ['CoordinateX', 'CoordinateY'])

isos = []
min = C.getMinValue(a, 'field')
max = C.getMaxValue(a, 'field')
for v in range(20):
    value = min + (max - min) / 18. * v
    try:
        i = P.isoLine(a, 'field', value)
        isos.append(i)
    except:
        pass
t = C.newPyTree(['Base', 3, 'ISOS', 1])
t[2][1][2].append(a)
t[2][2][2] += isos
C.convertPyTree2File(t, 'out.cgns')
Ejemplo n.º 4
0
def drawIsoLines():
    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

    field = VARS[0].get()
    nlevels = VARS[1].get()

    try:
        nlevels = int(nlevels)
    except:
        levels = 30
    if nlevels < 2: nlevels = 2

    nzs = CPlot.getSelectedZones()
    CTK.saveTree()

    fmin = CTK.varsFromWidget(VARS[3].get(), type=1)
    if fmin == []: fmin = C.getMinValue(CTK.t, field)
    else: fmin = fmin[0]
    fmax = CTK.varsFromWidget(VARS[4].get(), type=1)
    if fmax == []: fmax = C.getMaxValue(CTK.t, field)
    else: fmax = fmax[0]
    if nzs == []:
        z = Internal.getZones(CTK.t)
    else:
        z = []
        for nz in nzs:
            nob = CTK.Nb[nz] + 1
            noz = CTK.Nz[nz]
            z.append(CTK.t[2][nob][2][noz])

    isos = []
    nlevels += 1  # pour etre coeherent avec les niveaux d'iso solides
    fail = False
    errors = []
    for v in range(nlevels):
        value = fmin + (fmax - fmin) / (nlevels - 1) * v
        for zone in z:
            try:
                i = P.isoLine(zone, field, value)
                isos.append(i)
            except Exception as e:
                fail = True
                errors += [0, str(e)]

    CTK.t = C.addBase2PyTree(CTK.t, 'CONTOURS', 1)
    bases = Internal.getNodesFromName1(CTK.t, 'CONTOURS')
    nob = C.getNobOfBase(bases[0], CTK.t)
    if isos != []:
        isos = T.join(isos)
        CTK.add(CTK.t, nob, -1, isos)
    if (fail == False):
        CTK.TXT.insert('START', 'Isolines extracted.\n')
    else:
        Panels.displayErrors(errors, header='Error: Isolines')
        CTK.TXT.insert('START', 'Isolines 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()