I think that you will have to solve the equations sequentially. The only issue would be if you need to loop around the transport equations because of the coupling.

Block solution would be cool, but would only be possible if someone was willing (and able) to template fvm to accept a field of arbitrary data type - something I thought about years ago but quickly decided was beyond my programming ability.

Actually, you are trampling all over my "work in progress" :-) This has been done recently, it is not in a public domain yet but it will eventually get there. You can get the gist from the top-level code organisation - the quoted stuff will do conjugate heat transfer in 2 regions connected by a coupled boundary conditions on the boundary. The code allows you to couple as many equations as you like, across as many variables as you like, which are then solved as a "ganged" matrix.

Hi Hrvoje,
I can't tell you how excited I am to hear about the coupledFvScalarMatrix class you are working on. Its exactly what I've been looking for. Even though it's not in the public domain yet, is it available in the development version for us to start playing around with?

Actually, the templating is done as well. You can now have component-coupled vector and tensor variables, for implicit div-grad-transpose terms and similar. I have done bending-dominated linear stress analysis in 1 solver call, which was the original objective.

For the things you wish to do, I'm not sure which approach is better. Multi-phase will like the matrix coupling; otherwise you have to invent new "multiple vector together" variables, which looks ugly in the top-level code. FOr example, imagine what it feels like to calculate a gradient of a variable in a compressible density-based solver (rho, rhoU, rhoE). The middle one out of 5 is a vector so a grad of this thingy is going to be ugly...

In any case, the solvers are working, parallelism is cooking and in general I am getting there. The real power is when you put all components together. As for the code, I have to say I feel a bit like the Pinball Wizzard: both are very very clean and actually tidy up a lot of existing mess as well.