近期尝试使用compressibleInterDyMFoam计算近壁面空化泡的溃灭,但在计算一定时间后出现了一些与实际不符的现象。
算例设置如下:
初始气泡半径R0=0.1mm,距离壁面距离λ=2,原计算域大小为5mm5mm1mm,实际计算域取其1/4。草图如下:
1265c60d-3e45-457e-84df-081f40874abd-image.png
初始网格密度为Δx=Δy=Δz=0.025mm。后续用自适应网格进行加密,dynamicMeshDict:
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object dynamicMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dynamicFvMesh dynamicRefineFvMesh;
//dynamicFvMesh staticFvMesh;
dynamicRefineFvMeshCoeffs
{
// How often to refine
refineInterval 1;
// Field to be refinement on
field alpha.water;
// Refine field inbetween lower..upper
lowerRefineLevel 0;
upperRefineLevel 0.999;
// If value < unrefineLevel unrefine
unrefineLevel 10;
// Have slower than 2:1 refinement
nBufferLayers 3;
// Refine cells only up to maxRefinement levels
maxRefinement 5;
// Stop refinement if maxCells reached
maxCells 6000000;
// Flux field and corresponding velocity field. Fluxes on changed
// faces get recalculated by interpolating the velocity. Use 'none'
// on surfaceScalarFields that do not need to be reinterpolated.
correctFluxes
(
(phi none)
(nHatf none)
(rhoPhi none)
(alphaPhi none)
(alphaPhiUn none)
(alphaPhi10 none)
(alphaPhi1Corr0 none)
(ghf none)
);
// Write the refinement level as a volScalarField
dumpLevel true;
}
计算到10.2μs后,气泡突然从溃灭状重新开始增大,而并没有完全溃灭,如图所示。
10.2μs:
a833b3e2-ebc9-43b4-8363-d153ec8db0e0-10.2um.png
10.4μs:
e248f2ea-78d2-4100-a3a9-551f88c499e3-10.4um.png
想问问大家这是什么原因所导致的,可能会是初始场设置不合理或是边界条件设置不合理?
初始场由于初始网格较疏以及后续加密的缘故,几个时间步后会变成这样:
170ce1d8-861d-4cfb-857b-2e2da4ed06eb-初始场.png
边界条件如下所示:
alpha.water:
boundaryField
{
wall
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
symmetry
{
type symmetry;
}
}
p:
boundaryField
{
wall
{
type calculated;
value uniform 100000;
}
outlet
{
type calculated;
value uniform 100000;
}
symmetry
{
type symmetry;
}
}
p_rgh:
boundaryField
{
wall
{
type fixedFluxPressure;
gradient uniform 0;
value uniform 100000;
}
outlet
{
type fixedFluxPressure;
gradient uniform 0;
value uniform 100000;
}
symmetry
{
type symmetry;
}
}
T:
boundaryField
{
wall
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
symmetry
{
type symmetry;
}
}
T.air:
boundaryField
{
wall
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
symmetry
{
type symmetry;
}
}
T.water:
boundaryField
{
wall
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
symmetry
{
type symmetry;
}
}
U:
boundaryField
{
wall
{
type noSlip;
}
outlet
{
type zeroGradient;
value uniform (0 0 0);
}
symmetry
{
type symmetry;
}
}