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 # include "readSolidControls.H" volScalarField mu = twoPhaseProperties.mu(); for (int nonOrth = 0; nonOrth <= nNonOrthCorr; nonOrth++) { coupledFvScalarMatrix TEqns(2); // Add fluid equation TEqns.set ( 0, new fvScalarMatrix ( rho * Cp * fvm::ddt(T) + rho * Cp * fvm::div(phi, T) - fvm::laplacian(kT, T) - mu*magSqr(fvc::grad(U)) //viscous disipation ) ); // Add solid equation 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::MUST_READ, 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::MUST_READ, 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 |
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 |
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 |
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::MUST_READ, IOobject::AUTO_WRITE ), gamma*kT1 + (scalar(1) - gamma)*kT2, gamma.boundaryField().types() ); How to initialize this weighted kT in 0/kT ? Regards, Jitao |
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. |
Quote:
Thanks a lot for your reply. I will try it out:). Regards, Jitao |
Hi, Jitao,
I am wondering if you are successful in developing the new solver? I am also interested in such solver. Pei Quote:
|
I am using OF 1.6.x, are there some new develpments about this kind of case? Who can give a note?
|
hello,
Are there any news about your implementation? I am also working with a multiphase flow in a mold so my goal is to couple conjugate heat transfer to multiphase flow! Any suggestion! Nadine Moussa |
All times are GMT -4. The time now is 13:15. |