def evaluate(self, coeffs, bvec): ppkernel = self.kernel.postprocess_at_target( self.kernel.get_expression(bvec), bvec) from sumpy.tools import mi_derivative result = sum( coeff * mi_derivative(ppkernel, bvec, mi) for coeff, mi in zip(coeffs, self.get_coefficient_identifiers())) return result
def translate_from(self, src_expansion, src_coeff_exprs, dvec): logger.info( "building translation operator: %s(%d) -> %s(%d): start" % (type(src_expansion).__name__, src_expansion.order, type(self).__name__, self.order) ) from sumpy.tools import mi_derivative expr = src_expansion.evaluate(src_coeff_exprs, dvec) result = [mi_derivative(expr, dvec, mi) for mi in self.get_coefficient_identifiers()] logger.info("building translation operator: done") return result
def coefficients_from_source(self, avec, bvec): from sumpy.tools import mi_derivative ppkernel = self.kernel.postprocess_at_source(self.kernel.get_expression(avec), avec) return [mi_derivative(ppkernel, avec, mi) for mi in self.get_coefficient_identifiers()]