Hello,
The integral you want can be computed using the Laplace single layer potential operator. This operator computes:
\displaystyle\int_{\partial\Omega}G(\vec{z},\vec{x})f(\vec{x})\,\mathrm{d}s(\vec{x}),
where \vec{y} is a point not on \partial\Omega, and G(\vec{x},\vec{y})=1/(4\pi|\vec{x}-\vec{y}|). So in your case, you should get the result you want if you take:
\displaystyle f(\vec{x})=4\pi\mathrm{e}^{0.1(x_1+2x_2+3x_3)}.
The following code (using Bempp-cl) does this for the points (1,1,0), (2, 2, 0), (5, 6, 0), and (0, 0, 0):
import bempp.api
import numpy as np
grid = bempp.api.shapes.ellipsoid(1, 2, 3)
space = bempp.api.function_space(grid, "DP", 0)
@bempp.api.real_callable
def f(x, n, domain_index, result):
result[0] = 4 * np.pi * np.exp(0.1 * (x[0] + 2 * x[1] + 3 * x[2]))
function = bempp.api.GridFunction(space, fun=f)
points = np.array([
[1., 2., 5., 0.], [1., 2., 6., 0.], [0., 0., 0., 0.],
])
single = bempp.api.operators.potential.laplace.single_layer(space, points)
print(single.evaluate(function))
@timo will have to let you know which approximation schemes are used to compute these integrals, as I’m not sure.