コード例 #1
0
ファイル: Mpi.py プロジェクト: guillaume-florent/cassiopee-ce
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
# - 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)