CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM (
-   -   blockCoupled solver for multiple regions (

benk July 9, 2011 15:59

blockCoupled solver for multiple regions
I'm looking for some guidance on how to use the block-coupled solver over multiple regions. I have a feeling this is quite difficult to do (at least after reading slide 44 of

But if an example could be provided, this would be especially useful for electrochemical systems which are all similar (like fuel cells and batteries) but can be highly coupled and also exist over at least 3 different regions: anode | electrolyte | cathode

In these systems, there are normally 2 to 3 PDEs (all involving scalars) that exist over all three regions and these equations would all be the same over each region other than transport coefficients changing based on the region and some source terms usually go to 0 in the middle region.

There are also 2 more PDEs that exist only in the anode and the cathode and are also coupled to the multi-region PDEs.

cliffoi July 9, 2011 18:05

Hi Ben,
So if I understand you correctly, you have 5 | 2 | 5 equations in your 3 regions. You have three options here.
  1. Easiest and probably the first place to start is to solve the full 5x5 system of equations over all 3 regions and to cancel out the unused equations in the electrolyte by careful selection of equation coefficients in this region. This is probably not the optimal approach but it's fully implicit, relatively simple and you can start getting results almost immediately.
  2. Solve the 3 regions in a segregated fashion using 5x5 block-coupled solution in two of the regions and 2x2 in the other, and update the interface boundary conditions after each solver call. Convergence could be slow or unstable since you are explicitly updating boundary contributions but if you really need to use a separate mesh for each region this would be your starting point. You will need to use ggi or patchToPatch interpolation to exchange information at the interfaces so this is not for the faint of heart.
  3. Set up the equations as in option 2, but instead of using explicit boundary updates you exchange information at every solver iteration. This is what I was referring to on slide 44 of my OpenFOAM Workshop presentation. I had to code up my own solvers for this and they are very problem specific at the moment. I will probably look at improving this in the near future but right now it'll involve a lot of work.

Of the three I'd really suggest you look at option 1. If the number of cells in you electrolyte region is relatively small, the penalty for taking this "lazy route" probably won't be big.

hua1015 February 13, 2014 23:35

Hi Ben,
Recently, I am interested in the same problem and have not any ideas. Have you got any progress?

All times are GMT -4. The time now is 16:24.