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?
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