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'
|