Skip to content
Snippets Groups Projects
Commit cf0ffa19 authored by mattijs's avatar mattijs
Browse files

BUG: nearWallFields: point on the face is inside/outside any tet.

Now we directly releate the intersected face triangle to the tet of the
cell the point is on/in. We hope that the tracking handles this ok. Fixes #549.
parent 3b16c365
Branches
Tags
No related merge requests found
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
...@@ -77,6 +77,7 @@ void Foam::functionObjects::nearWallFields::calcAddressing() ...@@ -77,6 +77,7 @@ void Foam::functionObjects::nearWallFields::calcAddressing()
vectorField nf(patch.nf()); vectorField nf(patch.nf());
vectorField faceCellCentres(patch.patch().faceCellCentres()); vectorField faceCellCentres(patch.patch().faceCellCentres());
const labelUList& faceCells = patch.patch().faceCells();
forAll(patch, patchFacei) forAll(patch, patchFacei)
{ {
...@@ -95,40 +96,62 @@ void Foam::functionObjects::nearWallFields::calcAddressing() ...@@ -95,40 +96,62 @@ void Foam::functionObjects::nearWallFields::calcAddressing()
); );
// Starting point and tet
point start; point start;
label tetFacei = -1;
label tetPti = -1;
const label celli = faceCells[patchFacei];
if (startInfo.hit()) if (startInfo.hit())
{ {
// 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();
start = startInfo.hitPoint(); start = startInfo.hitPoint();
//// Uncomment below to shift slightly in:
//tetIndices tet(celli, meshFacei, tetPti, mesh_);
//start =
// (1.0-1e-6)*startInfo.hitPoint()
// + 1e-6*tet.tet(mesh_).centre();
} }
else else
{ {
// Fallback: start tracking from neighbouring cell centre // Fallback: start tracking from neighbouring cell centre
start = faceCellCentres[patchFacei]; start = faceCellCentres[patchFacei];
mesh_.findTetFacePt(celli, start, tetFacei, tetPti);
} }
const point end = start-distance_*nf[patchFacei]; const point end = start-distance_*nf[patchFacei];
// Find tet for starting location if (tetFacei == -1)
label celli = -1; {
label tetFacei = -1; WarningInFunction << "Did not find point " << start
label tetPti = -1; << " inside cell " << celli
mesh_.findCellFacePt(start, celli, tetFacei, tetPti); << ". Not seeding particle originating from face centre "
<< mesh_.faceCentres()[meshFacei]
// Add to cloud. Add originating face as passive data << " with cell centre " << mesh_.cellCentres()[celli]
cloud.addParticle << endl;
( }
new findCellParticle else
{
// Add to cloud. Add originating face as passive data
cloud.addParticle
( (
mesh_, new findCellParticle
start, (
celli, mesh_,
tetFacei, start,
tetPti, celli,
end, tetFacei,
globalWalls.toGlobal(nPatchFaces) // passive data tetPti,
) end,
); globalWalls.toGlobal(nPatchFaces) // passive data
)
);
}
nPatchFaces++; nPatchFaces++;
} }
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment