Salome HOME
Merge from V6_main_20120808 08Aug12
[modules/hexablock.git] / src / TEST_PY / test_unit / test_asso_lines.py
1 # -*- coding: latin-1 -*-\r
2 # Copyright (C) 2009-2012  CEA/DEN, EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 # Hexa : Association par lignes\r
22 \r
23 import hexablock\r
24 import os\r
25 import geompy\r
26 \r
27 #---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8\r
28 #\r
29 #   .             ed_nord1     ed_nord2\r
30 #   .          v_nw        v_n         v_ne\r
31 #              v9          v10         v11\r
32 #   1           +----e18----+----e19----+\r
33 #   .           |           |           |\r
34 #   .           |           |           |\r
35 #   0 ed_west  e13          o          e17  ed_est\r
36 #   .           |           |           |\r
37 #   .           |           |           |\r
38 #  -1           +----e14----+----e16----+\r
39 #   .          v6          v10          v8\r
40 #   .          v_sw        v_s          v_se\r
41 #   .              ed_sud1     ed_sud2\r
42 #   .\r
43 #   +..........-2...........0...........2...............\r
44 \r
45 global  ed_west, ed_est, ed_nord1, ed_nord2, ed_sud1, ed_sud2\r
46 global  v_sw, v_s , v_se, v_nw, v_n , v_ne\r
47 global  p_w, p_e, p_n, p_s, p_n1, p_n2, p_s1, p_s2, p_nw, p_sw, p_ne, p_se\r
48 global  arc_s, arc_e, arc_n, arc_w, arc_n1, arc_n2, arc_s1, arc_s2\r
49 \r
50 \r
51 # ======================================================= init_globale\r
52 def init_globale (name) :\r
53 \r
54     global  ed_west, ed_est, ed_nord1, ed_nord2, ed_sud1, ed_sud2\r
55     global  v_sw, v_s , v_se, v_nw, v_n , v_ne\r
56     global  p_w, p_e, p_n, p_s, p_n1, p_n2, p_s1, p_s2, p_nw, p_sw, p_ne, p_se\r
57     global  arc_s, arc_e, arc_n, arc_w, arc_n1, arc_n2, arc_s1, arc_s2\r
58 \r
59     nom  = name\r
60     doc  = hexablock.addDocument (nom)\r
61 \r
62     orig = doc.addVertex (-2, -1, -1)\r
63     vx   = doc.addVector (2,0,0)\r
64     vy   = doc.addVector (0,2,0)\r
65     vz   = doc.addVector (0,0,2)\r
66     grid = doc.makeCartesian  (orig, vx, vy, vz, 2, 1, 1) \r
67 \r
68     nz = 1\r
69     vz = 1.0\r
70 \r
71     ed_west  = grid.getEdgeJ (0, 0, nz)\r
72     ed_est   = grid.getEdgeJ (2, 0, nz)\r
73     ed_nord1 = grid.getEdgeI (0, 1, nz)\r
74     ed_nord2 = grid.getEdgeI (1, 1, nz)\r
75     ed_sud1  = grid.getEdgeI (0, 0, nz)\r
76     ed_sud2  = grid.getEdgeI (1, 0, nz)\r
77 \r
78     v_sw    = grid.getVertexIJK (0, 0, nz)\r
79     v_s     = grid.getVertexIJK (1, 0, nz)\r
80     v_se    = grid.getVertexIJK (2, 0, nz)\r
81 \r
82     v_nw    = grid.getVertexIJK (0, 1, nz)\r
83     v_n     = grid.getVertexIJK (1, 1, nz)\r
84     v_ne    = grid.getVertexIJK (2, 1, nz)\r
85 \r
86     doc.saveVtk (nom + ".vtk");\r
87     ## ______________________________________________________________ Geom\r
88 \r
89     p_w   = geompy.MakeVertex (-2.55,  0, vz)\r
90     p_e   = geompy.MakeVertex ( 2.55,  0, vz)\r
91     p_n   = geompy.MakeVertex ( 0,  2.0, vz)\r
92     p_s   = geompy.MakeVertex ( 0, -2.0, vz)\r
93 \r
94     p_n1  = geompy.MakeVertex ( 0.5,  2.0, vz)\r
95     p_n2  = geompy.MakeVertex (-0.5,  2.0, vz)\r
96     p_s1  = geompy.MakeVertex (-0.5, -2.0, vz)\r
97     p_s2  = geompy.MakeVertex ( 0.5, -2.0, vz)\r
98 \r
99     p_nw  = geompy.MakeVertex (-2,  1, vz)\r
100     p_sw  = geompy.MakeVertex (-2, -1, vz)\r
101     p_ne  = geompy.MakeVertex ( 2,  1, vz)\r
102     p_se  = geompy.MakeVertex ( 2, -1, vz)\r
103 \r
104     arc_s = geompy.MakeArc (p_sw, p_s, p_se)\r
105     arc_e = geompy.MakeArc (p_se, p_e, p_ne)\r
106     arc_n = geompy.MakeArc (p_ne, p_n, p_nw)\r
107     arc_w = geompy.MakeArc (p_nw, p_w, p_sw)\r
108 \r
109     arc_n1 = geompy.MakeArc (p_ne, p_n1, p_n)\r
110     arc_n2 = geompy.MakeArc (p_n,  p_n2, p_nw)\r
111     arc_s1 = geompy.MakeArc (p_sw, p_s1, p_s)\r
112     arc_s2 = geompy.MakeArc (p_s,  p_s2, p_se)\r
113 \r
114     return doc\r
115 \r
116 # ======================================================= test_asso_mano\r
117 def test_asso_mano () :\r
118 \r
119     doc = init_globale ("asso_mano")\r
120 \r
121     ed_west.addAssociation (arc_w, 0, 1)\r
122     ed_est .addAssociation (arc_e, 0, 1)\r
123 \r
124     v_n.setAssociation (p_n)\r
125     ed_nord2.addAssociation (arc_n1, 0.0, 1.0)\r
126     ed_nord1.addAssociation (arc_n2, 0.0, 1.0)\r
127 \r
128     v_s.setAssociation (p_s)\r
129     ##  ed_sud1.addAssociation (arc_s, 0.0, 0.5)\r
130     ##  ed_sud2.addAssociation (arc_s, 0.5, 1.0)\r
131 \r
132     ed_sud1.addAssociation (arc_s1, 0.0, 1.0)\r
133     ed_sud2.addAssociation (arc_s2, 0.0, 1.0)\r
134 \r
135     return doc\r
136 \r
137 # ======================================================= test_asso_closed\r
138 def test_asso_closed () :\r
139 \r
140     doc = init_globale ("asso_closed")\r
141 \r
142     les_edges = [ ed_sud1, ed_sud2, ed_est, ed_nord1, ed_nord2,  ed_west ]\r
143     les_arcs  = [ arc_s1,  arc_s2,  arc_e,  arc_n1,   arc_n2,    arc_w ]\r
144 \r
145     doc.associateClosedLine (v_sw, les_edges[0], les_edges[1:], \r
146                                    les_arcs [0], 0.0, False, les_arcs[1:])\r
147     return doc\r
148 \r
149 # ======================================================= test_asso_closed_inv\r
150 def test_asso_closed_inv () :\r
151 \r
152     doc = init_globale ("asso_closed_inv")\r
153 \r
154     les_edges = [ ed_sud1, ed_sud2, ed_est, ed_nord1, ed_nord2,  ed_west ]\r
155     les_arcs  = [ arc_s1,  arc_s2,  arc_e,  arc_n1,   arc_n2,    arc_w ]\r
156 \r
157     doc.associateClosedLine (v_s , les_edges[0], les_edges[1:], \r
158                                    les_arcs [0], 1.0, True, les_arcs[1:])\r
159     return doc\r
160 \r
161 # ======================================================= test_asso_opened\r
162 def test_asso_opened () :\r
163 \r
164     doc = init_globale ("asso_opened")\r
165 \r
166     les_edges = [ ed_sud2, ed_est, ed_nord2 ]\r
167     les_arcs  = [ arc_s,   arc_e,  arc_n ]\r
168 \r
169     doc.associateOpenedLine (les_edges[0], les_edges[1:], \r
170                              les_arcs [0], 0.5, les_arcs[1:], 0.5)\r
171     return doc\r
172 \r
173 # ================================================================= Begin\r
174 \r
175 doc = test_asso_closed_inv  ()\r
176 \r
177 law = doc.addLaw("Uniform", 3)\r
178 \r
179 for j in range(doc.countPropagation()):\r
180     propa = doc.getPropagation(j)\r
181     propa.setLaw(law) \r
182 \r
183 mesh_hexas = hexablock.mesh (doc)\r
184 \r
185 \r