I`m new to OpenFOAM and I`m trying to understand how does the GAMG solver (and other solvers, too) work. Unfortunately, in the documentation there is too few information about the algorithms used. So I have a couple of questions on the essentials of GAMG and OpenFOAM.

The first one is about the faceAreaPair and algebraicPair agorithms - unfortunately, I was unable to find any description of them.

The second question is about the meaning of the parameters "scaleCorrection" and "mergeLevels". As I understood from the source code, the first parameter is automatically set to "true" when the matrix is symetric. About the second, everywhere it is said that it is safe to set it to "1", but when the mesh is very simple, the values "2" or even "3" are possible. I've tried setting "mergeLevels" to 2 in the icoFoam/cavity case with
finer grid, but it gave any advantages, it took even more time to solve the problem

And the last question is about how Domain Decomposition is done in OpenFOAM. As I understood, all the linear solvers are sequential.
The interfaces are passed as arguments to the matrix-vector-multiplication function and somehow treated there. Does it mean that if we want to to use any OpenFOAM solver to solve an arbitrary system Ax=b (in parallel), we must know the problem geometry?