# Parallel 2d heat equation (implicit timestepping) using MPI

I am trying to solve the time dependent heat equation with backward euler timestepping and second order space finite differences. This results in a Poisson system needing to be inverted. In serial this is trivial to solve, but I am not sure how one would go about doing this parallel with MPI. Does anyone know how to solve the 2d heat equation (implicit) with MPI? I am using a 1d parallelization. I have looked online for different parallel solvers, but it has been difficult to find a paper that actually explains clearly how to implement this problem. Any references would be helpful.

Note: What I am really solving is the 2d heat equation where I used spectral differentiation (fft's) in the periodic horizontal and second order finite differences in the vertical (so I specify dirichlet BC's on the top and bottom boundaries). I parallelize my domain by decomposing it in strips of rows in the horizontal that way computing the global fft's is trivial on each process. I am then left with trying to solve what is basically a modified heat equation system for the vertical direction. If my domain was decomposed as groups of columns insted of strips of rows, then this would be trivial as it would amount to solving a bunch of tridiagonal systems. One thing that I could do is do an MPI_ALLTOALL call, solve the tridiagonal systems on each process, then MPI_ALLTOALL call back, but this is communication instensive.