1. A method for constructing a multi-level solver for a linear system, the method comprising the steps of: a. providing a processor to execute the following steps of the method; b. decomposing a planar graph A of the linear system into a plurality of pieces, wherein each of the pieces has a plurality of edges and a plurality of interface nodes that are fewer in number than the edges; c. producing a local preconditioner for each of the pieces of the planar graph A; d. producing a planar global preconditioner graph B of the planar graph A by aggregating the local preconditioners; e. generating a planar graph C based on the planar global preconditioner B of the planar graph A, wherein the planar graph C is smaller than the planar graph A; f. substituting the planar graph A with the planar graph C; g. iterating between steps b-f until the planar graph C reaches a predetermined size to generate a sequence of graph A, global preconditioner graph B, and graph C to form a preconditioning hierarchy, wherein the planar graph A has an iteration count, wherein the global preconditioner graph B has an iteration count, wherein the iteration count of the planar graph A is the same as the iteration count of the global preconditioner graph B, wherein the planar graph C is smaller than the planar graph A, wherein the planar graph C has an iteration count; and h. applying the preconditioning hierarchy to a recursive preconditioned iterative method to solve the linear system.