mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: nearWallFields: particles located outside mesh. See #947.
This commit is contained in:
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015-2018 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2019 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -73,8 +73,8 @@ void Foam::functionObjects::nearWallFields::calcAddressing()
|
||||
{
|
||||
const fvPatch& patch = mesh_.boundary()[patchi];
|
||||
|
||||
vectorField nf(patch.nf());
|
||||
vectorField faceCellCentres(patch.patch().faceCellCentres());
|
||||
const vectorField nf(patch.nf());
|
||||
const vectorField faceCellCentres(patch.patch().faceCellCentres());
|
||||
const labelUList& faceCells = patch.patch().faceCells();
|
||||
|
||||
forAll(patch, patchFacei)
|
||||
@ -96,8 +96,6 @@ void Foam::functionObjects::nearWallFields::calcAddressing()
|
||||
|
||||
// Starting point and tet
|
||||
point start;
|
||||
label tetFacei = -1;
|
||||
label tetPti = -1;
|
||||
const label celli = faceCells[patchFacei];
|
||||
|
||||
if (startInfo.hit())
|
||||
@ -105,22 +103,28 @@ void Foam::functionObjects::nearWallFields::calcAddressing()
|
||||
// Move start point slightly in so it is inside the tet
|
||||
const face& f = mesh_.faces()[meshFacei];
|
||||
|
||||
tetFacei = meshFacei;
|
||||
tetPti = (startInfo.index()+1) % f.size();
|
||||
label tetFacei = meshFacei;
|
||||
label tetPti = (startInfo.index()+1) % f.size();
|
||||
|
||||
start = startInfo.hitPoint();
|
||||
|
||||
//// Uncomment below to shift slightly in:
|
||||
// Uncomment below to shift slightly in:
|
||||
tetIndices tet(celli, tetFacei, tetPti);
|
||||
start =
|
||||
(1.0 - 1e-6)*startInfo.hitPoint()
|
||||
+ 1e-6*tet.tet(mesh_).centre();
|
||||
|
||||
// Re-check that we have a valid location
|
||||
mesh_.findTetFacePt(celli, start, tetFacei, tetPti);
|
||||
if (tetFacei == -1)
|
||||
{
|
||||
start = faceCellCentres[patchFacei];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Fallback: start tracking from neighbouring cell centre
|
||||
start = faceCellCentres[patchFacei];
|
||||
mesh_.findTetFacePt(celli, start, tetFacei, tetPti);
|
||||
}
|
||||
|
||||
const point end = start-distance_*nf[patchFacei];
|
||||
@ -132,7 +136,7 @@ void Foam::functionObjects::nearWallFields::calcAddressing()
|
||||
(
|
||||
mesh_,
|
||||
start,
|
||||
-1,
|
||||
celli,
|
||||
end,
|
||||
globalWalls.toGlobal(nPatchFaces) // passive data
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user