Package solvcon :: Package io :: Package tests :: Module test_genesis
[hide private]
[frames] | no frames]

Source Code for Module solvcon.io.tests.test_genesis

  1  # -*- coding: UTF-8 -*- 
  2   
  3  from unittest import TestCase 
  4   
5 -class TestReadTetra(TestCase):
6 import os 7 from ...conf import env 8 testfn = [env.datadir] + ['cubic_t200mm.g'] 9 testfn = os.path.join(*testfn) 10
11 - def test_dim(self):
12 from ..genesis import Genesis 13 gn = Genesis(self.testfn) 14 self.assertEqual(gn.get_dim('num_dim'), 3) 15 self.assertEqual(gn.get_dim('num_nodes'), 316) 16 self.assertEqual(gn.get_dim('num_elem'), 1253) 17 self.assertEqual(gn.get_dim('num_el_blk'), 2) 18 self.assertEqual(gn.get_dim('num_side_sets'), 6) 19 gn.close_file()
20
21 - def test_ss_names(self):
22 from ..genesis import Genesis 23 gn = Genesis(self.testfn) 24 nbc = gn.get_dim('num_side_sets') 25 slen = gn.get_dim('len_string') 26 lines = gn.get_lines('ss_names', (nbc, slen)) 27 self.assertEqual(len(lines), 6) 28 self.assertEqual(lines[0], 'front') 29 self.assertEqual(gn.get_dim('num_side_ss1'), 62) 30 self.assertEqual(lines[1], 'rear') 31 self.assertEqual(gn.get_dim('num_side_ss2'), 62) 32 self.assertEqual(lines[2], 'lower') 33 self.assertEqual(gn.get_dim('num_side_ss3'), 60) 34 self.assertEqual(lines[3], 'left') 35 self.assertEqual(gn.get_dim('num_side_ss4'), 60) 36 self.assertEqual(lines[4], 'upper') 37 self.assertEqual(gn.get_dim('num_side_ss5'), 60) 38 self.assertEqual(lines[5], 'right') 39 self.assertEqual(gn.get_dim('num_side_ss6'), 60) 40 gn.close_file()
41
42 - def test_coord(self):
43 from ..genesis import Genesis 44 gn = Genesis(self.testfn) 45 ndim = gn.get_dim('num_dim') 46 nnode = gn.get_dim('num_nodes') 47 ndcrd = gn.get_array('coord', (ndim, nnode), 'float64').T.copy() 48 self.assertTrue((ndcrd>=-0.5).all()) 49 self.assertTrue((ndcrd<=0.5).all()) 50 gn.close_file()
51
52 - def test_block(self):
53 from ..genesis import Genesis 54 gn = Genesis(self.testfn) 55 # name. 56 nblk = gn.get_dim('num_el_blk') 57 slen = gn.get_dim('len_string') 58 blks = gn.get_lines('eb_names', (nblk, slen)) 59 self.assertEqual(len(blks), 2) 60 self.assertEqual(blks[0], 'rear') 61 self.assertEqual(blks[1], 'front') 62 # block 1. 63 ncell = gn.get_dim('num_el_in_blk1') 64 clnnd = gn.get_dim('num_nod_per_el1') 65 clnds = gn.get_array('connect1', (ncell, clnnd), 'int32') 66 self.assertEqual(clnds.min(), 1) 67 self.assertEqual(clnds.max(), 181) 68 self.assertEqual(gn.get_attr_text('elem_type', 'connect1'), 'TETRA') 69 # block 2. 70 ncell = gn.get_dim('num_el_in_blk2') 71 clnnd = gn.get_dim('num_nod_per_el2') 72 clnds = gn.get_array('connect2', (ncell, clnnd), 'int32') 73 self.assertEqual(clnds.min(), 5) 74 self.assertEqual(clnds.max(), 316) 75 self.assertEqual(gn.get_attr_text('elem_type', 'connect2'), 'TETRA') 76 gn.close_file()
77
78 - def test_load(self):
79 from numpy import arange 80 from ..genesis import Genesis 81 # load from netCDF. 82 gn = Genesis(self.testfn) 83 gn.load() 84 gn.close_file() 85 # meta data. 86 self.assertEqual(gn.ndim, 3) 87 self.assertEqual(gn.nnode, 316) 88 self.assertEqual(gn.ncell, 1253) 89 # blocks. 90 self.assertEqual(len(gn.blks), 2) 91 self.assertEqual(gn.blks[0][0], 'rear') 92 self.assertEqual(gn.blks[0][1], 'TETRA') 93 self.assertEqual(gn.blks[0][2].shape, (635, 4)) 94 self.assertEqual(gn.blks[1][0], 'front') 95 self.assertEqual(gn.blks[1][1], 'TETRA') 96 self.assertEqual(gn.blks[1][2].shape, (618, 4)) 97 # BCs. 98 self.assertEqual(len(gn.bcs), 6) 99 self.assertEqual(gn.bcs[0][0], 'front') 100 self.assertEqual(gn.bcs[0][1].shape, (62,)) 101 self.assertEqual(gn.bcs[0][2].shape, (62,)) 102 self.assertEqual(gn.bcs[1][0], 'rear') 103 self.assertEqual(gn.bcs[1][1].shape, (62,)) 104 self.assertEqual(gn.bcs[1][2].shape, (62,)) 105 self.assertEqual(gn.bcs[2][0], 'lower') 106 self.assertEqual(gn.bcs[2][1].shape, (60,)) 107 self.assertEqual(gn.bcs[2][2].shape, (60,)) 108 self.assertEqual(gn.bcs[3][0], 'left') 109 self.assertEqual(gn.bcs[3][1].shape, (60,)) 110 self.assertEqual(gn.bcs[3][2].shape, (60,)) 111 self.assertEqual(gn.bcs[4][0], 'upper') 112 self.assertEqual(gn.bcs[4][1].shape, (60,)) 113 self.assertEqual(gn.bcs[4][2].shape, (60,)) 114 self.assertEqual(gn.bcs[5][0], 'right') 115 self.assertEqual(gn.bcs[5][1].shape, (60,)) 116 self.assertEqual(gn.bcs[5][2].shape, (60,)) 117 # coordinate. 118 self.assertEqual(gn.ndcrd.shape, (316, 3)) 119 self.assertTrue((gn.ndcrd >= -0.5).all()) 120 self.assertTrue((gn.ndcrd <= 0.5).all()) 121 # mapper. 122 self.assertTrue((gn.emap == arange(1253)+1).all())
123
124 - def test_convert_interior(self):
125 from ...block import Block 126 from ..genesis import Genesis 127 # load from netCDF. 128 gn = Genesis(self.testfn) 129 gn.load() 130 gn.close_file() 131 # convert. 132 blk = Block(ndim=gn.ndim, nnode=gn.nnode, ncell=gn.ncell, 133 fpdtype='float64') 134 gn._convert_interior_to(blk) 135 # test cell type. 136 self.assertTrue((blk.cltpn == 5).all()) 137 self.assertTrue((blk.clnds[:,0] == 4).all()) 138 # test index of node in cell. 139 self.assertEqual(blk.clnds[:,1:5].min(), 0) 140 self.assertEqual(blk.clnds[:,1:5].max(), 316-1) 141 # test group. 142 self.assertEqual(len(blk.grpnames), 2) 143 self.assertEqual(blk.clgrp.min(), 0) 144 self.assertEqual((blk.clgrp==0).sum(), 635) 145 self.assertEqual(blk.clgrp.max(), 1) 146 self.assertEqual((blk.clgrp==1).sum(), 618)
147
148 - def test_toblock(self):
149 from ..genesis import Genesis 150 # load from netCDF. 151 gn = Genesis(self.testfn) 152 gn.load() 153 gn.close_file() 154 # convert. 155 blk = gn.toblock() 156 # test BC. 157 self.assertEqual(len(blk.bclist), 6) 158 self.assertEqual(blk.bclist[0].name, 'front') 159 self.assertEqual(len(blk.bclist[0]), 62) 160 self.assertTrue((blk.fccnd[blk.bclist[0].facn[:,0],2] == 0.5).all()) 161 self.assertAlmostEqual(blk.fcara[blk.bclist[0].facn[:,0]].sum(), 1.0, 162 15) 163 self.assertEqual(blk.bclist[1].name, 'rear') 164 self.assertEqual(len(blk.bclist[1]), 62) 165 self.assertTrue((blk.fccnd[blk.bclist[1].facn[:,0],2] == -0.5).all()) 166 self.assertAlmostEqual(blk.fcara[blk.bclist[1].facn[:,0]].sum(), 1.0, 167 15) 168 self.assertEqual(blk.bclist[2].name, 'lower') 169 self.assertEqual(len(blk.bclist[2]), 60) 170 self.assertTrue((blk.fccnd[blk.bclist[2].facn[:,0],1] == -0.5).all()) 171 self.assertAlmostEqual(blk.fcara[blk.bclist[2].facn[:,0]].sum(), 1.0, 172 15) 173 self.assertEqual(blk.bclist[3].name, 'left') 174 self.assertEqual(len(blk.bclist[3]), 60) 175 self.assertTrue((blk.fccnd[blk.bclist[3].facn[:,0],0] == -0.5).all()) 176 self.assertAlmostEqual(blk.fcara[blk.bclist[3].facn[:,0]].sum(), 1.0, 177 15) 178 self.assertEqual(blk.bclist[4].name, 'upper') 179 self.assertEqual(len(blk.bclist[4]), 60) 180 self.assertTrue((blk.fccnd[blk.bclist[4].facn[:,0],1] == 0.5).all()) 181 self.assertAlmostEqual(blk.fcara[blk.bclist[4].facn[:,0]].sum(), 1.0, 182 15) 183 self.assertEqual(blk.bclist[5].name, 'right') 184 self.assertEqual(len(blk.bclist[5]), 60) 185 self.assertTrue((blk.fccnd[blk.bclist[5].facn[:,0],0] == 0.5).all()) 186 self.assertAlmostEqual(blk.fcara[blk.bclist[5].facn[:,0]].sum(), 1.0, 187 15) 188 # test geometry. 189 self.assertEqual(blk.ndcrd.min(), -0.5) 190 self.assertEqual(blk.ndcrd.max(), 0.5) 191 self.assertAlmostEqual(blk.clvol.sum(), 1.0, 14)
192
193 -class TestReadHex(TestCase):
194 import os 195 from ...conf import env 196 testfn = [env.datadir] + ['cubic_h200mm.g'] 197 testfn = os.path.join(*testfn) 198
199 - def test_dim(self):
200 from ..genesis import Genesis 201 gn = Genesis(self.testfn) 202 self.assertEqual(gn.get_dim('num_dim'), 3) 203 self.assertEqual(gn.get_dim('num_nodes'), 252) 204 self.assertEqual(gn.get_dim('num_elem'), 150) 205 self.assertEqual(gn.get_dim('num_el_blk'), 2) 206 self.assertEqual(gn.get_dim('num_side_sets'), 6) 207 gn.close_file()
208
209 - def test_ss_names(self):
210 from ..genesis import Genesis 211 gn = Genesis(self.testfn) 212 nbc = gn.get_dim('num_side_sets') 213 slen = gn.get_dim('len_string') 214 lines = gn.get_lines('ss_names', (nbc, slen)) 215 self.assertEqual(len(lines), 6) 216 self.assertEqual(lines[0], 'front') 217 self.assertEqual(gn.get_dim('num_side_ss1'), 25) 218 self.assertEqual(lines[1], 'rear') 219 self.assertEqual(gn.get_dim('num_side_ss2'), 25) 220 self.assertEqual(lines[2], 'lower') 221 self.assertEqual(gn.get_dim('num_side_ss3'), 30) 222 self.assertEqual(lines[3], 'left') 223 self.assertEqual(gn.get_dim('num_side_ss4'), 30) 224 self.assertEqual(lines[4], 'upper') 225 self.assertEqual(gn.get_dim('num_side_ss5'), 30) 226 self.assertEqual(lines[5], 'right') 227 self.assertEqual(gn.get_dim('num_side_ss6'), 30) 228 gn.close_file()
229
230 - def test_coord(self):
231 from ..genesis import Genesis 232 gn = Genesis(self.testfn) 233 ndim = gn.get_dim('num_dim') 234 nnode = gn.get_dim('num_nodes') 235 ndcrd = gn.get_array('coord', (ndim, nnode), 'float64').T.copy() 236 self.assertTrue((ndcrd >= -0.5-1.e-15).all()) 237 self.assertTrue((ndcrd <= 0.5+1.e-15).all()) 238 gn.close_file()
239
240 - def test_block(self):
241 from ..genesis import Genesis 242 gn = Genesis(self.testfn) 243 # name. 244 nblk = gn.get_dim('num_el_blk') 245 slen = gn.get_dim('len_string') 246 blks = gn.get_lines('eb_names', (nblk, slen)) 247 self.assertEqual(len(blks), 2) 248 self.assertEqual(blks[0], 'rear') 249 self.assertEqual(blks[1], 'front') 250 # block 1. 251 ncell = gn.get_dim('num_el_in_blk1') 252 clnnd = gn.get_dim('num_nod_per_el1') 253 clnds = gn.get_array('connect1', (ncell, clnnd), 'int32') 254 self.assertEqual(clnds.min(), 1) 255 self.assertEqual(clnds.max(), 144) 256 self.assertEqual(gn.get_attr_text('elem_type', 'connect1'), 'HEX8') 257 # block 2. 258 ncell = gn.get_dim('num_el_in_blk2') 259 clnnd = gn.get_dim('num_nod_per_el2') 260 clnds = gn.get_array('connect2', (ncell, clnnd), 'int32') 261 self.assertEqual(clnds.min(), 109) 262 self.assertEqual(clnds.max(), 252) 263 self.assertEqual(gn.get_attr_text('elem_type', 'connect2'), 'HEX8') 264 gn.close_file()
265
266 - def test_load(self):
267 from numpy import arange 268 from ..genesis import Genesis 269 # load from netCDF. 270 gn = Genesis(self.testfn) 271 gn.load() 272 gn.close_file() 273 # meta data. 274 self.assertEqual(gn.ndim, 3) 275 self.assertEqual(gn.nnode, 252) 276 self.assertEqual(gn.ncell, 150) 277 # blocks. 278 self.assertEqual(len(gn.blks), 2) 279 self.assertEqual(gn.blks[0][0], 'rear') 280 self.assertEqual(gn.blks[0][1], 'HEX8') 281 self.assertEqual(gn.blks[0][2].shape, (75, 8)) 282 self.assertEqual(gn.blks[1][0], 'front') 283 self.assertEqual(gn.blks[1][1], 'HEX8') 284 self.assertEqual(gn.blks[1][2].shape, (75, 8)) 285 # BCs. 286 self.assertEqual(len(gn.bcs), 6) 287 self.assertEqual(gn.bcs[0][0], 'front') 288 self.assertEqual(gn.bcs[0][1].shape, (25,)) 289 self.assertEqual(gn.bcs[0][2].shape, (25,)) 290 self.assertEqual(gn.bcs[1][0], 'rear') 291 self.assertEqual(gn.bcs[1][1].shape, (25,)) 292 self.assertEqual(gn.bcs[1][2].shape, (25,)) 293 self.assertEqual(gn.bcs[2][0], 'lower') 294 self.assertEqual(gn.bcs[2][1].shape, (30,)) 295 self.assertEqual(gn.bcs[2][2].shape, (30,)) 296 self.assertEqual(gn.bcs[3][0], 'left') 297 self.assertEqual(gn.bcs[3][1].shape, (30,)) 298 self.assertEqual(gn.bcs[3][2].shape, (30,)) 299 self.assertEqual(gn.bcs[4][0], 'upper') 300 self.assertEqual(gn.bcs[4][1].shape, (30,)) 301 self.assertEqual(gn.bcs[4][2].shape, (30,)) 302 self.assertEqual(gn.bcs[5][0], 'right') 303 self.assertEqual(gn.bcs[5][1].shape, (30,)) 304 self.assertEqual(gn.bcs[5][2].shape, (30,)) 305 # coordinate. 306 self.assertEqual(gn.ndcrd.shape, (252, 3)) 307 self.assertTrue((gn.ndcrd >= -0.5-1.e-15).all()) 308 self.assertTrue((gn.ndcrd <= 0.5+1.e-15).all()) 309 # mapper. 310 self.assertTrue((gn.emap == arange(150)+1).all())
311
312 - def test_convert_interior(self):
313 from ...block import Block 314 from ..genesis import Genesis 315 # load from netCDF. 316 gn = Genesis(self.testfn) 317 gn.load() 318 gn.close_file() 319 # convert. 320 blk = Block(ndim=gn.ndim, nnode=gn.nnode, ncell=gn.ncell, 321 fpdtype='float64') 322 gn._convert_interior_to(blk) 323 # test cell type. 324 self.assertTrue((blk.cltpn == 4).all()) 325 self.assertTrue((blk.clnds[:,0] == 8).all()) 326 # test index of node in cell. 327 self.assertEqual(blk.clnds[:,1:9].min(), 0) 328 self.assertEqual(blk.clnds[:,1:9].max(), 252-1) 329 # test group. 330 self.assertEqual(len(blk.grpnames), 2) 331 self.assertEqual(blk.clgrp.min(), 0) 332 self.assertEqual((blk.clgrp==0).sum(), 75) 333 self.assertEqual(blk.clgrp.max(), 1) 334 self.assertEqual((blk.clgrp==1).sum(), 75)
335
336 - def test_toblock(self):
337 from numpy import abs 338 from ..genesis import Genesis 339 # load from netCDF. 340 gn = Genesis(self.testfn) 341 gn.load() 342 gn.close_file() 343 # convert. 344 blk = gn.toblock() 345 # test BC. 346 self.assertEqual(len(blk.bclist), 6) 347 self.assertEqual(blk.bclist[0].name, 'front') 348 self.assertEqual(len(blk.bclist[0]), 25) 349 self.assertTrue((abs(blk.fccnd[blk.bclist[0].facn[:,0],2] - 0.5) 350 < 1.e-15).all()) 351 self.assertAlmostEqual(blk.fcara[blk.bclist[0].facn[:,0]].sum(), 1.0, 352 15) 353 self.assertEqual(blk.bclist[1].name, 'rear') 354 self.assertEqual(len(blk.bclist[1]), 25) 355 self.assertTrue((abs(blk.fccnd[blk.bclist[1].facn[:,0],2] + 0.5) 356 < 1.e-15).all()) 357 self.assertAlmostEqual(blk.fcara[blk.bclist[1].facn[:,0]].sum(), 1.0, 358 15) 359 self.assertEqual(blk.bclist[2].name, 'lower') 360 self.assertEqual(len(blk.bclist[2]), 30) 361 self.assertTrue((abs(blk.fccnd[blk.bclist[2].facn[:,0],1] + 0.5) 362 < 1.e-15).all()) 363 self.assertAlmostEqual(blk.fcara[blk.bclist[2].facn[:,0]].sum(), 1.0, 364 15) 365 self.assertEqual(blk.bclist[3].name, 'left') 366 self.assertEqual(len(blk.bclist[3]), 30) 367 self.assertTrue((abs(blk.fccnd[blk.bclist[3].facn[:,0],0] + 0.5) 368 < 1.e-15).all()) 369 self.assertAlmostEqual(blk.fcara[blk.bclist[3].facn[:,0]].sum(), 1.0, 370 15) 371 self.assertEqual(blk.bclist[4].name, 'upper') 372 self.assertEqual(len(blk.bclist[4]), 30) 373 self.assertTrue((abs(blk.fccnd[blk.bclist[4].facn[:,0],1] - 0.5) 374 < 1.e-15).all()) 375 self.assertAlmostEqual(blk.fcara[blk.bclist[4].facn[:,0]].sum(), 1.0, 376 15) 377 self.assertEqual(blk.bclist[5].name, 'right') 378 self.assertEqual(len(blk.bclist[5]), 30) 379 self.assertTrue((abs(blk.fccnd[blk.bclist[5].facn[:,0],0] - 0.5) 380 < 1.e-15).all()) 381 self.assertAlmostEqual(blk.fcara[blk.bclist[5].facn[:,0]].sum(), 1.0, 382 15) 383 # test geometry. 384 self.assertAlmostEqual(blk.ndcrd.min(), -0.5, 15) 385 self.assertAlmostEqual(blk.ndcrd.max(), 0.5, 15) 386 self.assertAlmostEqual(blk.clvol.sum(), 1.0, 14)
387
388 -class TestReadTri(TestCase):
389 import os 390 from ...conf import env 391 testfn = [env.datadir] + ['square_t200mm.g'] 392 testfn = os.path.join(*testfn) 393
394 - def test_dim(self):
395 from ..genesis import Genesis 396 gn = Genesis(self.testfn) 397 self.assertEqual(gn.get_dim('num_dim'), 2) 398 self.assertEqual(gn.get_dim('num_nodes'), 41) 399 self.assertEqual(gn.get_dim('num_elem'), 60) 400 self.assertEqual(gn.get_dim('num_el_blk'), 1) 401 self.assertEqual(gn.get_dim('num_side_sets'), 4) 402 gn.close_file()
403
404 - def test_ss_names(self):
405 from ..genesis import Genesis 406 gn = Genesis(self.testfn) 407 nbc = gn.get_dim('num_side_sets') 408 slen = gn.get_dim('len_string') 409 lines = gn.get_lines('ss_names', (nbc, slen)) 410 self.assertEqual(len(lines), 4) 411 self.assertEqual(lines[0], 'upper') 412 self.assertEqual(gn.get_dim('num_side_ss1'), 5) 413 self.assertEqual(lines[1], 'left') 414 self.assertEqual(gn.get_dim('num_side_ss2'), 5) 415 self.assertEqual(lines[2], 'lower') 416 self.assertEqual(gn.get_dim('num_side_ss3'), 5) 417 self.assertEqual(lines[3], 'right') 418 self.assertEqual(gn.get_dim('num_side_ss4'), 5) 419 gn.close_file()
420
421 - def test_coord(self):
422 from ..genesis import Genesis 423 gn = Genesis(self.testfn) 424 ndim = gn.get_dim('num_dim') 425 nnode = gn.get_dim('num_nodes') 426 ndcrd = gn.get_array('coord', (ndim, nnode), 'float64').T.copy() 427 self.assertTrue((ndcrd >= -0.5-1.e-15).all()) 428 self.assertTrue((ndcrd <= 0.5+1.e-15).all()) 429 gn.close_file()
430
431 - def test_block(self):
432 from ..genesis import Genesis 433 gn = Genesis(self.testfn) 434 # name. 435 nblk = gn.get_dim('num_el_blk') 436 slen = gn.get_dim('len_string') 437 blks = gn.get_lines('eb_names', (nblk, slen)) 438 self.assertEqual(len(blks), 1) 439 # block 1. 440 ncell = gn.get_dim('num_el_in_blk1') 441 clnnd = gn.get_dim('num_nod_per_el1') 442 clnds = gn.get_array('connect1', (ncell, clnnd), 'int32') 443 self.assertEqual(clnds.min(), 1) 444 self.assertEqual(clnds.max(), 41) 445 self.assertEqual(gn.get_attr_text('elem_type', 'connect1'), 'TRI3') 446 gn.close_file()
447
448 - def test_load(self):
449 from numpy import arange 450 from ..genesis import Genesis 451 # load from netCDF. 452 gn = Genesis(self.testfn) 453 gn.load() 454 gn.close_file() 455 # meta data. 456 self.assertEqual(gn.ndim, 2) 457 self.assertEqual(gn.nnode, 41) 458 self.assertEqual(gn.ncell, 60) 459 # blocks. 460 self.assertEqual(len(gn.blks), 1) 461 self.assertEqual(gn.blks[0][1], 'TRI3') 462 self.assertEqual(gn.blks[0][2].shape, (60, 3)) 463 # BCs. 464 self.assertEqual(len(gn.bcs), 4) 465 self.assertEqual(gn.bcs[0][0], 'upper') 466 self.assertEqual(gn.bcs[0][1].shape, (5,)) 467 self.assertEqual(gn.bcs[0][2].shape, (5,)) 468 self.assertEqual(gn.bcs[1][0], 'left') 469 self.assertEqual(gn.bcs[1][1].shape, (5,)) 470 self.assertEqual(gn.bcs[1][2].shape, (5,)) 471 self.assertEqual(gn.bcs[2][0], 'lower') 472 self.assertEqual(gn.bcs[2][1].shape, (5,)) 473 self.assertEqual(gn.bcs[2][2].shape, (5,)) 474 self.assertEqual(gn.bcs[3][0], 'right') 475 self.assertEqual(gn.bcs[3][1].shape, (5,)) 476 self.assertEqual(gn.bcs[3][2].shape, (5,)) 477 # coordinate. 478 self.assertEqual(gn.ndcrd.shape, (41, 2)) 479 self.assertTrue((gn.ndcrd >= -0.5-1.e-15).all()) 480 self.assertTrue((gn.ndcrd <= 0.5+1.e-15).all()) 481 # mapper. 482 self.assertTrue((gn.emap == arange(60)+1).all())
483
484 - def test_convert_interior(self):
485 from ...block import Block 486 from ..genesis import Genesis 487 # load from netCDF. 488 gn = Genesis(self.testfn) 489 gn.load() 490 gn.close_file() 491 # convert. 492 blk = Block(ndim=gn.ndim, nnode=gn.nnode, ncell=gn.ncell, 493 fpdtype='float64') 494 gn._convert_interior_to(blk) 495 # test cell type. 496 self.assertTrue((blk.cltpn == 3).all()) 497 self.assertTrue((blk.clnds[:,0] == 3).all()) 498 # test index of node in cell. 499 self.assertEqual(blk.clnds[:,1:4].min(), 0) 500 self.assertEqual(blk.clnds[:,1:4].max(), 41-1) 501 # test group. 502 self.assertEqual(len(blk.grpnames), 1) 503 self.assertEqual(blk.clgrp.min(), 0) 504 self.assertEqual((blk.clgrp==0).sum(), 60)
505
506 - def test_toblock(self):
507 from numpy import abs 508 from ..genesis import Genesis 509 # load from netCDF. 510 gn = Genesis(self.testfn) 511 gn.load() 512 gn.close_file() 513 # convert. 514 blk = gn.toblock() 515 # test BC. 516 self.assertEqual(len(blk.bclist), 4) 517 self.assertEqual(blk.bclist[0].name, 'upper') 518 self.assertEqual(len(blk.bclist[0]), 5) 519 self.assertTrue((abs(blk.fccnd[blk.bclist[0].facn[:,0],1] - 0.5) 520 < 1.e-15).all()) 521 self.assertAlmostEqual(blk.fcara[blk.bclist[0].facn[:,0]].sum(), 1.0, 522 15) 523 self.assertEqual(blk.bclist[1].name, 'left') 524 self.assertEqual(len(blk.bclist[1]), 5) 525 self.assertTrue((abs(blk.fccnd[blk.bclist[1].facn[:,0],0] + 0.5) 526 < 1.e-15).all()) 527 self.assertAlmostEqual(blk.fcara[blk.bclist[1].facn[:,0]].sum(), 1.0, 528 15) 529 self.assertEqual(blk.bclist[2].name, 'lower') 530 self.assertEqual(len(blk.bclist[2]), 5) 531 self.assertTrue((abs(blk.fccnd[blk.bclist[2].facn[:,0],1] + 0.5) 532 < 1.e-15).all()) 533 self.assertAlmostEqual(blk.fcara[blk.bclist[2].facn[:,0]].sum(), 1.0, 534 15) 535 self.assertEqual(blk.bclist[3].name, 'right') 536 self.assertEqual(len(blk.bclist[3]), 5) 537 self.assertTrue((abs(blk.fccnd[blk.bclist[3].facn[:,0],0] - 0.5) 538 < 1.e-15).all()) 539 self.assertAlmostEqual(blk.fcara[blk.bclist[3].facn[:,0]].sum(), 1.0, 540 15) 541 # test geometry. 542 self.assertAlmostEqual(blk.ndcrd.min(), -0.5, 15) 543 self.assertAlmostEqual(blk.ndcrd.max(), 0.5, 15) 544 self.assertAlmostEqual(blk.clvol.sum(), 1.0, 14)
545
546 -class TestReadQuad(TestCase):
547 import os 548 from ...conf import env 549 testfn = [env.datadir] + ['square_q200mm.g'] 550 testfn = os.path.join(*testfn) 551
552 - def test_dim(self):
553 from ..genesis import Genesis 554 gn = Genesis(self.testfn) 555 self.assertEqual(gn.get_dim('num_dim'), 2) 556 self.assertEqual(gn.get_dim('num_nodes'), 36) 557 self.assertEqual(gn.get_dim('num_elem'), 25) 558 self.assertEqual(gn.get_dim('num_el_blk'), 1) 559 self.assertEqual(gn.get_dim('num_side_sets'), 4) 560 gn.close_file()
561
562 - def test_ss_names(self):
563 from ..genesis import Genesis 564 gn = Genesis(self.testfn) 565 nbc = gn.get_dim('num_side_sets') 566 slen = gn.get_dim('len_string') 567 lines = gn.get_lines('ss_names', (nbc, slen)) 568 self.assertEqual(len(lines), 4) 569 self.assertEqual(lines[0], 'upper') 570 self.assertEqual(gn.get_dim('num_side_ss1'), 5) 571 self.assertEqual(lines[1], 'left') 572 self.assertEqual(gn.get_dim('num_side_ss2'), 5) 573 self.assertEqual(lines[2], 'lower') 574 self.assertEqual(gn.get_dim('num_side_ss3'), 5) 575 self.assertEqual(lines[3], 'right') 576 self.assertEqual(gn.get_dim('num_side_ss4'), 5) 577 gn.close_file()
578
579 - def test_coord(self):
580 from ..genesis import Genesis 581 gn = Genesis(self.testfn) 582 ndim = gn.get_dim('num_dim') 583 nnode = gn.get_dim('num_nodes') 584 ndcrd = gn.get_array('coord', (ndim, nnode), 'float64').T.copy() 585 self.assertTrue((ndcrd >= -0.5-1.e-15).all()) 586 self.assertTrue((ndcrd <= 0.5+1.e-15).all()) 587 gn.close_file()
588
589 - def test_block(self):
590 from ..genesis import Genesis 591 gn = Genesis(self.testfn) 592 # name. 593 nblk = gn.get_dim('num_el_blk') 594 slen = gn.get_dim('len_string') 595 blks = gn.get_lines('eb_names', (nblk, slen)) 596 self.assertEqual(len(blks), 1) 597 # block 1. 598 ncell = gn.get_dim('num_el_in_blk1') 599 clnnd = gn.get_dim('num_nod_per_el1') 600 clnds = gn.get_array('connect1', (ncell, clnnd), 'int32') 601 self.assertEqual(clnds.min(), 1) 602 self.assertEqual(clnds.max(), 36) 603 self.assertEqual(gn.get_attr_text('elem_type', 'connect1'), 'SHELL4') 604 gn.close_file()
605
606 - def test_load(self):
607 from numpy import arange 608 from ..genesis import Genesis 609 # load from netCDF. 610 gn = Genesis(self.testfn) 611 gn.load() 612 gn.close_file() 613 # meta data. 614 self.assertEqual(gn.ndim, 2) 615 self.assertEqual(gn.nnode, 36) 616 self.assertEqual(gn.ncell, 25) 617 # blocks. 618 self.assertEqual(len(gn.blks), 1) 619 self.assertEqual(gn.blks[0][1], 'SHELL4') 620 self.assertEqual(gn.blks[0][2].shape, (25, 4)) 621 # BCs. 622 self.assertEqual(len(gn.bcs), 4) 623 self.assertEqual(gn.bcs[0][0], 'upper') 624 self.assertEqual(gn.bcs[0][1].shape, (5,)) 625 self.assertEqual(gn.bcs[0][2].shape, (5,)) 626 self.assertEqual(gn.bcs[1][0], 'left') 627 self.assertEqual(gn.bcs[1][1].shape, (5,)) 628 self.assertEqual(gn.bcs[1][2].shape, (5,)) 629 self.assertEqual(gn.bcs[2][0], 'lower') 630 self.assertEqual(gn.bcs[2][1].shape, (5,)) 631 self.assertEqual(gn.bcs[2][2].shape, (5,)) 632 self.assertEqual(gn.bcs[3][0], 'right') 633 self.assertEqual(gn.bcs[3][1].shape, (5,)) 634 self.assertEqual(gn.bcs[3][2].shape, (5,)) 635 # coordinate. 636 self.assertEqual(gn.ndcrd.shape, (36, 2)) 637 self.assertTrue((gn.ndcrd >= -0.5-1.e-15).all()) 638 self.assertTrue((gn.ndcrd <= 0.5+1.e-15).all()) 639 # mapper. 640 self.assertTrue((gn.emap == arange(25)+1).all())
641
642 - def test_convert_interior(self):
643 from ...block import Block 644 from ..genesis import Genesis 645 # load from netCDF. 646 gn = Genesis(self.testfn) 647 gn.load() 648 gn.close_file() 649 # convert. 650 blk = Block(ndim=gn.ndim, nnode=gn.nnode, ncell=gn.ncell, 651 fpdtype='float64') 652 gn._convert_interior_to(blk) 653 # test cell type. 654 self.assertTrue((blk.cltpn == 2).all()) 655 self.assertTrue((blk.clnds[:,0] == 4).all()) 656 # test index of node in cell. 657 self.assertEqual(blk.clnds[:,1:5].min(), 0) 658 self.assertEqual(blk.clnds[:,1:5].max(), 36-1) 659 # test group. 660 self.assertEqual(len(blk.grpnames), 1) 661 self.assertEqual(blk.clgrp.min(), 0) 662 self.assertEqual((blk.clgrp==0).sum(), 25)
663
664 - def test_toblock(self):
665 from numpy import abs 666 from ..genesis import Genesis 667 # load from netCDF. 668 gn = Genesis(self.testfn) 669 gn.load() 670 gn.close_file() 671 # convert. 672 blk = gn.toblock() 673 # test BC. 674 self.assertEqual(len(blk.bclist), 4) 675 self.assertEqual(blk.bclist[0].name, 'upper') 676 self.assertEqual(len(blk.bclist[0]), 5) 677 self.assertTrue((abs(blk.fccnd[blk.bclist[0].facn[:,0],1] - 0.5) 678 < 1.e-15).all()) 679 self.assertAlmostEqual(blk.fcara[blk.bclist[0].facn[:,0]].sum(), 1.0, 680 15) 681 self.assertEqual(blk.bclist[1].name, 'left') 682 self.assertEqual(len(blk.bclist[1]), 5) 683 self.assertTrue((abs(blk.fccnd[blk.bclist[1].facn[:,0],0] + 0.5) 684 < 1.e-15).all()) 685 self.assertAlmostEqual(blk.fcara[blk.bclist[1].facn[:,0]].sum(), 1.0, 686 15) 687 self.assertEqual(blk.bclist[2].name, 'lower') 688 self.assertEqual(len(blk.bclist[2]), 5) 689 self.assertTrue((abs(blk.fccnd[blk.bclist[2].facn[:,0],1] + 0.5) 690 < 1.e-15).all()) 691 self.assertAlmostEqual(blk.fcara[blk.bclist[2].facn[:,0]].sum(), 1.0, 692 15) 693 self.assertEqual(blk.bclist[3].name, 'right') 694 self.assertEqual(len(blk.bclist[3]), 5) 695 self.assertTrue((abs(blk.fccnd[blk.bclist[3].facn[:,0],0] - 0.5) 696 < 1.e-15).all()) 697 self.assertAlmostEqual(blk.fcara[blk.bclist[3].facn[:,0]].sum(), 1.0, 698 15) 699 # test geometry. 700 self.assertAlmostEqual(blk.ndcrd.min(), -0.5, 15) 701 self.assertAlmostEqual(blk.ndcrd.max(), 0.5, 15) 702 self.assertAlmostEqual(blk.clvol.sum(), 1.0, 14)
703
704 -class TestLarge(TestCase):
705 - def test_compare(self):
706 import os 707 from ...conf import env 708 from ..genesis import Genesis 709 gn1 = Genesis(os.path.join(env.datadir, 'cubic_t200mm.g')) 710 gn1.load() 711 gn1.close_file() 712 gn2 = Genesis(os.path.join(env.datadir, 'cubic_t200mm_large.g')) 713 gn2.load() 714 gn2.close_file() 715 self.assertTrue((gn1.ndcrd == gn2.ndcrd).all())
716