Exemple #1
0
def seeds_from_random(size, num_grains, phase_label, grid_size=None,
                      orientation_coordinate_system=None):
    from damask import seeds
    from damask import Rotation

    size = np.array(size)
    grid_size = grid_size and np.array(grid_size)

    position = seeds.from_random(size, num_grains, cells=grid_size)
    rotation = Rotation.from_random(shape=(num_grains,))

    out = {
        'microstructure_seeds': {
            'position': position,
            'orientations': {
                'type': 'quat',
                'quaternions': rotation.quaternion,
                'orientation_coordinate_system': orientation_coordinate_system,
                'unit_cell_alignment': {
                    'x': 'a',
                    'z': 'c',
                },
                'P': -1,
            },
            'size': size,
            'random_seed': None,
            'phase_label': phase_label,
        }
    }
    return out
Exemple #2
0
 def test_from_table_recover(self,tmp_path):
     cells = np.random.randint(60,100,3)
     size = np.ones(3)+np.random.rand(3)
     s = seeds.from_random(size,np.random.randint(60,100))
     grid = Grid.from_Voronoi_tessellation(cells,size,s)
     coords = grid_filters.coordinates0_point(cells,size)
     t = Table(np.column_stack((coords.reshape(-1,3,order='F'),grid.material.flatten(order='F'))),{'c':3,'m':1})
     assert grid_equal(grid.sort().renumber(),Grid.from_table(t,'c',['m']))
Exemple #3
0
 def test_regrid_double_cells(self):
     size = np.random.random(3)  # noqa
     cells = np.random.randint(8, 32, (3))
     g = Grid.from_Voronoi_tessellation(cells, size,
                                        seeds.from_random(size, 10))
     F = np.broadcast_to(np.eye(3), tuple(cells) + (3, 3))
     assert all(
         g.scale(cells * 2).material.flatten() == g.material.flatten()[
             grid_filters.regrid(size, F, cells * 2)])
Exemple #4
0
 def test_from_geom_reconstruct(self):
     grid = np.random.randint(10, 20, 3)
     N_seeds = np.random.randint(30, 300)
     size = np.ones(3) + np.random.random(3)
     coords = seeds.from_random(size, N_seeds, grid)
     geom_1 = Geom.from_Voronoi_tessellation(grid, size, coords)
     coords, material = seeds.from_geom(geom_1)
     geom_2 = Geom.from_Voronoi_tessellation(grid, size, coords, material)
     assert (geom_2.material == geom_1.material).all()
Exemple #5
0
 def test_from_grid_reconstruct(self):
     cells = np.random.randint(10, 20, 3)
     N_seeds = np.random.randint(30, 300)
     size = np.ones(3) + np.random.random(3)
     coords = seeds.from_random(size, N_seeds, cells)
     grid_1 = Grid.from_Voronoi_tessellation(cells, size, coords)
     coords, material = seeds.from_grid(grid_1)
     grid_2 = Grid.from_Voronoi_tessellation(cells, size, coords, material)
     assert (grid_2.material == grid_1.material).all()
Exemple #6
0
 def test_from_geom_selection(self, periodic, average, invert):
     grid = np.random.randint(10, 20, 3)
     N_seeds = np.random.randint(30, 300)
     size = np.ones(3) + np.random.random(3)
     coords = seeds.from_random(size, N_seeds, grid)
     geom = Geom.from_Voronoi_tessellation(grid, size, coords)
     selection = np.random.randint(N_seeds) + 1
     coords, material = seeds.from_geom(geom,
                                        average=average,
                                        periodic=periodic,
                                        invert=invert,
                                        selection=[selection])
     assert selection not in material if invert else (selection
                                                      == material).all()
Exemple #7
0
 def test_from_random(self, grid):
     N_seeds = np.random.randint(30, 300)
     size = np.ones(3) + np.random.random(3)
     coords = seeds.from_random(size, N_seeds, grid)
     assert (0 <= coords).all() and (coords < size).all()