CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Multiphase flow and conjugate heat transfer simulation (https://www.cfd-online.com/Forums/openfoam-solving/67810-multiphase-flow-conjugate-heat-transfer-simulation.html)

 awacs August 27, 2009 04:39

Multiphase flow and conjugate heat transfer simulation

Hi all,

I am trying to create a solver based on conjugateHeatFoam called conjugateInterHeatFoam. It is a transient solver for incompressible, laminar, two phase flow of non-isothermal, non-newtonian fluids with conjugate heat transfer.

All fields are created in createFields.H and createSolidFields.H.

The solving sequence is:
(1) gammaEqnSubCycle.H // solving the volume fraction equation
(2) solveFluid.H // solving the flow equations
(3)solveEnergy.H // solving the coupled energy equation

//--------------------------- my solveEnergy.H

{
// Decoupled patches
# include "attachPatches.H"

// Solid side

volScalarField mu = twoPhaseProperties.mu();

for (int nonOrth = 0; nonOrth <= nNonOrthCorr; nonOrth++)
{
coupledFvScalarMatrix TEqns(2);

TEqns.set
(
0,
new fvScalarMatrix
(
rho * Cp * fvm::ddt(T)
+ rho * Cp * fvm::div(phi, T)
- fvm::laplacian(kT, T)
)
);

TEqns.set
(
1,
new fvScalarMatrix
(
rho * Cp * fvm::ddt(Tsolid)
- fvm::laplacian(kTsolid, Tsolid)
)
);

TEqns.solve();
}
}

My questions are:

(1) Do I need to couple rho, cp and kT ? Or just kT ?

(2) How can I couple the conductivity kT ?
In twophase flow, kT is a weighted average of the conductivity for both phase based on gamma (the volume fraction ):
gamma*kT1 + (scalar(1) - gamma)*kT2

How to couple this weighted kT with the solid conductivity kT ?

//----------------------- kT definition in createFields.H
// Thermal conductivity
volScalarField kT
(
IOobject
(
"kT",
runTime.timeName(),
mesh,
IOobject::AUTO_WRITE
),
gamma*kT1 + (scalar(1) - gamma)*kT2,
gamma.boundaryField().types()
);

//-----------------------kT definition in createSolidFields.H

Info<< "Reading solid conductivity kT\n" << endl;

volScalarField kTsolid
(
IOobject
(
"kT",
runTime.timeName(),
solidMesh,
IOobject::AUTO_WRITE
),
solidMesh
);

// On creation of both conductivities, couple the sides
kT.correctBoundaryConditions();
kTsolid.correctBoundaryConditions();

Is it right?

(3)How to treat with the boundary conditions at the twophase interface?

Any suggestions would be appreciated. Thanks in advance:).

Best Regards
Jitao

P.S.
I could compile through the new solver with wmake. But the calculation of a 2D test stopped with a "segmentation fault" error.

Debugging with gdb:
Program received signal SIGSEGV, Segmentation fault.
0x00000000004628a5 in Foam::fvMatrix<double>::operator*=(Foam::Dimension edField<double, Foam::volMesh> const&) ()
Current language: auto; currently asm

 awacs August 27, 2009 05:31

1 Attachment(s)
The modification is done under OpenFOAM-1.5-dev. I want to simulate the process of viscous polymer melt filling into the heated mold cavity. The mold cavity can be heated both sides or just one side.The coupled temperature of the plastic part and the mold should be simulated.(see attachment)

Regards,
Jitao

 awacs August 28, 2009 09:43

4 Attachment(s)
I could moldfiy the nonNewtonianIcoFoam to conjugateNonNewtonianIcoHeatFoam by adding the tenperature equation . It is a transient solver for incompressible, laminar, single phase flow of non-isothermal, non-newtonian fluids with conjugate heat transfer.

But I am stilled confused with two-phase flows, especially the coupling of the two-phase weighted kT with the solid conductivity kT ?

Can any one help me ? Thanks a lot.

Regards,
Jitao

ps
Results of the modified conjugateNonNewtonianIcoHeatFoam. The effect of viscous dissipation is neglected.
Attachment 927 Attachment 928

Attachment 929 Attachment 933

 awacs September 1, 2009 06:46

5 Attachment(s)
I have settled some of the issues. The modified conjugateInterHeatFoam solver runs now.
A 2D test:
Attachment 945 Attachment 946 Attachment 947 Attachment 948 Attachment 949

But I am still confused with the coupling of the two-phase weighted kT with the solid conductivity kT.The following code gives a uniform kT.

fluidTop
{
type regionCoupling;
value uniform 0.03;
remoteField kT;
}

But the two-phase weighted kT is varied as the two-fluid interface moving forward:
//----------------------- kT definition in createFields.H
// Thermal conductivity
volScalarField kT
(
IOobject
(
"kT",
runTime.timeName(),
mesh,
IOobject::AUTO_WRITE
),
gamma*kT1 + (scalar(1) - gamma)*kT2,
gamma.boundaryField().types()
);

How to initialize this weighted kT in 0/kT ?

Regards，
Jitao

 eberberovic October 22, 2009 14:12

Hello
You can initialize it normally using setFields (or funkySetFields), depending on your initial phase fraction distribution.
But you will probably need to update the conductivity before solving energy. Something like kT == twoPhaseProperties.k(), if you have such a member. It will also probably be necessary to apply the coupling again, by correcting boundary conditions.
Regards,
Edin.

 awacs November 9, 2009 07:49

Quote:
 Originally Posted by eberberovic (Post 233723) Hello You can initialize it normally using setFields (or funkySetFields), depending on your initial phase fraction distribution. But you will probably need to update the conductivity before solving energy. Something like kT == twoPhaseProperties.k(), if you have such a member. It will also probably be necessary to apply the coupling again, by correcting boundary conditions. Regards, Edin.
Hi Edin,

Regards,
Jitao

 phsieh2005 March 10, 2010 21:56

Hi, Jitao,

I am wondering if you are successful in developing the new solver? I am also interested in such solver.

Pei

Quote:
 Originally Posted by awacs (Post 235566) Hi Edin, Thanks a lot for your reply. I will try it out:). Regards, Jitao

 sandy March 10, 2010 22:56

I am using OF 1.6.x, are there some new develpments about this kind of case? Who can give a note?

hello,