From bffeaa980dea7251b045b0e834e74a163dc32861 Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Mon, 3 Jun 2019 14:42:35 -0400 Subject: [PATCH] restored Martin's logic, not clear why seemed to be broken with PE's former tests... --- processing/pre/geom_canvas.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/processing/pre/geom_canvas.py b/processing/pre/geom_canvas.py index e444aaaf3..a44065dd2 100755 --- a/processing/pre/geom_canvas.py +++ b/processing/pre/geom_canvas.py @@ -50,27 +50,25 @@ for name in filenames: geom = damask.Geom.from_file(StringIO(''.join(sys.stdin.read())) if name is None else name) origin = geom.get_origin() size = geom.get_size() - grid = canvasgrid = geom.get_grid() + old = new = geom.get_grid() offset = np.asarray(options.offset) if options.grid is not None: - canvasgrid = np.maximum(1, - np.array([int(o*float(n.lower().replace('x',''))) if n.lower().endswith('x') \ - else int(n) for o,n in zip(grid,options.grid)],dtype=int)) + new = np.maximum(1, + np.array([int(o*float(n.lower().replace('x',''))) if n.lower().endswith('x') \ + else int(n) for o,n in zip(old,options.grid)],dtype=int)) - canvas = np.full(canvasgrid,options.fill if options.fill is not None - else np.nanmax(geom.microstructure)+1,geom.microstructure.dtype) + canvas = np.full(new,options.fill if options.fill is not None + else np.nanmax(geom.microstructure)+1,geom.microstructure.dtype) + + l = np.clip( offset, 0,np.minimum(old +offset,new)) + r = np.clip( offset+old,0,np.minimum(old*2+offset,new)) + L = np.clip(-offset, 0,np.minimum(new -offset,old)) + R = np.clip(-offset+new,0,np.minimum(new*2-offset,old)) + canvas[l[0]:r[0],l[1]:r[1],l[2]:r[2]] = geom.microstructure[L[0]:R[0],L[1]:R[1],L[2]:R[2]] - l = np.maximum( 0, offset) - r = np.minimum(grid,canvasgrid+offset) - L = l - offset - R = r - offset - - canvas [L[0]:R[0],L[1]:R[1],L[2]:R[2]] \ - = geom.microstructure[l[0]:r[0],l[1]:r[1],l[2]:r[2]] - - damask.util.croak(geom.update(canvas,origin=origin+offset*size/grid,rescale=True)) + damask.util.croak(geom.update(canvas,origin=origin+offset*size/old,rescale=True)) geom.add_comments(scriptID + ' ' + ' '.join(sys.argv[1:])) if name is None: