Commit 1c1a69ca authored by Henry Weller's avatar Henry Weller
Browse files

patchInjectionBase: Improved particle positioning

Patch contributed by Timo Niemi, VTT.
Resolves bug-report https://bugs.openfoam.org/view.php?id=2442
parent 8f7228d6
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,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) 2013-2016 OpenFOAM Foundation \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
...@@ -201,16 +201,26 @@ void Foam::patchInjectionBase::setPositionAndCell ...@@ -201,16 +201,26 @@ void Foam::patchInjectionBase::setPositionAndCell
// Position perturbed away from face (into domain) // Position perturbed away from face (into domain)
const scalar a = rnd.position(scalar(0.1), scalar(0.5)); const scalar a = rnd.position(scalar(0.1), scalar(0.5));
const vector& pc = mesh.cellCentres()[cellOwner]; const vector& pc = mesh.cellCentres()[cellOwner];
const vector d = mag(pf - pc)*patchNormal_[facei]; const vector d =
mag((pf - pc) & patchNormal_[facei])*patchNormal_[facei];
position = pf - a*d; position = pf - a*d;
//Try to find tetFacei and tetPti in the current position // Try to find tetFacei and tetPti in the current position
mesh.findTetFacePt(cellOwner, position, tetFacei, tetPti); mesh.findTetFacePt(cellOwner, position, tetFacei, tetPti);
//Search failed, choose a random position // tetFacei and tetPti not found, check if the cell has changed
if (tetFacei == -1 ||tetPti == -1) if (tetFacei == -1 ||tetPti == -1)
{ {
mesh.findCellFacePt(position, cellOwner, tetFacei, tetPti);
}
// Both searches failed, choose a random position within
// the original cell
if (tetFacei == -1 ||tetPti == -1)
{
// Reset cellOwner
cellOwner = cellOwners_[facei];
const scalarField& V = mesh.V(); const scalarField& V = mesh.V();
// Construct cell tet indices // Construct cell tet indices
......
Supports Markdown
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