BUG: snappyHexMesh: attraction distance mapping. Fixes #941.

This commit is contained in:
mattijs
2019-04-08 13:19:41 +01:00
parent 202fa41c55
commit 708e650990
14 changed files with 2379 additions and 22 deletions

View File

@ -153,6 +153,33 @@
surfaceScalarField phir(phic*mixture.nHatf());
DebugVar(phir.oriented());
DebugVar(phiCN().oriented());
DebugVar(alpha1.oriented());
DebugVar(alpha1.oldTime().oriented());
tmp<surfaceScalarField> f1
(
fvc::flux
(
phiCN(),
cnCoeff*alpha1 + (1.0 - cnCoeff)*alpha1.oldTime(),
alphaScheme
)
);
DebugVar(f1().oriented());
tmp<surfaceScalarField> f2
(
fvc::flux
(
-fvc::flux(-phir, alpha2, alpharScheme),
alpha1,
alpharScheme
)
);
DebugVar(f2().oriented());
tmp<surfaceScalarField> talphaPhi1Un
(
fvc::flux

View File

@ -7,6 +7,8 @@
pDivU = dimensionedScalar("pDivU", p.dimensions()/dimTime, Zero);
DebugVar(fvc::interpolate(rho));
if (thermo->pDivU())
{
pDivU = (p*fvc::div(rhoPhi/fvc::interpolate(rho)));

View File

@ -1,4 +1,5 @@
EXE_INC = \
-g -O0 \
-I../VoF \
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
-I$(LIB_SRC)/transportModels \

View File

@ -308,7 +308,7 @@ void Foam::snappySnapDriver::calcNearestFace
(
labelList(1, zoneSurfi),
fc,
sqr(faceSnapDist),// sqr of attract dist
sqr(scalarField(faceSnapDist, ppFaces)),// sqr of attract dist
hitSurface,
hitInfo,
hitRegion,
@ -384,7 +384,7 @@ void Foam::snappySnapDriver::calcNearestFace
(
unzonedSurfaces,
fc,
sqr(faceSnapDist),// sqr of attract dist
sqr(scalarField(faceSnapDist, ppFaces)),// sqr of attract dist
hitSurface,
hitInfo,
hitRegion,

View File

@ -356,6 +356,13 @@ void Foam::searchableSurfacesQueries::findNearest
{
// Find nearest. Return -1 or nearest point
if (samples.size() != nearestDistSqr.size())
{
FatalErrorInFunction << "Inconsistent sizes. samples:" << samples.size()
<< " search-radius:" << nearestDistSqr.size()
<< exit(FatalError);
}
// Initialise
nearestSurfaces.setSize(samples.size());
nearestSurfaces = -1;
@ -407,6 +414,14 @@ void Foam::searchableSurfacesQueries::findNearest
{
// Find nearest. Return -1 or nearest point
if (samples.size() != nearestDistSqr.size())
{
FatalErrorInFunction << "Inconsistent sizes. samples:" << samples.size()
<< " search-radius:" << nearestDistSqr.size()
<< exit(FatalError);
}
if (regionIndices.empty())
{
findNearest
@ -470,6 +485,15 @@ void Foam::searchableSurfacesQueries::findNearest
{
// Multi-surface findNearest
if (start.size() != distSqr.size())
{
FatalErrorInFunction << "Inconsistent sizes. samples:" << start.size()
<< " search-radius:" << distSqr.size()
<< exit(FatalError);
}
vectorField normal;
List<pointIndexHit> info;

View File

@ -15,6 +15,11 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//DebugSwitches
//{
// fv 2;
//}
application sonicFoam;
startFrom latestTime;

View File

@ -41,7 +41,7 @@ divSchemes
laplacianSchemes
{
default Gauss linear limited corrected 0.5;
default Gauss linear corrected; //limited corrected 1; //0.5;
}
interpolationSchemes

View File

@ -23,13 +23,13 @@ startTime 0;
stopAt endTime;
endTime 0.5;
endTime 0.005;
deltaT 0.005;
writeControl timeStep;
writeInterval 20;
writeInterval 1;
purgeWrite 0;

View File

@ -53,12 +53,12 @@ snGradSchemes
oversetInterpolation
{
method cellVolumeWeight;
//method cellVolumeWeight;
// Faster but less accurate
//method trackingInverseDistance;
//searchBox (0 0 0)(0.02 0.01 0.01);
//searchBoxDivisions 3{(64 64 1)};
method trackingInverseDistance;
searchBox (0 0 0)(0.02 0.01 0.01);
searchBoxDivisions 3{(64 64 1)};
}
fluxRequired

View File

@ -78,17 +78,41 @@ boundary
(9 13 12 8)
);
}
couple1
ACMI1_couple
{
type patch;
type cyclicACMI;
matchTolerance 0.0001;
neighbourPatch ACMI2_couple;
nonOverlapPatch ACMI1_blockage;
transform noOrdering;
faces
(
(2 6 5 1)
);
}
couple2
ACMI2_couple
{
type patch;
type cyclicACMI;
neighbourPatch ACMI1_couple;
nonOverlapPatch ACMI2_blockage;
transform noOrdering;
faces
(
(8 12 15 11)
);
}
ACMI1_blockage
{
type wall;
faces
(
(2 6 5 1)
);
}
ACMI2_blockage
{
type wall;
faces
(
(8 12 15 11)

View File

@ -28,7 +28,10 @@ gradSchemes
divSchemes
{
div(rhoPhi,U) Gauss linearUpwind grad(U);
div(phi,alpha) Gauss vanLeer;
// div(phi,alpha) Gauss vanLeer;
div(phi,alpha) Gauss CoBlended 1.0 Minmod 2.0 upwind;
div(phirb,alpha) Gauss linear;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;