A general purpose 2D Schrödinger solver with open/closed boundary conditions for quantum device analysis