Computational Electromagnetics by John Holmes, Andrew Petersen & Christos Christopoulos