def test_write_hdf5(self): """Test the method to write the mesh in HDF5 format.""" grid = petibmpy.CartesianGrid(config=self.config) filepath = pathlib.Path('grid.h5') grid.write_hdf5(filepath) coords = petibmpy.read_grid_hdf5(filepath, 'vertex') for x, x2 in zip(grid.get_gridlines(), coords): self.assertTrue(numpy.allclose(x, x2)) filepath.unlink()
def test_grid_create(self): """Create a grid given a configuration.""" grid = petibmpy.CartesianGrid(config=self.config) self.assertEqual(len(grid.gridlines), 3) for i, x in enumerate(grid.get_gridlines()): config = self.config[i] self.assertAlmostEqual(x[0], config['start'], places=12) self.assertAlmostEqual(x[-1], config['subDomains'][-1]['end'], places=12)
def test_num_cells(self): """Test the method to get the number of cells.""" start, end, width = -10.0, 10.0, 0.1 num = int(abs(end - start) / width) subconfig = dict(start=start, subDomains=[dict(end=end, width=width)]) config = [] for dim, direction in zip([1, 2, 3], ['x', 'y', 'z']): subconfig['direction'] = direction config.append(copy.deepcopy(subconfig)) grid = petibmpy.CartesianGrid(config=config) n_cells = grid.get_number_cells() self.assertEqual(n_cells, num**dim)
def test_write_yaml(self): """Test the method to create the YAML configuration file.""" grid = petibmpy.CartesianGrid(config=self.config) filepath = pathlib.Path('mesh.yaml') grid.write_yaml(filepath, ndigits=12) with open(filepath, 'r') as infile: lines = infile.readlines() datadir = pathlib.Path(__file__).absolute().parent / 'data' filepath2 = datadir / 'mesh.yaml' with open(filepath2, 'r') as infile: lines2 = infile.readlines() self.assertEqual(len(lines), len(lines2)) for line, line2 in zip(lines, lines2): self.assertEqual(line, line2) filepath.unlink()
show_figure = False config_x = get_gridline_config(box1.xstart, box2.xstart, box3.xstart, box3.xend, box2.xend, box1.xend, width2, width3, 1.2, 1.1, 1.03, 1.2) config_y = get_gridline_config(box1.ystart, box2.ystart, box3.ystart, box3.yend, box2.yend, box1.yend, width2, width3, 1.2, 1.1, 1.1, 1.2) config_z = get_gridline_config(box1.zstart, box2.zstart, box3.zstart, box3.zend, box2.zend, box1.zend, width2, width3, 1.2, 1.1, 1.1, 1.2) config = [ dict(direction='x', start=box1.xstart, subDomains=config_x), dict(direction='y', start=box1.ystart, subDomains=config_y), dict(direction='z', start=box1.zstart, subDomains=config_z) ] grid = petibmpy.CartesianGrid(config) print(grid) simudir = pathlib.Path(__file__).absolute().parents[1] filepath = simudir / 'mesh.yaml' grid.write_yaml(filepath, ndigits=10) grid.print_info() if show_figure: fig, ax = grid.plot_gridlines() fig.tight_layout() pyplot.show()
ratio = 1.05 # stretching ratio info = [{'direction': 'x', 'start': xlim[0], 'subDomains': [{'end': xbox[0], 'width': width, 'stretchRatio': ratio, 'reverse': True}, {'end': xbox[1], 'width': width, 'stretchRatio': 1.0}, {'end': xlim[1], 'width': width, 'stretchRatio': ratio}]}, {'direction': 'y', 'start': ylim[0], 'subDomains': [{'end': ybox[0], 'width': width, 'stretchRatio': ratio, 'reverse': True}, {'end': ybox[1], 'width': width, 'stretchRatio': 1.0}, {'end': ylim[1], 'width': width, 'stretchRatio': ratio}]}] mesh = petibmpy.CartesianGrid(info) print(mesh) simudir = pathlib.Path(__file__).absolute().parents[1] filepath = simudir / 'mesh.yaml' mesh.write_yaml(filepath, ndigits=10)
'end': ylim[1], 'width': width, 'stretchRatio': 1.3 }] }, { 'direction': 'z', 'start': zlim[0], 'subDomains': [{ 'end': zbox[0], 'width': width, 'stretchRatio': 1.3, 'reverse': True }, { 'end': zbox[1], 'width': width, 'stretchRatio': 1.0 }, { 'end': zlim[1], 'width': width, 'stretchRatio': 1.3 }] }] mesh = petibmpy.CartesianGrid(config=config) print(mesh) simudir = pathlib.Path(__file__).absolute().parents[1] filepath = simudir / 'mesh.yaml' mesh.write_yaml(filepath, ndigits=10)