Beispiel #1
0
# - 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)
Beispiel #2
0
#-----
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.)
Beispiel #3
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()