Hallo Foamers,
ich arbeite daran die Marangoni-Konvektion in den Solver icoReactingMultiphaseInterFoam, der OpenFoam Version v2106, zu implementieren. Die treibende Kraft der Marangoni-Konvektion tirtt an der Oberfläche zwischen flüssiger Schmelze und der Gas-Phase auf. Die Kraft wird als volumetrische Kraft folgendermaßen in UEqn.H implementiert.
dSigmadT - thermokapillarer Koeffizient
nn - Normalvektor des Interfaces (Gas und Liquid)
volVectorField nn = gradAlpha/(mag(gradAlpha)+deltaN)
gradT - Gradient des Temperaturfeldes
fvc::grad(T)
gradAlpha - Gradient der Phasenanteile (fluid.phase(0) Fraction der Gas-Phase, fluid.phase(1) der Liquid-Phase))
volVectorField gradAlpha = fluid.phase(0)*fvc::grad(fluid.phase(1))-fluid.phase(1)*fvc::grad(fluid.phase(0))
factor - Faktor um die Kraft auf die schwere Liquid-Phase zu verteilen
volScalarField factor = (2*rho)/(fluid.phase(0).rho()+fluid.phase(1).rho())
Code:
fvVectorMatrix UEqn
(
fvm::Dnobiggrin:t(rho, U)
+ fvm::Div(rhoPhi, U)
//- fvm::Sp(fvc::Dnobiggrin:t(rho) + fvc::Div(rhoPhi), U)
+ turbulence->divDevRhoReff(U) ==
fvOptions(rho, U)
+ dSigmadT*(gradT - nn*(nn & gradT))*mag(gradAlpha)*factor
);
Folgenden Testcase versuche ich zu replizieren:
Tan, L.H., Leong, S.S., Leonardi, E., Barber, T.J., 2006. A numerical study of solid-liquid phase change with Marangoni effects using a multiphase approach. Progress in Computational Fluid Dynamics, 6, 304-313
Leider wird die Simulation ab 1 Sekunde instabil und die flüssige Phase verschiebt sich völlig. In dem Imgur Album habe ich die Ergebnisse der flüssigen Phase nach 1, 1.25 und 1.5 Sekunden hochgeladen. Zusätzlich ist dort der Plot der Residuals hochgeladen worden: https://imgur.com/a/aDHmJSY
mein fvSolution Skript sieht folgendermaßen aus:
Code:
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //solvers
{
"rho.*"
{
solver diagonal;
tolerance 1e-5;
relTol 0;
}
"alpha.*"
{
nAlphaCorr 2;
nAlphaSubCycles 1;
cAlphas (
(liquid and gas) 1
(gas and solid) 1
(liquid and solid) 1
);
MULESCorr yes;
nLimiterIter 3;
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-08;
relTol 0;
}
"pcorr.*"
{
solver PCG;
preconditioner FDIC;
tolerance 1e-05;
relTol 0;
}
pcorrFinal
{
$pcorr;
}
"p_rgh|sPhi.*"
{
solver PCG;
preconditioner FDIC;
tolerance 1e-09;
relTol 0.01;
//maxIter 0;
}
p_rghFinal
{
$p_rgh;
relTol 0;
}
"U.*"
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-06;
relTol 0;
minIter 1;
}
"Yi.*"
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-09;
relTol 0;
residualAlpha 1e-8;
}
"e.*|T.*"
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-08;
relTol 0.0;
}
}
PIMPLE
{
consistent true;
momentumPredictor yes;
nOuterCorrectors 1;
nCorrectors 3;
nNonOrthogonalCorrectors 0;
pRefPoint (0.015 0.0 0.0);
pRefValue 100000;
residualControl
{
p_rgh
{
relTol 0;
tolerance 5e-4;
}
U
{
relTol 0;
tolerance 4e-6;
}
}
}
relaxationFactors
{
fields
{
p_rgh 0.85;
p_rghFinal 1;
}
equations
{
U 0.9;
UFinal 1;
}
}
// ************************************************************************* //
Vielleicht kann mir jemand hier mir aushelfen. Und mir Tipps, wo Fehler liegen könnten. Falls etwas unklar ist beantworte ich gerne die Unklarheiten.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP