preparing for actual use
This commit is contained in:
parent
348a91d503
commit
fa39a7423b
|
@ -338,7 +338,7 @@ def node_coord0_gridSizeOrigin(coord0,ordered=False):
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
coord0 : numpy.ndarray
|
coord0 : numpy.ndarray
|
||||||
array of undeformed nodal coordinates
|
array of undeformed nodal coordinates.
|
||||||
ordered : bool, optional
|
ordered : bool, optional
|
||||||
expect coord0 data to be ordered (x fast, z slow).
|
expect coord0 data to be ordered (x fast, z slow).
|
||||||
|
|
||||||
|
@ -365,7 +365,19 @@ def node_coord0_gridSizeOrigin(coord0,ordered=False):
|
||||||
|
|
||||||
|
|
||||||
def regrid(size,F,new_grid):
|
def regrid(size,F,new_grid):
|
||||||
"""tbd."""
|
"""
|
||||||
|
Return mapping from coordinates in deformed configuration to a regular grid
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
size : numpy.ndarray
|
||||||
|
physical size
|
||||||
|
F : numpy.ndarray
|
||||||
|
deformation gradient field
|
||||||
|
new_grid : numpy.ndarray
|
||||||
|
new grid for undeformed coordinates
|
||||||
|
|
||||||
|
"""
|
||||||
c = cell_coord0(F.shape[:3][::-1],size) \
|
c = cell_coord0(F.shape[:3][::-1],size) \
|
||||||
+ cell_displacement_avg(size,F) \
|
+ cell_displacement_avg(size,F) \
|
||||||
+ cell_displacement_fluct(size,F)
|
+ cell_displacement_fluct(size,F)
|
||||||
|
@ -376,4 +388,4 @@ def regrid(size,F,new_grid):
|
||||||
c[np.where(c[:,:,:,d]>outer[d])] -= outer[d]
|
c[np.where(c[:,:,:,d]>outer[d])] -= outer[d]
|
||||||
|
|
||||||
tree = spatial.cKDTree(c.reshape((-1,3)),boxsize=outer)
|
tree = spatial.cKDTree(c.reshape((-1,3)),boxsize=outer)
|
||||||
return tree.query(cell_coord0(new_grid,outer))[1]
|
return tree.query(cell_coord0(new_grid,outer))[1].flatten()
|
||||||
|
|
|
@ -77,3 +77,9 @@ class TestGridFilters:
|
||||||
grid = np.random.randint(8,32,(3))
|
grid = np.random.randint(8,32,(3))
|
||||||
F = np.broadcast_to(np.random.random((3,3)), tuple(grid)+(3,3)) # noqa
|
F = np.broadcast_to(np.random.random((3,3)), tuple(grid)+(3,3)) # noqa
|
||||||
assert np.allclose(eval('grid_filters.{}_displacement_fluct(size,F)'.format(mode)),0.0)
|
assert np.allclose(eval('grid_filters.{}_displacement_fluct(size,F)'.format(mode)),0.0)
|
||||||
|
|
||||||
|
def test_regrid(self):
|
||||||
|
size = np.random.random(3)
|
||||||
|
grid = np.random.randint(8,32,(3))
|
||||||
|
F = np.broadcast_to(np.eye(3), tuple(grid[::-1])+(3,3))
|
||||||
|
assert all(grid_filters.regrid(size,F,grid) == np.arange(grid.prod()))
|
||||||
|
|
Loading…
Reference in New Issue