CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM (
-   -   Merge solvers (

lovecraft22 June 1, 2012 13:42

Merge solvers
Hi all;
I know openFoam has a lot of solvers for different situations (MRF, moving meshes, multiphase and so on).

Let's say I have a case which includes many of the above mentioned situations, so I may have a moving mesh, a MRF, many phases, combustion, chemical reactions and so on (of course I'm just speculating).

Now, how could I solve such a case? Maybe there's the possibility to merge "single situations" solvers into a multiple situations unique solver?

Thank you!

wyldckat June 1, 2012 13:58

Hi lovecraft,

Mmm... well, there's this:
As for mesh motion, there are few utilities in OpenFOAM just for that, which I saw someone ask about two the other day: moveMesh vs. moveDynamicMesh

But then there is the X factor: for example, taking into account radiation could affect the flow equations, because it would expand the fluid in zones where it was reflected, or modify the viscosity of the fluid. Such an example is that scalarTransportFoam is a nice thing to have, but it doesn't solve how the scalar affects the flow; this is implied on that wiki page How to add temperature to icoFoam:

This HOWTO will cover rudimentary methods for altering an existing solver (icoFoam) to solve thermal transport.
Last but not least: have a very nice cluster nearby... the more you try to solve, the longer it will take and more memory it will require.

Best regards,

lovecraft22 June 1, 2012 14:05

Thanks Bruno;
mine was just a generic question. I don't need to solve a moving mesh, i just picked some stuff up to make an example as I was wondering how to solve multiple flow features at once.

lovecraft22 June 1, 2012 14:19

Actually, the superSolver seems to be something different from what I need… it solves one situation, then solves another. Am I correct?

I may need to solve many of them at once… So, let's say, I don't need to move my mesh, than do something else on what happens after my mesh moved… I may need to move the mesh while two fluid mix together for instance…

marupio June 1, 2012 21:44

Yeah, you are correct: multiSolver wouldn't be appropriate for this situation. An updated version is on its way, but still won't be suitable.

As for combining solvers... you've run into something that makes OpenFOAM different from other CFD software. Let's say you wanted to simulate a transient flow with bousinesq buoyancy and scalar transport of three different species. In commercial software, you would click the buoyancy button, and add three scalars to the problem. In openFOAM, you cannot solve this problem "out of the box".

I like to think of the "standard solvers" that come with OpenFOAM as templates. They are very well-implemented examples of standard algorithms. If you need a special custom solver, you have to figure out the solvers, and implement your own version. This is easier than you might think because of all the existing examples, and because the top-level code is often human-readable.

lovecraft22 June 2, 2012 04:37

Thanks to both of you.

What about the moving mesh? I haven't quite understood if a specific solver is needed (*DyMFoam) or it can be achieved in any solver (ie simpleFoam) using moveMesh or MoveDynamicMesh.

elvis June 4, 2012 08:26


what about that "Block-Coupled Solver" (only available in OF1.6-extend) see presentation to find out if it is what you are looking for.
=> slide 25 shows that solver might converge much faster => example 20 iterations (blockcoupled solution) vs. ~200 iterations (segregated solution)

lovecraft22 June 4, 2012 09:17

Thank you Elvis,
I'll have a look!

wadekar August 22, 2016 05:28

Merging solvers
Dear Foamers

I want to merge the two solvers- 1: XiFoam or EngineFoam and 2: sprayFoam.
Basically, i want to simulate the combustion process along with fuel injection.
So, is it possible to combine both the solvers ? :confused:
someone have previous experience in the same case ? or someone can guide me for this specific case ?

All times are GMT -4. The time now is 12:03.