def computeGrad():
    if CTK.t == []: return
    varname = VARS[2].get()
    CTK.saveTree()
    try:
        CTK.t = P.computeGrad(CTK.t, varname)
    except Exception as e:
        Panels.displayErrors([0, str(e)], header='Error: computeGrad')
        CTK.TXT.insert('START', 'Gradient computation failed.\n')
        CTK.TXT.insert('START', 'Error: ', 'Error')
        return
    CTK.TXT.insert('START', 'Gradient of %s computed.\n' % varname)
    CTK.TKTREE.updateApp()
    CTK.display(CTK.t)
    if CTK.TKPLOTXY is not None: CTK.TKPLOTXY.updateApp()
Beispiel #2
0
# - prepareIBMData (pyTree) -
import Converter.PyTree as C
import Generator.PyTree as G
import Connector.ToolboxIBM as IBM
import Post.PyTree as P
import Geom.PyTree as D
import Dist2Walls.PyTree as DTW
import KCore.test as test
N = 51
a = G.cart((0, 0, 0), (1. / (N - 1), 1. / (N - 1), 1. / (N - 1)), (N, N, N))
body = D.sphere((0.5, 0, 0), 0.1, N=20)
t = C.newPyTree(['Base', a])
tb = C.newPyTree(['Base', body])
tb = C.addState(tb, 'EquationDimension', 3)
tb = C.addState(tb, 'GoverningEquations', 'NSTurbulent')
t = DTW.distance2Walls(t, bodies=tb, loc='centers', type='ortho')
t = P.computeGrad(t, 'centers:TurbulentDistance')
t, tc = IBM.prepareIBMData(t, tb, DEPTH=2, frontType=1)
C.convertPyTree2File(t, 't.cgns')
C.convertPyTree2File(t, 'tc.cgns')
Beispiel #3
0

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


#-----
# 1D
#-----
ni = 30
m = G.cart((0, 0, 0), (10. / (ni - 1), 1, 1), (ni, 1, 1))
m = C.initVars(m, 'Density', F, ['CoordinateX', 'CoordinateY'])
t = C.newPyTree(['Base', 1])
t[2][1][2].append(m)
t[2][1] = C.addState(t[2][1], 'Mach', 0.6)
t = P.computeGrad(t, 'Density')
t = C.initVars(t, 'centers:Pressure', F, ['gradxDensity', 'gradyDensity'])
t = P.computeNormGrad(t, 'centers: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', F, ['CoordinateX', 'CoordinateY'])
m = C.addBC2Zone(m, 'ov', 'BCOverlap', 'imin')
t = C.newPyTree(['Base', 2])
t[2][1][2].append(m)
t[2][1] = C.addState(t[2][1], 'Mach', 0.6)
Beispiel #4
0
s = G.cylinder((0, 0, -1), 0, 0.4, 360, 0, 4, (30, 30, 5))
s = C.convertArray2Tetra(s)
s = T.join(s)
s = P.exteriorFaces(s)
t = C.newPyTree(['Base'])
t[2][1][2] = [a]
# Blanking
bodies = [[s]]
BM = N.array([[1]], N.int32)
t = X.blankCells(t, bodies, BM, blankingType='center_in')
t = X.setHoleInterpolatedPoints(t, depth=-2)
# Dist2Walls
t = DTW.distance2Walls(t, [s], type='ortho', loc='centers', signed=1)
t = C.center2Node(t, 'centers:TurbulentDistance')
# Gradient de distance localise en centres => normales
t = P.computeGrad(t, 'TurbulentDistance')
t = I.initConst(t, MInf=0.2, loc='centers')
tc = C.node2Center(t)
t = X.setIBCData(t, tc, loc='centers', storage='direct')

#test avec arbre tc compact
zones = Internal.getNodesFromType2(t, 'Zone_t')
X.miseAPlatDonnorTree__(zones, t, procDict=None)

t2 = X.setInterpTransfers(t, tc, bcType=0, varType=1)
test.testT(t2, 1)

t2 = X.setInterpTransfers(t, tc, bcType=1, varType=1)
test.testT(t2, 2)

#
Beispiel #5
0
# - computeWallShearStress (pyTree) -
import Generator.PyTree as G
import Converter.PyTree as C
import Transform.PyTree as T
import Post.PyTree as P
import KCore.test as test

a = G.cart((0, 0, 0), (1, 1, 1), (50, 50, 1))
t = C.newPyTree(['Base', a])
C._addState(t, state='EquationDimension', value=3)
C._addState(t, adim='adim1')
C._initVars(t, '{VelocityX}=0.2*{CoordinateX}**2')
C._initVars(t, '{VelocityY}=0.3*{CoordinateY}*{CoordinateX}')
C._initVars(t, 'VelocityZ', 0.)
for var in ['VelocityX', 'VelocityY', 'VelocityZ']:
    t = P.computeGrad(t, var)
    t = C.node2Center(t, var)
