def extractMesh(t, extractionMesh, order=2, extrapOrder=1, constraint=40., tol=1.e-6, mode='robust', hook=None, graph=None): if graph is None: tb = Cmpi.createBBoxTree(t) tb2 = Cmpi.createBBoxTree(extractionMesh) graph = Cmpi.computeGraph(tb, type='bbox3', t2=tb2) tl = Cmpi.addXZones(t, graph) tl = Cmpi.convert2PartialTree(tl) ext = Cmpi.convert2PartialTree(extractionMesh) # print info zones = Internal.getZones(tl) print('Rank %d has %d source zones.' % (Cmpi.rank, len(zones))) ext = P.extractMesh(tl, ext, order=order, extrapOrder=extrapOrder, constraint=constraint, tol=tol, mode=mode, hook=hook) return ext
def optimizeOverlap(t, double_wall=0, priorities=[], graph=None, intersectionsDict=None): if graph is None: tb = Cmpi.createBBoxTree(t) graph = Cmpi.computeGraph(tb, type='bbox2', intersectionsDict=intersectionsDict) tl = Cmpi.addXZones(t, graph) tl = Cmpi.convert2PartialTree(tl) # print info zones = Internal.getZones(tl) #print 'Rank %d has %d zones.'%(Cmpi.rank, len(zones)) tl = X.optimizeOverlap(tl, double_wall, priorities, intersectionsDict) tl = Cmpi.rmXZones(tl) return tl
def redispatch(t, graph=None): if graph is None: graph = Cmpi.computeGraph(t, type='proc') procs = D2.getProcDict(t) t = Cmpi.addXZones(t, graph) # Enleve les zones envoyees zones = Internal.getZones(t) for z in zones: tag = Internal.getNodesFromName1(z, 'XZone') if len(tag) == 0: if procs[z[0]] != Cmpi.rank: (p, c) = Internal.getParentOfNode(t, z) del p[2][c] else: # enleve le noeud tag XZone (p, c) = Internal.getParentOfNode(z, tag[0]) del p[2][c] return t
# - addXZones (pyTree) - import Converter.PyTree as C import Converter.Mpi as Cmpi import Distributor2.PyTree as Distributor2 import Generator.PyTree as G import KCore.test as test # Cree le fichier test if (Cmpi.rank == 0): a = G.cart( (0,0,0), (1,1,1), (10,10,10) ) b = G.cart( (9,0,0), (1,1,1), (10,10,10) ) t = C.newPyTree(['Base',a,b]) C.convertPyTree2File(t, 'test.cgns') Cmpi.barrier() # Relit des zones par procs t = Cmpi.convertFile2SkeletonTree('test.cgns') (t, dic) = Distributor2.distribute(t, NProc=Cmpi.size, algorithm='fast') t = Cmpi.readZones(t, 'test.cgns', proc=Cmpi.rank) # Cree le bbox tree tb = Cmpi.createBBoxTree(t) # Cree le graph graph = Cmpi.computeGraph(tb) # Add X Zones t = Cmpi.addXZones(t, graph) if (Cmpi.rank == 0): test.testT(t, 1)