The previous answer is correct, but does not give a practical algorithm for humans, because it is a nightmare to calculate the curvature. You need a good hand algorithm, or else you need a symbolic manipulation package. I prefer hand calculations for the symmetric Ansatzes, because they are always revealing. The traditional simplified method is to use curvature forms, and this method is described in Misner Thorne and Wheeler. It is indespensible for understanding Kerr Solutions. It also pays to study the Newman-Penrose formalism, because it gives physical insight. I prefer to use my own mathematically inelegant home-made method, because much of the simplification in the advanced methods is really only due to the use of what is called "sparse-matrix computation" in the computer science literature. If you have a matrix which is mostly zeros, like the on-diagonal curvature, you shouldn't write it in matrix form, unless you want to build good strong writing-hand muscles by writing "0" a lot. Introduce noncovariant basis tensors "l_{ij}" which are nonzero in i,j position. Then write the metric in a mostly-plus convention as: $$g_{\mu\nu} = -A l_{00} + B l_{11} + C l_{22} $$ $$g^{\mu\nu} = -{1\over A}l^{00} + {1\over B} l^{11} + {1\over C}l^{22}$$ Where I have gone to three dimensions so as to prevent a hopelessly long answer, and where I hope the notation is clear. For theoretical elegance, the basis tensor $l_{00}$ should really be written as $l^{00}_{\mu\nu}$, and so on for $l_{11},l_{22},l_{33}$, if you want it to be consistent with the usual index conventions, but since the goal is to get the writing muscles as flabby as possible, don't do that! Since the l's are ridiculously coordinate dependent, you can express ridiculously non-tensorial objects like the connection coefficients and the pseudo-stress-energy tensor. ### Calculating the connection There are tricks to calculating the connection, like deriving the geodesic equation by doing a variation of the arc-length ansatz, but I won't use them. If you use the basis-tensors, it is no work at all to get the connection coefficients, and with practice, you can do most of the work in your head for the simpler Ansatzes. First, differentiate the metric. Since "diagonal" is not much of a simplification, I will assume "diagonal and dependent only on x1 and x0". I will use a prime for differentiating with respect to $x_1$, and a dot for differentiating with respect to $x_0$: $$g_{\mu\nu,\alpha} = - \dot{A} l_{000} - A' l_{001} + \dot{B}l_{110} + B'l_{111} + \dot{C}l_{220} + C' l_{221}$$ Notice that this is symmetric on the first two indices, and nothing special on the third index. The Christoffel symbols are symmetric on the last two indices, and nothing special on the first. You transfer symmetry between index positions like this: $$P_{i|jk} = Q_{ij|k} + Q{ik|j} - Q{jk|i}$$ Where P is symmetric in the last two position, and Q is symmetric in the first two. Get used to this, because it comes up a lot. The first term has the same index order just by using a good index order convention, the second term forcibly symmetrizes the second and third positions, and the last term is required so that P keeps all the information in Q. You can do this procedure on the l's automatically, just by replacing $l_{001}$ with $l_{001} + l_{010} - l_{100}$, and so on. Here is the formula for the all-lower-index $\Gamma$ (its not written this way ever, because $\Gamma$ is not a tensor, but I do it here, just to spare the writing hand). $$\Gamma_{\mu|\nu\sigma} = {1\over 2} ( \dot{A} l_{000} - A'(l_{001} + l_{010} -l_{100}) $$ $$+ \dot{B} (l_{110} + l_{101} - l_{011}) + B' l_{111}$$ $$+ \dot{C}(l_{220} + l_{202} - l_{022}) + C'(l_{221} + l_{212} + l_{122})$$ To raise the indices when the metric is diagonal is trivial, you just raise the index on the l and divide by the appropriate diagonal entry: $$\Gamma^\mu_{\nu\sigma} = {\dot{A}\over 2A} l^0_{00} - {A'\over 2A} (l^0_{01} + l^0_{10}) - {A'\over 2B} l^0_{11} + {\dot{B}\over 2B}(l^1_{10} + l^1_{01}) - {\dot{B}\over 2B}l^0_{11} + {B'\over 2B} l_{111} +... $$ Where the rest should be obvious. With practice, this takes a minute to do by hand, for any normal ansatz. ### Calculating the Ricci curvature. To calculate the curvature, it is extremely important to _trace as you go_. The Reimann curvature always has a bunch of Weyl junk that you mostly don't care about. The way to do this is to differentiate the expression for $\Gamma$, tacking an index on the end, automatically antisymmetrize the new lower index with the first index (this can be done in your head), then trace the top and bottom index (this can also be done in your head--- throw away the term unless the up and down index on the l are equal). Next you need to multiply $\Gamma$ with itself. There is no simplification here--- you work out all the terms. But it is a finite calculation, not a hopeless one. You don't get a contribution unless the leftmost lower index is the same as the upper index, so that leaves only a few terms, and further, you get zero on some l-terms after antisymmetrizing and tracing (in your head). Then there are only a handful of remaining terms, and these are real contributions to the curvature, so there is no way to avoid calculating them. This is like solving the Rubik's cube. The first time takes a while, but with practice it only takes some minutes for simpler Ansatzes and some hours for the worst ones.