From 49e5c43029041b454550a5d26c5af0b116d4239c Mon Sep 17 00:00:00 2001 From: Stephan Seitz <stephan.seitz@fau.de> Date: Thu, 16 Jan 2020 14:35:47 +0100 Subject: [PATCH] Fix FiniteDifferenceStencilDerivation.rotate_weights_and_apply Recent Numpy version do not support conversion from arbitrary iterables --- pystencils/fd/derivation.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pystencils/fd/derivation.py b/pystencils/fd/derivation.py index 4af4f3e36..2b67b89cf 100644 --- a/pystencils/fd/derivation.py +++ b/pystencils/fd/derivation.py @@ -1,6 +1,6 @@ +import itertools import warnings from collections import defaultdict -import itertools import numpy as np import sympy as sp @@ -184,6 +184,9 @@ class FiniteDifferenceStencilDerivation: result[max_offset - direction[1], max_offset + direction[0]] = weight return result + def __array__(self): + return np.array(self.as_array().tolist()) + def as_array(self): dim = len(self.stencil[0]) assert (dim == 2 or dim == 3), "Only 2D or 3D matrix representations are available" @@ -205,12 +208,12 @@ class FiniteDifferenceStencilDerivation: return result - def rotate_weights_and_apply(self, field_access: Field.Access, axis): + def rotate_weights_and_apply(self, field_access: Field.Access, axes): """derive gradient weights of other direction with already calculated weights of one direction via rotation and apply them to a field.""" dim = len(self.stencil[0]) assert (dim == 2 or dim == 3), "This function is only for 2D or 3D stencils available" - rotated_weights = np.rot90(np.array(self.as_array()).reshape(self.as_array().shape), 1, axis) + rotated_weights = np.rot90(np.array(self), 1, axes) result = [] max_offset = max(max(abs(e) for e in direction) for direction in self.stencil) -- GitLab