Source: http://web.cecs.pdx.edu/~mperkows/CLASS_573/Kumar_2007/shirazi_1995_FPL95_implementation_2D.pdf