File: verifyparticlepath.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 (91 lines) | stat: -rw-r--r-- 3,192 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
import sys

print 'running the test script with args', sys.argv

if len(sys.argv) != 2:
    print 'need to pass in the test directory location'
    sys.exit(1)


# the velocity is [y*t, 0, 0] and the time step length is 0.018
# the beginning x-location for the seeds is 1
# the y location for the seeds are [1, 11.5, 22, 32.5, 43, 53.5, 64]
# the z location for the seeds is 30
# the analytical locations of the initially injected seeds are 1+y*time*time/2
# the seeds are reinjected at time step 70 (time 1.26) and their
# analytical locations are 1+y*(time*time-1.26*1.26)/2

# in parallel when seeds are migrated to different processes there
# is a slight loss of accuracy due to using a first order time
# integration method instead of vtkRungeKutta4.cxx.

from paraview.simple import *
r = XMLPartitionedPolydataReader(FileName=sys.argv[1]+'/particles_40.pvtp')
r.UpdatePipeline()
bounds = r.GetDataInformation().DataInformation.GetBounds()
if bounds[0] < 1.25 or bounds[0] > 1.27 or \
   bounds[1] < 17.5 or bounds[1] > 17.7 or \
   bounds[2] < .9 or bounds[2] > 1.1 or \
   bounds[3] < 63.9 or bounds[3] > 64.1 or \
   bounds[4] < 29.9 or bounds[4] > 30.1 or \
   bounds[5] < 29.9 or bounds[5] > 30.1:
    print 'Time step 40: wrong particle bounds', bounds
    sys.exit(1)


g = Glyph()
g.GlyphMode = 'All Points'
g.GlyphType = '2D Glyph'
g.GlyphType.GlyphType = 'Vertex'

t = Threshold()
t.Scalars = ['POINTS', 'ParticleAge']
t.ThresholdRange = [0.71, 0.73]
t.UpdatePipeline()

grid = servermanager.Fetch(t)
if grid.GetNumberOfPoints() != 7:
    print 'Time step 40: wrong number of points', grid.GetNumberOfPoints()
    sys.exit(1)

r.FileName = sys.argv[1]+'/particles_80.pvtp'

# threshold to get the seeds that were originally injected only
t.ThresholdRange = [1.43, 1.45]
t.UpdatePipeline()
bounds = t.GetDataInformation().DataInformation.GetBounds()
if bounds[0] < 2. or bounds[0] > 2.1 or \
   bounds[1] < 67.3 or bounds[1] > 67.4 or \
   bounds[2] < .9 or bounds[2] > 1.1 or \
   bounds[3] < 63.9 or bounds[3] > 64.1 or \
   bounds[4] < 29.9 or bounds[4] > 30.1 or \
   bounds[5] < 29.9 or bounds[5] > 30.1:
    print 'Time step 80: wrong particle bounds for initial injected particles', bounds
    sys.exit(1)

grid = servermanager.Fetch(t)
if grid.GetNumberOfPoints() != 7:
    print 'Time step 80: wrong number of points for initial injected particles', grid.GetNumberOfPoints()
    sys.exit(1)

# threshold to get the seeds that were injected at time step 70
t.Scalars = ['POINTS', 'InjectionStepId']
t.ThresholdRange = [69, 71]
t.UpdatePipeline()

bounds = t.GetDataInformation().DataInformation.GetBounds()
if bounds[0] < 1.23 or bounds[0] > 1.25 or \
   bounds[1] < 16.5 or bounds[1] > 16.7 or \
   bounds[2] < .9 or bounds[2] > 1.1 or \
   bounds[3] < 63.9 or bounds[3] > 64.1 or \
   bounds[4] < 29.9 or bounds[4] > 30.1 or \
   bounds[5] < 29.9 or bounds[5] > 30.1:
    print 'Time step 80: wrong particle bounds for reinjected particles', bounds
    sys.exit(1)

grid = servermanager.Fetch(t)
if grid.GetNumberOfPoints() != 7:
    print 'Time step 80: wrong number of points for reinjected particles', grid.GetNumberOfPoints()
    sys.exit(1)

print 'test passed'