  Water-filling solutions play an important role in the designs for wireless
communications, e.g., transmit covariance matrix design. A traditional physical
understanding is to use the analogy of pouring water over a pool with
fluctuating bottom. Numerous variants of water-filling solutions have been
discovered during the evolution of wireless networks. To obtain the solution
values, iterative computations are required, even for simple cases with compact
mathematical formulations. Thus, algorithm design is a key issue for the
practical use of water-filling solutions, which however has been given marginal
attention in the literature. Many existing algorithms are designed on a
case-by-case basis for the variations of water-filling solutions and/or with
complex logics. In this paper, a new viewpoint for water-filling solutions is
proposed to understand the problem dynamically by considering changes in the
increasing rates on different subchannels. This fresh viewpoint provides useful
mechanism and fundamental information in finding the optimization solution
values. Based on the new understanding, a novel and comprehensive method for
practical water-filling algorithm design is proposed, which can be used for
systems with various performance metrics and power constraints, even for
systems with imperfect channel state information (CSI).
