From a2b92569d21cadc74b750a27a1fd351a0859038d Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sat, 21 Mar 2020 17:04:27 +0100 Subject: [PATCH] local functions cannot be pickled (required for multiprocessing) --- processing/pre/geom_fromVoronoiTessellation.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/processing/pre/geom_fromVoronoiTessellation.py b/processing/pre/geom_fromVoronoiTessellation.py index b44b1cdc2..4c4514e7c 100755 --- a/processing/pre/geom_fromVoronoiTessellation.py +++ b/processing/pre/geom_fromVoronoiTessellation.py @@ -11,6 +11,12 @@ from scipy import spatial import damask +def findClosestSeed(fargs): + seeds, myWeights, point = fargs + tmp = np.repeat(point.reshape(3,1), len(seeds), axis=1).T + dist = np.sum((tmp - seeds)**2,axis=1) -myWeights + return np.argmin(dist) # seed point closest to point + scriptName = os.path.splitext(os.path.basename(__file__))[0] scriptID = ' '.join([scriptName,damask.version]) @@ -18,12 +24,6 @@ scriptID = ' '.join([scriptName,damask.version]) def Laguerre_tessellation(grid, seeds, grains, size, periodic, weights, cpus): - def findClosestSeed(fargs): - point, seeds, myWeights = fargs - tmp = np.repeat(point.reshape(3,1), len(seeds), axis=1).T - dist = np.sum((tmp - seeds)**2,axis=1) -myWeights - return np.argmin(dist) # seed point closest to point - if periodic: weights_p = np.tile(weights,27).flatten(order='F') # Laguerre weights (1,2,3,1,2,3,...,1,2,3) seeds_p = np.vstack((seeds +np.array([size[0],0.,0.]),seeds, seeds +np.array([size[0],0.,0.]))) @@ -33,7 +33,7 @@ def Laguerre_tessellation(grid, seeds, grains, size, periodic, weights, cpus): weights_p = weights.flatten() seeds_p = seeds - arguments = [[arg,seeds_p,weights_p] for arg in list(grid)] + arguments = [[seeds_p,weights_p,arg] for arg in list(grid)] if cpus > 1: # use multithreading pool = multiprocessing.Pool(processes = cpus) # initialize workers