- #1
MrRecycle
- 1
- 0
I'm implementing a Monte-Carlo tool to calculate capactiances of complex geometry.
There's a clever and pretty easy to implement randomized algorithm for doing this based on random walks. A lot of this ishttps://www.amazon.com/dp/1439800715/?tag=pfamazon01-20
The basic idea is that we can evaluate a potential at a given point by realizing that by the Laplace equation (which electostatic potentials follow), the potential at a point is equal to the mean potential of all the points on a spherical shell around it. In a monte carlo way, we can randomly hop to a point on this shell and ask if we've hit a boundary.. if we have, we know the potential there and we're done. Else we randomly walk again and again. It's not efficient, but computers are fast. The HUGE advantage is that it works just great with very complex and arbitrary boundaries.
Now walking a sphere is not as efficient as walking a cube, and it's possible to change the walk to jump to the surface of a cube instead of a sphere. In this case, the points on the cube boundary are not all equally likely.. and a Green's function determines the weighting of each part of a cube face.
Now here's my question. I have a point in space and I can evaluate its potential by this walking method. But my real goal is to estimate the gradient of this potential. (Actually, just the gradient in a given direction.. it's E dot N) At a crude level, I could compute the potential at x,y,z and then the potential at x+dx, y, z, and use a finite difference of that potential (divided by dx) to estimate the gradient. But this is not practical nor elegant. I feel very much that there's a clever way to change the problem somehow using a new VECTOR Green's function which will let me sample the values on the boundary and combining those weighted samples produce an estimate of that derivative.
I've seen fleeting references to this method in papers, math texts, and online but nothing solid.
In particular I'm hoping to learn how to derive these vector Greens functions from the scalar ones. In the simplest case, I have a spherical Green's function to measure potential.. it's just a constant! The potential follows classic electrostatics of a charge free volume... Gauss's law, following the Laplace equation. I want a similar spherical boundary with weightings on its surface that will produce an estimate of the derivative (dE/dz) in the Z direction. It's intuitively obvious that the "top" half of the sphere is going to have positive weights and the bottom half will have negative weights. What I don't know is what function those weights follow (based on the cosine of phi, perhaps.. this seems promising and elegant but I can't prove it!) Am I on the right track?
Pointers and tips are greatly welcomed.. names of a good book that describes such simple systems, web pages or papers.. whatever. I've worn out Google and Amazon all day long looking for a good reference for this and it's not clicking yet.
Thanks much!
There's a clever and pretty easy to implement randomized algorithm for doing this based on random walks. A lot of this ishttps://www.amazon.com/dp/1439800715/?tag=pfamazon01-20
The basic idea is that we can evaluate a potential at a given point by realizing that by the Laplace equation (which electostatic potentials follow), the potential at a point is equal to the mean potential of all the points on a spherical shell around it. In a monte carlo way, we can randomly hop to a point on this shell and ask if we've hit a boundary.. if we have, we know the potential there and we're done. Else we randomly walk again and again. It's not efficient, but computers are fast. The HUGE advantage is that it works just great with very complex and arbitrary boundaries.
Now walking a sphere is not as efficient as walking a cube, and it's possible to change the walk to jump to the surface of a cube instead of a sphere. In this case, the points on the cube boundary are not all equally likely.. and a Green's function determines the weighting of each part of a cube face.
Now here's my question. I have a point in space and I can evaluate its potential by this walking method. But my real goal is to estimate the gradient of this potential. (Actually, just the gradient in a given direction.. it's E dot N) At a crude level, I could compute the potential at x,y,z and then the potential at x+dx, y, z, and use a finite difference of that potential (divided by dx) to estimate the gradient. But this is not practical nor elegant. I feel very much that there's a clever way to change the problem somehow using a new VECTOR Green's function which will let me sample the values on the boundary and combining those weighted samples produce an estimate of that derivative.
I've seen fleeting references to this method in papers, math texts, and online but nothing solid.
In particular I'm hoping to learn how to derive these vector Greens functions from the scalar ones. In the simplest case, I have a spherical Green's function to measure potential.. it's just a constant! The potential follows classic electrostatics of a charge free volume... Gauss's law, following the Laplace equation. I want a similar spherical boundary with weightings on its surface that will produce an estimate of the derivative (dE/dz) in the Z direction. It's intuitively obvious that the "top" half of the sphere is going to have positive weights and the bottom half will have negative weights. What I don't know is what function those weights follow (based on the cosine of phi, perhaps.. this seems promising and elegant but I can't prove it!) Am I on the right track?
Pointers and tips are greatly welcomed.. names of a good book that describes such simple systems, web pages or papers.. whatever. I've worn out Google and Amazon all day long looking for a good reference for this and it's not clicking yet.
Thanks much!
Last edited by a moderator: