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()
# - 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')
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)
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) #
# - 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)
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)
# - 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]
# - 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) #-----