I use arpack to solve the 2D Schrodinger, and eigenvalue problem of the form
$$Hx = \epsilon x$$
on a uniform grid. All eigenvectors are real in my case.
Arpack doesn't normalise the eigenvectors, and phases between the eigenvectors will differ (some are multiplied by -1, some aren't).
Normalising the eigenvectors after the arpack run is easy, but I am not sure how to ensure all eigenvectors have the same phase. Is there some way to compare the phase between two orthogonal eigenvectors (say, by checking the sign near a boundary)?