Water filling for optimal power allocation in OFDM systems