The framework of inner product norm preserving relaxation Runge-Kutta methods
(David I. Ketcheson, \emph{Relaxation Runge-Kutta Methods: Conservation and
Stability for Inner-Product Norms}, SIAM Journal on Numerical Analysis, 2019)
is extended to general convex quantities. Conservation, dissipation, or other
solution properties with respect to any convex functional are enforced by the
addition of a {\em relaxation parameter} that multiplies the Runge-Kutta update
at each step. Moreover, other desirable stability (such as strong stability
preservation) and efficiency (such as low storage requirements) properties are
preserved. The technique can be applied to both explicit and implicit
Runge-Kutta methods and requires only a small modification to existing
implementations. The computational cost at each step is the solution of one
additional scalar algebraic equation for which a good initial guess is
available. The effectiveness of this approach is proved analytically and
demonstrated in several numerical examples, including applications to
high-order entropy-conservative and entropy-stable semi-discretizations on
unstructured grids for the compressible Euler and Navier-Stokes equations