Commit 2ed23609 by Philipp Arras

Merge remote-tracking branch 'origin/extend_interpolator_boundary' into flexible_interpolator

parents eaf0fd28 c3773c76
 ... @@ -34,11 +34,15 @@ from .linear_operator import LinearOperator ... @@ -34,11 +34,15 @@ from .linear_operator import LinearOperator class LinearInterpolator(LinearOperator): class LinearInterpolator(LinearOperator): def __init__(self, domain, positions): def __init__(self, domain, positions): """ """ Multilinear interpolation for points in an RGSpace :param domain: :param domain: RGSpace RGSpace :param positions: :param positions: positions at which to interpolate, shape (dim, ndata) positions at which to interpolate Field with UnstructuredDomain, shape (dim, ndata) positions that are not within the RGSpace get wrapped according to periodic boundary conditions """ """ self._domain = makeDomain(domain) self._domain = makeDomain(domain) N_points = positions.shape[1] N_points = positions.shape[1] ... @@ -62,13 +66,14 @@ class LinearInterpolator(LinearOperator): ... @@ -62,13 +66,14 @@ class LinearInterpolator(LinearOperator): pos = positions/dist pos = positions/dist excess = pos-pos.astype(int64) excess = pos-pos.astype(int64) pos = pos.astype(int64) pos = pos.astype(int64) max_index = array(self.domain[0].shape).reshape((-1,)+(1,)) data = zeros((len(mg[0]), N_points)) data = zeros((len(mg[0]), N_points)) ii = zeros((len(mg[0]), N_points), dtype=int64) ii = zeros((len(mg[0]), N_points), dtype=int64) jj = zeros((len(mg[0]), N_points), dtype=int64) jj = zeros((len(mg[0]), N_points), dtype=int64) for i in range(len(mg[0])): for i in range(len(mg[0])): factor = prod(abs(1-mg[:, i].reshape((-1, 1))-excess), axis=0) factor = prod(abs(1-mg[:, i].reshape((-1, 1))-excess), axis=0) data[i, :] = factor data[i, :] = factor fromi = pos+mg[:, i].reshape((-1, 1)) fromi = (pos+mg[:, i].reshape((-1, 1))) % max_index ii[i, :] = arange(N_points) ii[i, :] = arange(N_points) jj[i, :] = ravel_multi_index(fromi, self.domain.shape) jj[i, :] = ravel_multi_index(fromi, self.domain.shape) self._mat = coo_matrix((data.reshape(-1), self._mat = coo_matrix((data.reshape(-1), ... ...
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!