I have heard that a fast fourier transform can be used to solve the poisson problem when the boundary conditions are all one type... Sine series for dirichlet, cosine for neumann, and both for periodic. Considering a 2D rectangular domain, suppose two opposite sides have periodic boundary conditions, and the other two have dirichlet conditions. Can a fast fourier transform be applied to solve this problem efficiently? If so, wouldn't the exponential form be sufficient? If not, what solver would you recommend for this situation?
-
2$\begingroup$ Have you seen this? $\endgroup$– J. M.Commented Jan 19, 2012 at 17:18
-
$\begingroup$ @J.M.: Could you elaborate on this paper in an answer form? $\endgroup$– PaulCommented Apr 11, 2012 at 19:11
-
$\begingroup$ I sorta kinda have my hands full on RL stuff, so it might take a while. But, if you've taken a glimpse at the paper, you'll see how the various DCTs/DSTs are suitably modified to suit boundary conditions... $\endgroup$– J. M.Commented Apr 14, 2012 at 2:42
1 Answer
You can separate the problem along the direction with Dirichlet conditions and then solve the 2D periodic problems. Exactly yours combination of boundary conditions is covered by Wilhelmson, Ericksen, JCP 1976 and it is easy to implement. You could also use FISHPACK, but it is old and buggy. (I'm working on a small solver for similar cases, but it is not ready for release yet and it will not be a big MPI thing, just for shared memory machines.)
Actually, my code is now an MPI thing and it solves this problem too: https://github.com/LadaF/PoisFFT