I have had a class on numerical methods in which we learned the basics of boundary value problems, Lax equivalence theorem, consistency, stability, and a small amount of PDE stuff (mostly just Von Neumann stability analysis, and second order (centered) finite difference approximations for linear hyperbolic equations.
I want to simulate wave equations, both linear and nonlinear. However the more I look into hyperbolic PDEs, the more I realize that I do not know enough to continue.
From online notes, I learned about the CFL number, that numerical dispersion and dissipation exist , and that it is possible for a method to cause a phase shift (I don't know how to estimate any of these quantities). I have also heard of the method of lines, but my only attempt produced an approximation that quickly went to zero.
I would like to find a resource that I can study carefully, with examples of the above. I would like to learn about alternating implicate methods (I will need an implicate method to study waves with a (physical) dispersion relation), the method of lines and how to analyse dispersion/dissipation/phase problems. Higher-order methods would be a bonus.
Online notes are alright, but they tend to be rather incomplete. I would really like to get a full textbook on the subject. Something specializing in hyperbolic PDEs would be nice, but I am not against more general books.
I would like to know people's favorites, and the reasons that they are thought to be good books.
It is a rather wide spectrum of topics you for which you request references. Though there certainly is literature available that attempts to cover both the theory of (hyperbolic) PDEs as well as their discretisation in the same text, in my experience they rarely do a very good job.
Since your experience with numerical methods for PDEs are at an introductory level, my strong recommendation for a first source is High order difference methods for time dependent PDE by Bertil Gustafsson. It is a relatively easy read, suitable as an introductory text to the more advanced aspects of PDE discretisations with a focus on finite difference methods. It touches upon topics such as explicit/implicit methods, CFL, the method of lines, analytic and numerical dispersion relations and high order methods. In particular, it includes a chapter on Summation-by-Parts operators and stability beyond von Neumann (which will be absolutely crucial when you start to handle boundary conditions and/or non-linear problems). It does not cover a very deep mathematical analysis; it just scrapes the surface of each topic deep enough to give an understanding of its importance and how to handle its intricacies.
Now, when it comes to hyperbolic PDEs, some mathematical depth is necessary. We cannot expect to obtain a reliable (or even sensible) numerical solution without some understanding of the problem at hand. In order to have any chance at tackling a hyperbolic initial-boundary value problem, an understanding of the concept(s) of well-posedness is necessary; which often boils down to an understanding of boundary conditions. My go-to texts are Time dependent problems and difference methods by Gustafsson, Kreiss and Oliger, as well as Initial-boundary value problems and the Navier-Stokes equations by Kreiss and Lorenz. They cover the theory of hyperbolic and parabolic initial-, boundary- and initial-boundary value problems in depth. The major advantage with these books is that there is a crystal clear connection between the continuous side (the PDE) and the discrete side (the numerical approximation) of the problem, in particular when it comes to well-posedness (PDE) and stability (approximation) and boundary conditions (PDE and approximation). These texts are somewhat more demanding however, relying on some familiarity with functional analysis.
The authors of the above books were all central figures in the development of the modern theory of stability and convergence of numerical schemes in the 70s, 80s and 90s. I think they will do a good job at picking you up where the introductory courses leave you, and bring you to a level of understanding where you can solve some really interesting problems.