Beispiel #1
0
 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()
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
 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()
Beispiel #5
0
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)
Beispiel #7
0
        '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)