1 |
jongui |
1070 |
from esys.pyvisi import DataCollector, Scene, StreamLine, GlobalPosition |
2 |
|
|
from esys.pyvisi.constant import * |
3 |
|
|
import unittest, os |
4 |
|
|
from stat import ST_SIZE |
5 |
|
|
|
6 |
|
|
PYVISI_TEST_MESHES_PATH = "data_meshes/" |
7 |
|
|
PYVISI_TEST_STREAMLINE_IMAGES_PATH = "data_sample_images/streamline/" |
8 |
|
|
MIN_IMAGE_SIZE = 100 |
9 |
|
|
FILE_3D = "interior_3D.xml" |
10 |
|
|
|
11 |
|
|
X_SIZE = 400 |
12 |
|
|
Y_SIZE = 400 |
13 |
|
|
|
14 |
|
|
JPG_RENDERER = Renderer.OFFLINE_JPG |
15 |
|
|
|
16 |
|
|
class TestStreamLine: |
17 |
|
|
def tearDown(self): |
18 |
|
|
self.scene |
19 |
|
|
self.data_collector |
20 |
|
|
self.streamline |
21 |
|
|
|
22 |
|
|
def render(self, file): |
23 |
|
|
self.scene.render(image_name = \ |
24 |
|
|
PYVISI_TEST_STREAMLINE_IMAGES_PATH + file) |
25 |
|
|
|
26 |
|
|
self.failUnless(os.stat(PYVISI_TEST_STREAMLINE_IMAGES_PATH + \ |
27 |
|
|
file)[ST_SIZE] > MIN_IMAGE_SIZE) |
28 |
|
|
|
29 |
|
|
class TestStreamLinePointSource(unittest.TestCase, TestStreamLine): |
30 |
|
|
def setUp(self): |
31 |
|
|
self.scene = \ |
32 |
|
|
Scene(renderer = JPG_RENDERER, num_viewport = 1, |
33 |
|
|
x_size = X_SIZE, y_size = Y_SIZE) |
34 |
|
|
|
35 |
|
|
self.data_collector = DataCollector(source = Source.XML) |
36 |
|
|
self.data_collector.setFileName(file_name = \ |
37 |
|
|
PYVISI_TEST_MESHES_PATH + FILE_3D) |
38 |
|
|
|
39 |
|
|
self.streamline = StreamLine(scene = self.scene, |
40 |
|
|
data_collector = self.data_collector, |
41 |
|
|
viewport = Viewport.SOUTH_WEST, color_mode = ColorMode.VECTOR, |
42 |
|
|
lut = Lut.COLOR, cell_to_point = False, outline = True) |
43 |
|
|
|
44 |
|
|
def testPointSource(self): |
45 |
|
|
self.streamline.setPointSourceRadius(0.3) |
46 |
|
|
self.streamline.setPointSourceCenter(GlobalPosition(1.3, 1.3, 0.4)) |
47 |
|
|
self.streamline.setPointSourceNumberOfPoints(5) |
48 |
|
|
self.render("TestStreamLinePointSource.jpg") |
49 |
|
|
|
50 |
|
|
class TestStreamLineModule(unittest.TestCase, TestStreamLine): |
51 |
|
|
def setUp(self): |
52 |
|
|
self.scene = \ |
53 |
|
|
Scene(renderer = JPG_RENDERER, num_viewport = 1, |
54 |
|
|
x_size = X_SIZE, y_size = Y_SIZE) |
55 |
|
|
|
56 |
|
|
self.data_collector = DataCollector(source = Source.XML) |
57 |
|
|
self.data_collector.setFileName(file_name = \ |
58 |
|
|
PYVISI_TEST_MESHES_PATH + FILE_3D) |
59 |
|
|
|
60 |
|
|
self.streamline = StreamLine(scene = self.scene, |
61 |
|
|
data_collector = self.data_collector, |
62 |
|
|
viewport = Viewport.SOUTH_WEST, color_mode = ColorMode.VECTOR, |
63 |
|
|
lut = Lut.COLOR, cell_to_point = False, outline = True) |
64 |
|
|
|
65 |
|
|
def testStreamLineModule(self): |
66 |
|
|
self.streamline.setMaximumPropagationTime(20) |
67 |
|
|
self.streamline.setStepLength(0.1) |
68 |
|
|
self.streamline.setIntegrationStepLength(0.1) |
69 |
|
|
self.streamline.setIntegrationToBothDirections() |
70 |
|
|
self.render("TestStreamLineModule.jpg") |
71 |
|
|
|
72 |
|
|
class TestStreamLineTube(unittest.TestCase, TestStreamLine): |
73 |
|
|
def setUp(self): |
74 |
|
|
self.scene = \ |
75 |
|
|
Scene(renderer = JPG_RENDERER, num_viewport = 1, |
76 |
|
|
x_size = X_SIZE, y_size = Y_SIZE) |
77 |
|
|
|
78 |
|
|
self.data_collector = DataCollector(source = Source.XML) |
79 |
|
|
self.data_collector.setFileName(file_name = \ |
80 |
|
|
PYVISI_TEST_MESHES_PATH + FILE_3D) |
81 |
|
|
|
82 |
|
|
self.streamline = StreamLine(scene = self.scene, |
83 |
|
|
data_collector = self.data_collector, |
84 |
|
|
viewport = Viewport.SOUTH_WEST, color_mode = ColorMode.VECTOR, |
85 |
|
|
lut = Lut.COLOR, cell_to_point = False, outline = True) |
86 |
|
|
|
87 |
|
|
def testSetTubeRadiusToVaryByVector(self): |
88 |
|
|
self.streamline.setTubeRadius(0.05) |
89 |
|
|
self.streamline.setTubeNumberOfSides(3) |
90 |
|
|
self.streamline.setTubeRadiusToVaryByVector() |
91 |
|
|
self.render("TestStreamLineTube_testSetTubeRadiusToVaryByVector.jpg") |
92 |
|
|
|
93 |
|
|
def testSetTubeRadiusToVaryBeScalar(self): |
94 |
|
|
self.streamline.setTubeRadiusToVaryByScalar() |
95 |
|
|
self.render("TestStreamLineTube_testSetTubeRadiusToVaryByScalar.jpg") |
96 |
|
|
|
97 |
|
|
|
98 |
|
|
############################################################################## |
99 |
|
|
|
100 |
|
|
|
101 |
|
|
if __name__ == '__main__': |
102 |
|
|
suite = unittest.TestSuite() |
103 |
|
|
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestStreamLinePointSource)) |
104 |
|
|
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestStreamLineModule)) |
105 |
|
|
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestStreamLineTube)) |
106 |
|
|
unittest.TextTestRunner(verbosity=2).run(suite) |
107 |
|
|
|