CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   multiphase reacting flow (https://www.cfd-online.com/Forums/openfoam-programming-development/157869-multiphase-reacting-flow.html)

smhosseini August 10, 2015 09:00

multiphase reacting flow
 
Hi,

I want to simulate a bubble column. In this case, the gas phase is absorbed by the liquid phase and there is a reaction in the liquid phase. I'm going to use OpenFOAM. I want to combine the twoPhaseEulerFoam and reactingFoam.

Is there anyone who has any better Idea?

what is the term of + fvOptions(rho, Yi) in the YEqn.H of reactingFoam?

Thanks in advance.

sharonyue August 17, 2015 21:45

Quote:

Originally Posted by smhosseini (Post 558952)
Hi,

I want to simulate a bubble column. In this case, the gas phase is absorbed by the liquid phase and there is a reaction in the liquid phase. I'm going to use OpenFOAM. I want to combine the twoPhaseEulerFoam and reactingFoam.

Is there anyone who has any better Idea?

what is the term of + fvOptions(rho, Yi) in the YEqn.H of reactingFoam?

Thanks in advance.

fvOptions is used for porous, MRF, etc. if you dont need body force. Just comment it or delete it. This is the quickest way. Otherwise, just copy it into your solver, and add fvOptions.constrain().....all these things into your solver. And include the header..

smhosseini August 22, 2015 04:12

Quote:

Originally Posted by sharonyue (Post 559940)
fvOptions is used for porous, MRF, etc. if you dont need body force. Just comment it or delete it. This is the quickest way. Otherwise, just copy it into your solver, and add fvOptions.constrain().....all these things into your solver. And include the header..

Hi Dongyu,
Thanks for your reply, it's very helpful for me.

Best regards,
Mohsen

smhosseini October 6, 2015 09:48

2 Attachment(s)
Hi,
I've added mass transfer equation to twoPhaseEulerFoam but I have some problems in my results. I have only one component in gas phase and 3 components in liquid phase. So, the mass transfer equation only solves for liquid phase. species O transfer from gas to liquid phase and react with species t in liquid phase and species 3 is produced.
As you can see from attached figures, there is species t in gas and liquid phase. But it should be only in liquid phase. Do you know whats the problem? Is there any mistake in my code? :confused:

This is my YEqn.H:

{
volScalarField Re = mag(U1 - U2) * phase1.d() / phase2.nu(); // Reynolds number
volScalarField kl = (DO / phase1.d()) * (2.0 + 0.642 * sqrt(Re * Sc)); // mass transfer coefficient
volScalarField ae = mag(fvc::grad(alpha1)); //effective interfacial area per unit volume

volScalarField Ha = sqrt(DO * kr) / kl; // Hatta number
volScalarField Ef = sqrt(1. + sqr(Ha)); // Enhancement factor
volScalarField Reaction = alpha2 * kr * rho2;

Q = Ef * kl * ae * rho2;


fvScalarMatrix YOEqn
(
fvm::ddt(alpha2, rho2, YO)
+fvm::div(alphaRhoPhi2, YO)
-fvm::laplacian(phase2.turbulence().muEff()/Sc, YO)
==
-fvm::Sp(Q,YO) + He * Q - Reaction * Yt
);

YOEqn.relax();

YOEqn.solve(mesh.solver("YO"));

YO.max(0.0);

fvScalarMatrix YtEqn
(
fvm::ddt(alpha2, rho2, Yt)
+fvm::div(alphaRhoPhi2, Yt)
-fvm::laplacian(phase2.turbulence().muEff()/Sc, Yt)
==
-fvm::Sp(Reaction, Yt)
);

YtEqn.relax();

YtEqn.solve(mesh.solver("Yt"));

Yt.max(0.0);
}

smhosseini October 7, 2015 08:35

Hi,
I've found my mistake.
I've forgotten alpha2 in laplacian term. :rolleyes:

smhosseini October 12, 2015 05:38

Hi,
I've changed my mass transfer equation (for t component) to:

fvScalarMatrix YtEqn
(
fvm::ddt(alpha2, rho2, Yt) + fvm::div(alphaRhoPhi2, Yt)
- fvm::laplacian
(
fvc::interpolate(alpha2)
* fvc::interpolate(phase2.turbulence().muEff()/Sc),
Yt
)
==
- fvm::Sp(Reaction, Ytoc)
);
__________________________________________________ ___________________

Then, I've gotten an error:

PIMPLE: iteration 1
MULES: Solving for alpha.air
MULES: Solving for alpha.air
alpha.air volume fraction = 0.293708 Min(alpha1) = 0 Max(alpha1) = 1
#0 Foam::error::printStack(Foam::Ostream&) at ??:?
#1 Foam::sigFpe::sigHandler(int) at ??:?
#2 Uninterpreted:
#3 Foam::symGaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) at ??:?
#4 Foam::symGaussSeidelSmoother::smooth(Foam::Field<d ouble>&, Foam::Field<double> const&, unsigned char, int) const at ??:?
#5 Foam::smoothSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:?
#6 Foam::fvMatrix<double>::solveSegregated(Foam::dict ionary const&) at ??:?
#7 Foam::fvMatrix<double>::solve(Foam::dictionary const&) at ??:?
#8
at ??:?
#9 __libc_start_main in "/lib/i386-linux-gnu/libc.so.6"
#10
at ??:?
Floating point exception (core dumped)
__________________________________________________ __________________

I think I get this error because the value of alpha2 in the gas phase is zero and so, all of coefficients get zero value.

Is there any other reason for this error?
How can I change my code to solve the problem?
Is there any better idea to write the mass transfer equation?


All times are GMT -4. The time now is 19:52.