def laplace(self, physical_units=True): if not physical_units: return math.laplace(self.data, padding=_pad_mode(self.extrapolation)) else: if not np.allclose(self.dx, np.mean(self.dx)): raise NotImplementedError('Only cubic cells supported.') laplace = math.laplace(self.data, padding=_pad_mode(self.extrapolation)) return laplace / self.dx[0]**2
def test_vector_laplace(self): meshgrid = math.meshgrid(x=(0, 1, 2, 3), y=(0, -1)) cases = dict(padding=(extrapolation.ZERO, extrapolation.ONE, extrapolation.BOUNDARY, extrapolation.PERIODIC, extrapolation.SYMMETRIC), dx=(0.1, 1), dims=(None, ('x',), ('y',), ('x', 'y'))) for case_dict in [dict(zip(cases, v)) for v in product(*cases.values())]: laplace = math.laplace(meshgrid, **case_dict)
def laplace(self, physical_units=True, axes=None): if not physical_units: data = math.laplace(self.data, padding=_pad_mode(self.extrapolation), axes=axes) else: if not self.has_cubic_cells: raise NotImplementedError('Only cubic cells supported.') laplace = math.laplace(self.data, padding=_pad_mode(self.extrapolation), axes=axes) data = laplace / self.dx[0]**2 extrapolation = map_for_axes(_gradient_extrapolation, self.extrapolation, axes, self.rank) return self.copied_with(data=data, extrapolation=extrapolation, flags=())
def laplace(field: GridType, axes=None) -> GridType: """ Finite-difference laplace operator for Grids. See `phi.math.laplace()`. """ result = field._op1(lambda tensor: math.laplace( tensor, dx=field.dx, padding=field.extrapolation, dims=axes)) return result
def laplace(field: Grid, axes=None): result = field._op1(lambda tensor: math.laplace( tensor, dx=field.dx, padding=field.extrapolation, dims=axes)) return result