In many applications either the geometry or material composition or non linearity do not lend themselves to an analytic solution. In such cases, numerical methods are the only method for finding a solution. These methods include methods that are based on converting the differential equations to a set of algebraic equations through discretizing the physical region or through finite element methods by discretizing the region into finite elements and then apply the physical laws to each element. With the advent of fast computers and vast storage capabilities, it has become easier to implement numerical methods to solve complex problems. Furthermore, new software enables scientists and engineers to solve numerically complex and large problems that do not require the development of individual software to solve such problems.