graph_build.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. /**
  2. * @file tests/boost_graph/partitioning/graph_build.cpp
  3. * @author The PARADEVS Development Team
  4. * See the AUTHORS or Authors.txt file
  5. */
  6. /*
  7. * PARADEVS - the multimodeling and simulation environment
  8. * This file is a part of the PARADEVS environment
  9. *
  10. * Copyright (C) 2013 ULCO http://www.univ-litoral.fr
  11. *
  12. * This program is free software: you can redistribute it and/or modify
  13. * it under the terms of the GNU General Public License as published by
  14. * the Free Software Foundation, either version 3 of the License, or
  15. * (at your option) any later version.
  16. *
  17. * This program is distributed in the hope that it will be useful,
  18. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. * GNU General Public License for more details.
  21. *
  22. * You should have received a copy of the GNU General Public License
  23. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  24. */
  25. #include <tests/boost_graph/partitioning/graph_build.hpp>
  26. #include <tests/corsen/lib/Corsen.hpp>
  27. namespace paradevs { namespace tests { namespace boost_graph {
  28. void build_graph(UnorientedGraph& ug, OrientedGraph& og)
  29. {
  30. /*
  31. * construction graphe Oriente
  32. */
  33. vertex_to v0 = boost::add_vertex(og);
  34. vertex_to v1 = boost::add_vertex(og);
  35. vertex_to v2 = boost::add_vertex(og);
  36. vertex_to v3 = boost::add_vertex(og);
  37. vertex_to v4 = boost::add_vertex(og);
  38. vertex_to v5 = boost::add_vertex(og);
  39. vertex_to v6 = boost::add_vertex(og);
  40. vertex_to v7 = boost::add_vertex(og);
  41. vertex_to v8 = boost::add_vertex(og);
  42. vertex_to v9 = boost::add_vertex(og);
  43. vertex_to v10 = boost::add_vertex(og);
  44. vertex_to v11 = boost::add_vertex(og);
  45. vertex_to v12 = boost::add_vertex(og);
  46. vertex_to v13 = boost::add_vertex(og);
  47. vertex_to v14 = boost::add_vertex(og);
  48. vertex_to v15 = boost::add_vertex(og);
  49. vertex_to v16 = boost::add_vertex(og);
  50. vertex_to v17 = boost::add_vertex(og);
  51. vertex_to v18 = boost::add_vertex(og);
  52. vertex_to v19 = boost::add_vertex(og);
  53. vertex_to v20 = boost::add_vertex(og);
  54. vertex_to v21 = boost::add_vertex(og);
  55. vertex_to v22 = boost::add_vertex(og);
  56. vertex_to v23 = boost::add_vertex(og);
  57. vertex_to v24 = boost::add_vertex(og);
  58. vertex_to v25 = boost::add_vertex(og);
  59. vertex_to v26 = boost::add_vertex(og);
  60. vertex_to v27 = boost::add_vertex(og);
  61. vertex_to v28 = boost::add_vertex(og);
  62. vertex_to v29 = boost::add_vertex(og);
  63. vertex_to v30 = boost::add_vertex(og);
  64. vertex_to v31 = boost::add_vertex(og);
  65. vertex_to v32 = boost::add_vertex(og);
  66. vertex_to v33 = boost::add_vertex(og);
  67. vertex_to v34 = boost::add_vertex(og);
  68. vertex_to v35 = boost::add_vertex(og);
  69. vertex_to v36 = boost::add_vertex(og);
  70. vertex_to v37 = boost::add_vertex(og);
  71. add_edge(v1, v0, EdgeProperties(1.), og);
  72. add_edge(v2, v0, EdgeProperties(1.), og);
  73. add_edge(v3, v0, EdgeProperties(1.), og);
  74. add_edge(v1, v2, EdgeProperties(1.), og);
  75. add_edge(v4, v1, EdgeProperties(1.), og);
  76. add_edge(v5, v1, EdgeProperties(1.), og);
  77. add_edge(v6, v1, EdgeProperties(1.), og);
  78. add_edge(v6, v2, EdgeProperties(1.), og);
  79. add_edge(v2, v3, EdgeProperties(1.), og);
  80. add_edge(v9, v3, EdgeProperties(1.), og);
  81. add_edge(v10, v3, EdgeProperties(1.), og);
  82. add_edge(v4, v5, EdgeProperties(1.), og);
  83. add_edge(v5, v6, EdgeProperties(1.), og);
  84. add_edge(v7, v4, EdgeProperties(1.), og);
  85. add_edge(v8, v4, EdgeProperties(1.), og);
  86. add_edge(v7, v8, EdgeProperties(1.), og);
  87. add_edge(v9, v10, EdgeProperties(1.), og);
  88. add_edge(v8, v11, EdgeProperties(1.), og);
  89. add_edge(v11, v4, EdgeProperties(1.), og);
  90. add_edge(v12, v13, EdgeProperties(1.), og);
  91. add_edge(v12, v7, EdgeProperties(1.), og);
  92. add_edge(v13, v7, EdgeProperties(1.), og);
  93. add_edge(v14, v15, EdgeProperties(1.), og);
  94. add_edge(v14, v12, EdgeProperties(1.), og);
  95. add_edge(v15, v16, EdgeProperties(1.), og);
  96. add_edge(v15, v12, EdgeProperties(1.), og);
  97. add_edge(v16, v17, EdgeProperties(1.), og);
  98. add_edge(v16, v12, EdgeProperties(1.), og);
  99. add_edge(v17, v12, EdgeProperties(1.), og);
  100. add_edge(v18, v19, EdgeProperties(1.), og);
  101. add_edge(v18, v8, EdgeProperties(1.), og);
  102. add_edge(v19, v20, EdgeProperties(1.), og);
  103. add_edge(v19, v8, EdgeProperties(1.), og);
  104. add_edge(v20, v8, EdgeProperties(1.), og);
  105. add_edge(v21, v22, EdgeProperties(1.), og);
  106. add_edge(v21, v19, EdgeProperties(1.), og);
  107. add_edge(v22, v23, EdgeProperties(1.), og);
  108. add_edge(v22, v19, EdgeProperties(1.), og);
  109. add_edge(v23, v19, EdgeProperties(1.), og);
  110. add_edge(v24, v25, EdgeProperties(1.), og);
  111. add_edge(v24, v6, EdgeProperties(1.), og);
  112. add_edge(v25, v6, EdgeProperties(1.), og);
  113. add_edge(v26, v11, EdgeProperties(1.), og);
  114. add_edge(v26, v27, EdgeProperties(1.), og);
  115. add_edge(v26, v24, EdgeProperties(1.), og);
  116. add_edge(v27, v24, EdgeProperties(1.), og);
  117. add_edge(v28, v25, EdgeProperties(1.), og);
  118. add_edge(v29, v27, EdgeProperties(1.), og);
  119. add_edge(v29, v28, EdgeProperties(1.), og);
  120. add_edge(v30, v27, EdgeProperties(1.), og);
  121. add_edge(v30, v28, EdgeProperties(1.), og);
  122. add_edge(v31, v32, EdgeProperties(1.), og);
  123. add_edge(v31, v10, EdgeProperties(1.), og);
  124. add_edge(v32, v33, EdgeProperties(1.), og);
  125. add_edge(v32, v10, EdgeProperties(1.), og);
  126. add_edge(v33, v10, EdgeProperties(1.), og);
  127. add_edge(v34, v31, EdgeProperties(1.), og);
  128. add_edge(v34, v35, EdgeProperties(1.), og);
  129. add_edge(v35, v31, EdgeProperties(1.), og);
  130. add_edge(v35, v32, EdgeProperties(1.), og);
  131. add_edge(v36, v32, EdgeProperties(1.), og);
  132. add_edge(v36, v37, EdgeProperties(1.), og);
  133. add_edge(v36, v33, EdgeProperties(1.), og);
  134. add_edge(v37, v33, EdgeProperties(1.), og);
  135. /*og[v6] = VertexProperties(6, 1.5, NORMAL_PIXEL);
  136. og[v8] = VertexProperties(8, 1., NORMAL_PIXEL);
  137. og[v10] = VertexProperties(10, 1.5, NORMAL_PIXEL);
  138. og[v0] = VertexProperties(0, 3, NORMAL_PIXEL);
  139. og[v1] = VertexProperties(1, 2, NORMAL_PIXEL);
  140. og[v2] = VertexProperties(2, 2, NORMAL_PIXEL);
  141. og[v3] = VertexProperties(3, 2, NORMAL_PIXEL);
  142. og[v4] = VertexProperties(4, 1.5, NORMAL_PIXEL);
  143. og[v5] = VertexProperties(5, 1.5, NORMAL_PIXEL);
  144. og[v7] = VertexProperties(7, 1., TOP_PIXEL);
  145. og[v9] = VertexProperties(9, 1.5, TOP_PIXEL);*/
  146. og[v6] = VertexProperties(6, 2.5, NORMAL_PIXEL);
  147. og[v8] = VertexProperties(8, 2., NORMAL_PIXEL);
  148. og[v10] = VertexProperties(10, 2.5, NORMAL_PIXEL);
  149. og[v0] = VertexProperties(0, 4, NORMAL_PIXEL);
  150. og[v1] = VertexProperties(1, 3, NORMAL_PIXEL);
  151. og[v2] = VertexProperties(2, 3, NORMAL_PIXEL);
  152. og[v3] = VertexProperties(3, 3, NORMAL_PIXEL);
  153. og[v4] = VertexProperties(4, 2.5, NORMAL_PIXEL);
  154. og[v5] = VertexProperties(5, 2.5, NORMAL_PIXEL);
  155. og[v7] = VertexProperties(7, 2., NORMAL_PIXEL);
  156. og[v9] = VertexProperties(9, 2.5, TOP_PIXEL);
  157. og[v11] = VertexProperties(11, 2, NORMAL_PIXEL);
  158. og[v12] = VertexProperties(12, 1.5, NORMAL_PIXEL);
  159. og[v13] = VertexProperties(13, 1.5, NORMAL_PIXEL);
  160. og[v14] = VertexProperties(14, 1, TOP_PIXEL);
  161. og[v15] = VertexProperties(15, 1, NORMAL_PIXEL);
  162. og[v16] = VertexProperties(16, 1, NORMAL_PIXEL);
  163. og[v17] = VertexProperties(17, 1, NORMAL_PIXEL);
  164. og[v18] = VertexProperties(18, 1.5, TOP_PIXEL);
  165. og[v19] = VertexProperties(19, 1.5, NORMAL_PIXEL);
  166. og[v20] = VertexProperties(20, 1.5, NORMAL_PIXEL);
  167. og[v21] = VertexProperties(21, 1, TOP_PIXEL);
  168. og[v22] = VertexProperties(22, 1, NORMAL_PIXEL);
  169. og[v23] = VertexProperties(23, 1, NORMAL_PIXEL);
  170. og[v24] = VertexProperties(24, 2, NORMAL_PIXEL);
  171. og[v25] = VertexProperties(25, 2, NORMAL_PIXEL);
  172. og[v26] = VertexProperties(26, 1.5, TOP_PIXEL);
  173. og[v27] = VertexProperties(27, 1.5, NORMAL_PIXEL);
  174. og[v28] = VertexProperties(28, 1.5, NORMAL_PIXEL);
  175. og[v29] = VertexProperties(29, 1, TOP_PIXEL);
  176. og[v30] = VertexProperties(30, 1, TOP_PIXEL);
  177. og[v31] = VertexProperties(31, 2, NORMAL_PIXEL);
  178. og[v32] = VertexProperties(32, 2, NORMAL_PIXEL);
  179. og[v33] = VertexProperties(33, 2, NORMAL_PIXEL);
  180. og[v34] = VertexProperties(34, 1.5, TOP_PIXEL);
  181. og[v35] = VertexProperties(35, 1.5, NORMAL_PIXEL);
  182. og[v36] = VertexProperties(36, 1.5, TOP_PIXEL);
  183. og[v37] = VertexProperties(37, 1.5, NORMAL_PIXEL);
  184. /*
  185. * construction graphe Non Oriente
  186. */
  187. vertex_t v01 = boost::add_vertex(ug);
  188. vertex_t v1r1 = boost::add_vertex(ug);
  189. vertex_t v2r1 = boost::add_vertex(ug);
  190. vertex_t v3r1 = boost::add_vertex(ug);
  191. vertex_t v41 = boost::add_vertex(ug);
  192. vertex_t v51 = boost::add_vertex(ug);
  193. vertex_t v61 = boost::add_vertex(ug);
  194. vertex_t v71 = boost::add_vertex(ug);
  195. vertex_t v81 = boost::add_vertex(ug);
  196. vertex_t v91 = boost::add_vertex(ug);
  197. vertex_t v101 = boost::add_vertex(ug);
  198. vertex_t v111 = boost::add_vertex(ug);
  199. vertex_t v121 = boost::add_vertex(ug);
  200. vertex_t v131 = boost::add_vertex(ug);
  201. vertex_t v141 = boost::add_vertex(ug);
  202. vertex_t v151 = boost::add_vertex(ug);
  203. vertex_t v161 = boost::add_vertex(ug);
  204. vertex_t v171 = boost::add_vertex(ug);
  205. vertex_t v181 = boost::add_vertex(ug);
  206. vertex_t v191 = boost::add_vertex(ug);
  207. vertex_t v201 = boost::add_vertex(ug);
  208. vertex_t v211 = boost::add_vertex(ug);
  209. vertex_t v221 = boost::add_vertex(ug);
  210. vertex_t v231 = boost::add_vertex(ug);
  211. vertex_t v241 = boost::add_vertex(ug);
  212. vertex_t v251 = boost::add_vertex(ug);
  213. vertex_t v261 = boost::add_vertex(ug);
  214. vertex_t v271 = boost::add_vertex(ug);
  215. vertex_t v281 = boost::add_vertex(ug);
  216. vertex_t v291 = boost::add_vertex(ug);
  217. vertex_t v301 = boost::add_vertex(ug);
  218. vertex_t v311 = boost::add_vertex(ug);
  219. vertex_t v321 = boost::add_vertex(ug);
  220. vertex_t v331 = boost::add_vertex(ug);
  221. vertex_t v341 = boost::add_vertex(ug);
  222. vertex_t v351 = boost::add_vertex(ug);
  223. vertex_t v361 = boost::add_vertex(ug);
  224. vertex_t v371 = boost::add_vertex(ug);
  225. boost::add_edge(v01, v1r1, EdgeProperties(1.), ug);
  226. boost::add_edge(v01, v2r1, EdgeProperties(1.), ug);
  227. boost::add_edge(v01, v3r1, EdgeProperties(1.), ug);
  228. boost::add_edge(v1r1, v2r1, EdgeProperties(1.), ug);
  229. boost::add_edge(v1r1, v41, EdgeProperties(1.), ug);
  230. boost::add_edge(v1r1, v51, EdgeProperties(1.), ug);
  231. boost::add_edge(v1r1, v61, EdgeProperties(1.), ug);
  232. boost::add_edge(v2r1, v61, EdgeProperties(1.), ug);
  233. boost::add_edge(v2r1, v3r1, EdgeProperties(1.), ug);
  234. boost::add_edge(v3r1, v91, EdgeProperties(1.), ug);
  235. boost::add_edge(v3r1, v101, EdgeProperties(1.), ug);
  236. boost::add_edge(v41, v51, EdgeProperties(1.), ug);
  237. boost::add_edge(v51, v61, EdgeProperties(1.), ug);
  238. boost::add_edge(v41, v71, EdgeProperties(1.), ug);
  239. boost::add_edge(v41, v81, EdgeProperties(1.), ug);
  240. boost::add_edge(v71, v81, EdgeProperties(1.), ug);
  241. boost::add_edge(v91, v101, EdgeProperties(1.), ug);
  242. boost::add_edge(v41, v111, EdgeProperties(1.), ug);
  243. boost::add_edge(v71, v121, EdgeProperties(1.), ug);
  244. boost::add_edge(v71, v131, EdgeProperties(1.), ug);
  245. boost::add_edge(v121, v131, EdgeProperties(1.), ug);
  246. boost::add_edge(v121, v141, EdgeProperties(1.), ug);
  247. boost::add_edge(v121, v151, EdgeProperties(1.), ug);
  248. boost::add_edge(v121, v161, EdgeProperties(1.), ug);
  249. boost::add_edge(v121, v171, EdgeProperties(1.), ug);
  250. boost::add_edge(v141, v151, EdgeProperties(1.), ug);
  251. boost::add_edge(v151, v161, EdgeProperties(1.), ug);
  252. boost::add_edge(v161, v171, EdgeProperties(1.), ug);
  253. boost::add_edge(v81, v111, EdgeProperties(1.), ug);
  254. boost::add_edge(v81, v181, EdgeProperties(1.), ug);
  255. boost::add_edge(v81, v191, EdgeProperties(1.), ug);
  256. boost::add_edge(v81, v201, EdgeProperties(1.), ug);
  257. boost::add_edge(v181, v191, EdgeProperties(1.), ug);
  258. boost::add_edge(v191, v201, EdgeProperties(1.), ug);
  259. boost::add_edge(v191, v211, EdgeProperties(1.), ug);
  260. boost::add_edge(v191, v221, EdgeProperties(1.), ug);
  261. boost::add_edge(v191, v231, EdgeProperties(1.), ug);
  262. boost::add_edge(v211, v221, EdgeProperties(1.), ug);
  263. boost::add_edge(v221, v231, EdgeProperties(1.), ug);
  264. boost::add_edge(v111, v261, EdgeProperties(1.), ug);
  265. boost::add_edge(v61, v241, EdgeProperties(1.), ug);
  266. boost::add_edge(v61, v251, EdgeProperties(1.), ug);
  267. boost::add_edge(v241, v251, EdgeProperties(1.), ug);
  268. boost::add_edge(v241, v261, EdgeProperties(1.), ug);
  269. boost::add_edge(v241, v271, EdgeProperties(1.), ug);
  270. boost::add_edge(v261, v271, EdgeProperties(1.), ug);
  271. boost::add_edge(v251, v281, EdgeProperties(1.), ug);
  272. boost::add_edge(v271, v291, EdgeProperties(1.), ug);
  273. boost::add_edge(v271, v301, EdgeProperties(1.), ug);
  274. boost::add_edge(v281, v291, EdgeProperties(1.), ug);
  275. boost::add_edge(v281, v301, EdgeProperties(1.), ug);
  276. boost::add_edge(v101, v311, EdgeProperties(1.), ug);
  277. boost::add_edge(v101, v321, EdgeProperties(1.), ug);
  278. boost::add_edge(v101, v331, EdgeProperties(1.), ug);
  279. boost::add_edge(v311, v321, EdgeProperties(1.), ug);
  280. boost::add_edge(v321, v331, EdgeProperties(1.), ug);
  281. boost::add_edge(v311, v341, EdgeProperties(1.), ug);
  282. boost::add_edge(v311, v351, EdgeProperties(1.), ug);
  283. boost::add_edge(v321, v351, EdgeProperties(1.), ug);
  284. boost::add_edge(v321, v361, EdgeProperties(1.), ug);
  285. boost::add_edge(v331, v361, EdgeProperties(1.), ug);
  286. boost::add_edge(v331, v371, EdgeProperties(1.), ug);
  287. boost::add_edge(v341, v351, EdgeProperties(1.), ug);
  288. boost::add_edge(v361, v371, EdgeProperties(1.), ug);
  289. /*ug[v61] = VertexProperties(60, 1.5, NORMAL_PIXEL);
  290. ug[v81] = VertexProperties(80, 1, NORMAL_PIXEL);
  291. ug[v101] = VertexProperties(100, 1.5, NORMAL_PIXEL);
  292. ug[v01] = VertexProperties(0, 3, NORMAL_PIXEL);
  293. ug[v1r1] = VertexProperties(10, 2, NORMAL_PIXEL);
  294. ug[v2r1] = VertexProperties(20, 2, NORMAL_PIXEL);
  295. ug[v3r1] = VertexProperties(30, 2, NORMAL_PIXEL);
  296. ug[v41] = VertexProperties(40, 1.5, NORMAL_PIXEL);
  297. ug[v51] = VertexProperties(50, 1.5, NORMAL_PIXEL);
  298. ug[v71] = VertexProperties(70, 1, TOP_PIXEL);
  299. ug[v91] = VertexProperties(90, 1.5, TOP_PIXEL);*/
  300. ug[v6] = VertexProperties(6, 2.5, NORMAL_PIXEL);
  301. ug[v8] = VertexProperties(8, 2., NORMAL_PIXEL);
  302. ug[v10] = VertexProperties(10, 2.5, NORMAL_PIXEL);
  303. ug[v0] = VertexProperties(0, 4, NORMAL_PIXEL);
  304. ug[v1] = VertexProperties(1, 3, NORMAL_PIXEL);
  305. ug[v2] = VertexProperties(2, 3, NORMAL_PIXEL);
  306. ug[v3] = VertexProperties(3, 3, NORMAL_PIXEL);
  307. ug[v4] = VertexProperties(4, 2.5, NORMAL_PIXEL);
  308. ug[v5] = VertexProperties(5, 2.5, NORMAL_PIXEL);
  309. ug[v7] = VertexProperties(7, 2., NORMAL_PIXEL);
  310. ug[v9] = VertexProperties(9, 2.5, TOP_PIXEL);
  311. ug[v11] = VertexProperties(11, 2, NORMAL_PIXEL);
  312. ug[v12] = VertexProperties(12, 1.5, NORMAL_PIXEL);
  313. ug[v13] = VertexProperties(13, 1.5, NORMAL_PIXEL);
  314. ug[v14] = VertexProperties(14, 1, TOP_PIXEL);
  315. ug[v15] = VertexProperties(15, 1, NORMAL_PIXEL);
  316. ug[v16] = VertexProperties(16, 1, NORMAL_PIXEL);
  317. ug[v17] = VertexProperties(17, 1, NORMAL_PIXEL);
  318. ug[v18] = VertexProperties(18, 1.5, TOP_PIXEL);
  319. ug[v19] = VertexProperties(19, 1.5, NORMAL_PIXEL);
  320. ug[v20] = VertexProperties(20, 1.5, NORMAL_PIXEL);
  321. ug[v21] = VertexProperties(21, 1, TOP_PIXEL);
  322. ug[v22] = VertexProperties(22, 1, NORMAL_PIXEL);
  323. ug[v23] = VertexProperties(23, 1, NORMAL_PIXEL);
  324. ug[v24] = VertexProperties(24, 2, NORMAL_PIXEL);
  325. ug[v25] = VertexProperties(25, 2, NORMAL_PIXEL);
  326. ug[v26] = VertexProperties(26, 1.5, TOP_PIXEL);
  327. ug[v27] = VertexProperties(27, 1.5, NORMAL_PIXEL);
  328. ug[v28] = VertexProperties(28, 1.5, NORMAL_PIXEL);
  329. ug[v29] = VertexProperties(29, 1, TOP_PIXEL);
  330. ug[v30] = VertexProperties(30, 1, TOP_PIXEL);
  331. ug[v31] = VertexProperties(31, 2, NORMAL_PIXEL);
  332. ug[v32] = VertexProperties(32, 2, NORMAL_PIXEL);
  333. ug[v33] = VertexProperties(33, 2, NORMAL_PIXEL);
  334. ug[v34] = VertexProperties(34, 1.5, TOP_PIXEL);
  335. ug[v35] = VertexProperties(35, 1.5, NORMAL_PIXEL);
  336. ug[v36] = VertexProperties(36, 1.5, TOP_PIXEL);
  337. ug[v37] = VertexProperties(37, 1.5, NORMAL_PIXEL);
  338. }
  339. void modify_file_paths(std::string& absolutePath,
  340. std::vector < std::string* >& files)
  341. {
  342. for (std::vector < std::string* >::iterator it = files.begin();
  343. it != files.end(); it++) {
  344. (*it)->insert(0, absolutePath);
  345. }
  346. }
  347. void build_corsen_graph(OrientedGraph& graph)
  348. {
  349. std::string absolutePath(
  350. "/home/eric/vle/vle-labs/paradevs/src/tests/corsen/data_s/");
  351. std::string modeFile(".mode");
  352. std::string parametersFile("par.txt");
  353. std::string elevationFile("alt");
  354. std::string outletFile("arbre");
  355. std::string layersFile("couche");
  356. std::string contextFile("contexte_yar_scenario.xml");
  357. std::string slopeFile("pav");
  358. std::vector < std::string* > files;
  359. Corsen c;
  360. files.push_back(&parametersFile);
  361. files.push_back(&modeFile);
  362. files.push_back(&elevationFile);
  363. files.push_back(&outletFile);
  364. files.push_back(&slopeFile);
  365. files.push_back(&contextFile);
  366. files.push_back(&layersFile);
  367. modify_file_paths(absolutePath, files);
  368. c.read(files, absolutePath);
  369. c.buildGraph();
  370. const DirectedGraph& g = c.getGraph().graph();
  371. std::vector < vertex_t > og_vertex_list;
  372. std::vector < vertex_t > dg_vertex_list;
  373. std::vector < int > dg_in_vertex_list;
  374. DirectedGraph::vertex_iterator it_dg, end_dg;
  375. tie(it_dg, end_dg) = vertices(g);
  376. for (uint i = 0; it_dg != end_dg; ++it_dg, ++i) {
  377. og_vertex_list.push_back(add_vertex(graph));
  378. dg_vertex_list.push_back(*it_dg);
  379. dg_in_vertex_list.push_back(0);
  380. }
  381. tie(it_dg, end_dg) = vertices(g);
  382. for (uint i = 0; it_dg != end_dg; ++it_dg, ++i) {
  383. DirectedGraph::adjacency_iterator neighbour_it, neighbour_end;
  384. tie(neighbour_it, neighbour_end) = adjacent_vertices(*it_dg, g);
  385. for (; neighbour_it != neighbour_end; ++neighbour_it) {
  386. uint index = 0;
  387. while (dg_vertex_list[index] != *neighbour_it) {
  388. ++index;
  389. }
  390. ++dg_in_vertex_list[index];
  391. boost::add_edge(og_vertex_list[i], og_vertex_list[index],
  392. EdgeProperties(1.), graph);
  393. }
  394. }
  395. tie(it_dg, end_dg) = vertices(g);
  396. for (uint i = 0; it_dg != end_dg; ++it_dg, ++i) {
  397. if (dg_in_vertex_list[i] == 0) {
  398. graph[og_vertex_list[i]] = VertexProperties(i, 1., TOP_PIXEL);
  399. } else {
  400. graph[og_vertex_list[i]] = VertexProperties(i, 1., NORMAL_PIXEL);
  401. }
  402. }
  403. }
  404. } } } // namespace paradevs tests boost_graph