C._initVars(t, 'centers:Density', 1.)
C._initVars(t, 'centers:EnergyStagnationDensity', 1.)
C._initVars(t, 'centers:Temperature', 1.)
tw = P.computeWallShearStress(t)
test.testT(tw, 1)
#
t = C.newPyTree(['Base', a])
C._addState(t, state='EquationDimension', value=3)
C._addState(t, adim='adim1')
C._initVars(t, '{VelocityX}=0.2*{CoordinateX}**2')
C._initVars(t, '{VelocityY}=0.3*{CoordinateY}*{CoordinateX}')
C._initVars(t, 'VelocityZ', 0.)
for var in ['VelocityX', 'VelocityY', 'VelocityZ']:
    t = P.computeGrad(t, var)
Beispiel #6
0

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


#-----
# 1D
#-----
ni = 30
m = G.cart((0, 0, 0), (10. / (ni - 1), 1, 1), (ni, 1, 1))
m = C.initVars(m, 'Density', F, ['CoordinateX', 'CoordinateY'])
t = C.newPyTree(['Base', 1])
t[2][1][2].append(m)
t[2][1] = C.addState(t[2][1], 'Mach', 0.6)
t = P.computeGrad(t, 'Density')
t = C.initVars(t, 'centers:Pressure', F, ['gradxDensity', 'gradyDensity'])
t = P.computeGrad(t, 'centers: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', F, ['CoordinateX', 'CoordinateY'])
m = C.addBC2Zone(m, 'ov', 'BCOverlap', 'imin')
t = C.newPyTree(['Base', 2])
t[2][1][2].append(m)
t[2][1] = C.addState(t[2][1], 'Mach', 0.6)
Beispiel #7
0
# - computeGrad (pyTree) -
import Converter.PyTree as C
import Post.PyTree as P
import Generator.PyTree as G

ni = 30
nj = 40
nk = 10
m = G.cart((0, 0, 0), (10. / (ni - 1), 10. / (nj - 1), 1), (ni, nj, nk))
m = C.initVars(m, '{Density}=2*{CoordinateX}+{CoordinateX}*{CoordinateY}')
m = P.computeGrad(m, 'Density')
C.convertPyTree2File(m, 'out.cgns')
# - getAllIBMPoints (pyTree) -
import Converter.PyTree as C
import Generator.PyTree as G
import Connector.ToolboxIBM as IBM
import Post.PyTree as P
import Converter
import KCore.test as test
N = 21
a = G.cart((0, 0, 0), (1, 1, 1), (N, N, N))
C._initVars(a, '{centers:TurbulentDistance}={centers:CoordinateZ}')
C._initVars(
    a,
    '{centers:cellN}=({centers:CoordinateZ}>0.8)*1.+({centers:CoordinateZ}<0.8)*2.'
)
a = P.computeGrad(a, 'centers:TurbulentDistance')
res = IBM.getAllIBMPoints(a, loc='centers', hi=0., he=2., tb=None)
correctedPts = list(res[0].values())[0]
wallPts = list(res[1].values())[0]
interpPts = list(res[2].values())[0]
test.testA(correctedPts + wallPts)
test.testA(interpPts, 12)
N = 21
a = G.cart((0, 0, 0), (1, 1, 1), (N, N, N))
C._initVars(a, '{TurbulentDistance}={CoordinateZ}')
C._initVars(a, '{cellN}=({CoordinateZ}>0.8)*1.+({CoordinateZ}<0.8)*2.')
a = P.computeGrad(a, 'TurbulentDistance')
a = C.center2Node(a, 'FlowSolution#Centers')
res = IBM.getAllIBMPoints(a, loc='nodes', hi=0., he=2., tb=None)
correctedPts = list(res[0].values())[0]
wallPts = list(res[1].values())[0]
interpPts = list(res[2].values())[0]
Beispiel #9
0
# - computeGrad (pyTree) -
import Converter.PyTree as C
import Post.PyTree as P
import Generator.PyTree as G
import KCore.test as test

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

#-----
# 1D
#-----
ni = 30
m = G.cart((0,0,0), (10./(ni-1),1,1), (ni,1,1))
m = C.initVars(m, 'Density', F, ['CoordinateX','CoordinateY'])
m = P.computeGrad(m,'Density')
m = C.initVars(m, 'centers:Pressure', F, ['centers:gradxDensity','centers:gradyDensity'])
m = P.computeGrad(m, 'centers:Pressure')
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', F, ['CoordinateX', 'CoordinateY'])
m = P.computeGrad(m, 'Density')
m = C.initVars(m, 'centers:Pressure', F, ['centers:gradxDensity','centers:gradyDensity'])
m = P.computeGrad(m, 'centers:Pressure')
test.testT(m,2)

#-----