def density(r, L, dx): assert r.ndim == 2 M = int(round(L / dx)) dx = L / M inds = lattice.r_to_i(r, L, dx) f = np.zeros(r.shape[1] * (M,), dtype=np.int) if f.ndim == 1: field_numerics.density_1d(inds, f) elif f.ndim == 2: field_numerics.density_2d(inds, f) elif f.ndim == 3: field_numerics.density_3d(inds, f) else: raise Exception('Density calc not implemented in this dimension') return f / dx ** r.shape[1]
def r_to_i(self, r): return lattice.r_to_i(r, self.L, self.dx)