File: ParallelCone.py

package info (click to toggle)
vtk7 7.1.1%2Bdfsg2-8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 127,396 kB
  • sloc: cpp: 1,539,584; ansic: 124,382; python: 78,038; tcl: 47,013; xml: 8,142; yacc: 5,040; java: 4,439; perl: 3,132; lex: 1,926; sh: 1,500; makefile: 126; objc: 83
file content (89 lines) | stat: -rw-r--r-- 2,244 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/env python
from __future__ import print_function
from vtk import *
import sys
import os
import time

myProcId = 0
numProcs = 1

compManager = vtkCompositeRenderManager()
if compManager.GetController():
    myProcId = compManager.GetController().GetLocalProcessId()
    numProcs = compManager.GetController().GetNumberOfProcesses()

try:
    v = vtkMesaRenderer()
    if myProcId > 0:
        _graphics_fact=vtkGraphicsFactory()
        _graphics_fact.SetUseMesaClasses(1)
        del _graphics_fact
    del v
except Exception as bar:
    print("No mesa", bar)



#print("I am process: %d / %d" % (myProcId, numProcs))

# create a rendering window and renderer
ren = vtkRenderer()
renWin = vtkRenderWindow()
renWin.AddRenderer(ren)
renWin.SetSize(300,300)

#if myProcId:
#    renWin.OffScreenRenderingOn()


# create an actor and give it cone geometry
cone = vtkConeSource()
cone.SetResolution(8)
coneMapper = vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())
coneActor = vtkActor()
coneActor.SetMapper(coneMapper)

# assign our actor to the renderer
ren.AddActor(coneActor)

renWin.SetWindowName("I am node %d" % myProcId)

if numProcs > 1:
    compManager.SetRenderWindow(renWin)
    compManager.InitializePieces()

#print("Pid of process %d is %d" % (myProcId, os.getpid()))

def ExitMaster(a, b):
    #print("ExitMaster; I am %d / %d" % ( myProcId, numProcs ))
    if numProcs > 1 and myProcId == 0:
        #print("Trigger exit RMI on all satellite nodes")
        for a in range(1, numProcs):
            #print("Trigger exit in satellite node %d" % a)
            contr = compManager.GetController()
            contr.TriggerRMI(a, contr.GetBreakRMITag())

if myProcId == 0:
    iren = vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)
    iren.AddObserver("ExitEvent", ExitMaster)
    iren.Initialize()
    iren.Start()
    #renWin.Render()
    #renWin.Render()
    #renWin.Render()
else:
    compManager.InitializeRMIs()
    compManager.GetController().ProcessRMIs()
    compManager.GetController().Finalize()
    #print "**********************************"
    #print "Done on the slave node"
    #print "**********************************"
    sys.exit()

ExitMaster(0, 0)

#time.sleep(5)