File: TestCleanArrays.py

package info (click to toggle)
paraview 5.1.2%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 221,108 kB
  • ctags: 236,092
  • sloc: cpp: 2,416,026; ansic: 190,891; python: 99,856; xml: 81,001; tcl: 46,915; yacc: 5,039; java: 4,413; perl: 3,108; sh: 1,974; lex: 1,926; f90: 748; asm: 471; pascal: 228; makefile: 198; objc: 83; fortran: 31
file content (108 lines) | stat: -rw-r--r-- 3,857 bytes parent folder | download | duplicates (2)
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from __future__ import print_function

import vtk
from vtk.vtkPVVTKExtensionsRendering import vtkCleanArrays
cntrl = vtk.vtkMultiProcessController.GetGlobalController()
rank = cntrl.GetLocalProcessId()
numprocs = cntrl.GetNumberOfProcesses()

#-----------------------------------------------------------------------------
if rank == 0:
    print("Testing on non-composite dataset")

def get_dataset(pa=None,ca=None):
    sphere = vtk.vtkSphereSource()
    sphere.Update()

    data = sphere.GetOutputDataObject(0)
    data.GetPointData().Initialize()
    data.GetCellData().Initialize()

    if pa:
        array = vtk.vtkIntArray()
        array.SetName(pa)
        array.SetNumberOfTuples(data.GetNumberOfPoints())
        data.GetPointData().AddArray(array)

    if ca:
        array = vtk.vtkIntArray()
        array.SetName(ca)
        array.SetNumberOfTuples(data.GetNumberOfCells())
        data.GetCellData().AddArray(array)
    return data


data = get_dataset("PD-%d" % rank, "CD-%d" % rank)
cleanArrays = vtkCleanArrays()
cleanArrays.SetInputDataObject(data)
cleanArrays.SetController(cntrl)

# Test removing partial arrays.
cleanArrays.FillPartialArraysOff()
cleanArrays.Update()
result = cleanArrays.GetOutputDataObject(0)

# Each rank tests the next ranks data.
if numprocs > 1:
    assert result.GetPointData().GetArray("PD-%d" % ((rank+1)%numprocs)) is None and \
            result.GetCellData().GetArray("CD-%d" % ((rank+1)%numprocs)) is None

# Test filling partial arrays.
cleanArrays.FillPartialArraysOn()
cleanArrays.Update()
result = cleanArrays.GetOutputDataObject(0)

# Each rank tests the next ranks data.
assert result.GetPointData().GetNumberOfArrays() == numprocs and \
        result.GetCellData().GetNumberOfArrays() == numprocs

assert result.GetPointData().GetArray("PD-%d" % ((rank+1)%numprocs)) is not None and \
        result.GetCellData().GetArray("CD-%d" % ((rank+1)%numprocs)) is not None


#-----------------------------------------------------------------------------
if rank == 0:
    print("Testing on composite dataset")


#-----------------------------------------------------------------------------
# Dataset with identical arrays for non-empty datasets on all ranks.
mb = vtk.vtkMultiBlockDataSet()
mb.SetNumberOfBlocks(numprocs)
mb.SetBlock(rank, get_dataset(pa="pa", ca="ca"))

cleanArrays.SetInputDataObject(mb)
cleanArrays.FillPartialArraysOff()
cleanArrays.Update()
result = cleanArrays.GetOutputDataObject(0)
assert result.GetBlock(rank).GetPointData().GetNumberOfArrays() == 1 and \
        result.GetBlock(rank).GetCellData().GetNumberOfArrays() == 1

cleanArrays.FillPartialArraysOn()
cleanArrays.Update()
result = cleanArrays.GetOutputDataObject(0)
assert result.GetBlock(rank).GetPointData().GetNumberOfArrays() == 1 and \
        result.GetBlock(rank).GetCellData().GetNumberOfArrays() == 1

#-----------------------------------------------------------------------------
# Dataset with partial arrays for non-empty datasets on all ranks.
mb = vtk.vtkMultiBlockDataSet()
mb.SetNumberOfBlocks(2*numprocs)
mb.SetBlock(rank, get_dataset(pa="pa-%d" % rank, ca="ca-%d" % rank))
# Let's add an extra block with new arrays so the test can work even when
# numprocs == 1.
mb.SetBlock(numprocs + rank, get_dataset(pa="pa", ca="ca"))

cleanArrays.SetInputDataObject(mb)
cleanArrays.FillPartialArraysOff()
cleanArrays.Update()
result = cleanArrays.GetOutputDataObject(0)
assert result.GetBlock(rank).GetPointData().GetNumberOfArrays() == 0 and \
        result.GetBlock(rank).GetCellData().GetNumberOfArrays() == 0

cleanArrays.FillPartialArraysOn()
cleanArrays.Update()
result = cleanArrays.GetOutputDataObject(0)
assert result.GetBlock(rank).GetPointData().GetNumberOfArrays() == (numprocs+1) and \
        result.GetBlock(rank).GetCellData().GetNumberOfArrays() == (numprocs+1)
print("%d-Passed!" % rank)