From 381c95bd1e6c65600cb1d793942993c703085a9e Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Wed, 4 Dec 2019 10:17:55 +0100 Subject: [PATCH] WIP: regrid functionality --- python/damask/grid_filters.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/python/damask/grid_filters.py b/python/damask/grid_filters.py index 924242c58..455e93aba 100644 --- a/python/damask/grid_filters.py +++ b/python/damask/grid_filters.py @@ -1,3 +1,4 @@ +from scipy import spatial import numpy as np def __ks(size,field,first_order=False): @@ -120,3 +121,18 @@ def node_2_cell(node_data): + np.roll(node_data,1,(0,1)) + np.roll(node_data,1,(1,2)) + np.roll(node_data,1,(2,0)))*0.125 return c[:-1,:-1,:-1] + +def regrid(size,F,new_grid): + """tbd.""" + c = coord0_cell(F.shape[:3][::-1],size) \ + + displacement_avg_cell(size,F) \ + + displacement_fluct_cell(size,F) + + outer = np.dot(np.average(F,axis=(0,1,2)),size) + for d in range(3): + c[np.where(c[:,:,:,d]<0)] += outer[d] + c[np.where(c[:,:,:,d]>outer[d])] -= outer[d] + + tree = spatial.cKDTree(c.reshape((-1,3)),boxsize=outer) + d,i = tree.query(coord0_cell(new_grid,outer)) + return i