lagrangian: Removed unnecessary patch argument from hit methods

The patch can be determined from the particle when it is needed. Most of
the time it is not.
This commit is contained in:
Will Bainbridge
2017-08-23 16:27:36 +01:00
parent dc10cfd686
commit b3e675ea43
23 changed files with 166 additions and 544 deletions

View File

@ -126,12 +126,7 @@ bool Foam::findCellParticle::move
}
bool Foam::findCellParticle::hitPatch
(
const polyPatch&,
Cloud<findCellParticle>& cloud,
trackingData& td
)
bool Foam::findCellParticle::hitPatch(Cloud<findCellParticle>&, trackingData&)
{
return false;
}
@ -139,8 +134,7 @@ bool Foam::findCellParticle::hitPatch
void Foam::findCellParticle::hitWedgePatch
(
const wedgePolyPatch&,
Cloud<findCellParticle>& cloud,
Cloud<findCellParticle>&,
trackingData& td
)
{
@ -151,8 +145,7 @@ void Foam::findCellParticle::hitWedgePatch
void Foam::findCellParticle::hitSymmetryPlanePatch
(
const symmetryPlanePolyPatch&,
Cloud<findCellParticle>& cloud,
Cloud<findCellParticle>&,
trackingData& td
)
{
@ -163,8 +156,7 @@ void Foam::findCellParticle::hitSymmetryPlanePatch
void Foam::findCellParticle::hitSymmetryPatch
(
const symmetryPolyPatch&,
Cloud<findCellParticle>& cloud,
Cloud<findCellParticle>&,
trackingData& td
)
{
@ -175,8 +167,7 @@ void Foam::findCellParticle::hitSymmetryPatch
void Foam::findCellParticle::hitCyclicPatch
(
const cyclicPolyPatch&,
Cloud<findCellParticle>& cloud,
Cloud<findCellParticle>&,
trackingData& td
)
{
@ -187,8 +178,7 @@ void Foam::findCellParticle::hitCyclicPatch
void Foam::findCellParticle::hitCyclicAMIPatch
(
const cyclicAMIPolyPatch&,
Cloud<findCellParticle>& cloud,
Cloud<findCellParticle>&,
trackingData& td,
const vector&
)
@ -200,8 +190,7 @@ void Foam::findCellParticle::hitCyclicAMIPatch
void Foam::findCellParticle::hitCyclicACMIPatch
(
const cyclicACMIPolyPatch&,
Cloud<findCellParticle>& cloud,
Cloud<findCellParticle>&,
trackingData& td,
const vector&
)
@ -213,8 +202,7 @@ void Foam::findCellParticle::hitCyclicACMIPatch
void Foam::findCellParticle::hitProcessorPatch
(
const processorPolyPatch&,
Cloud<findCellParticle>& cloud,
Cloud<findCellParticle>&,
trackingData& td
)
{
@ -225,8 +213,7 @@ void Foam::findCellParticle::hitProcessorPatch
void Foam::findCellParticle::hitWallPatch
(
const wallPolyPatch& wpp,
Cloud<findCellParticle>& cloud,
Cloud<findCellParticle>&,
trackingData& td
)
{

View File

@ -222,84 +222,46 @@ public:
//- Track all particles to their end point
bool move(Cloud<findCellParticle>&, trackingData&, const scalar);
//- Overridable function to handle the particle hitting a patch
// Executed before other patch-hitting functions
bool hitPatch
(
const polyPatch&,
Cloud<findCellParticle>&,
trackingData& td
);
bool hitPatch(Cloud<findCellParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a wedge
void hitWedgePatch
(
const wedgePolyPatch&,
Cloud<findCellParticle>&,
trackingData& td
);
void hitWedgePatch(Cloud<findCellParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a
// symmetry plane
void hitSymmetryPlanePatch
(
const symmetryPlanePolyPatch&,
Cloud<findCellParticle>&,
trackingData& td
);
void hitSymmetryPlanePatch(Cloud<findCellParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a
// symmetry patch
void hitSymmetryPatch
(
const symmetryPolyPatch&,
Cloud<findCellParticle>&,
trackingData& td
);
void hitSymmetryPatch(Cloud<findCellParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a cyclic
void hitCyclicPatch
(
const cyclicPolyPatch&,
Cloud<findCellParticle>&,
trackingData& td
);
void hitCyclicPatch(Cloud<findCellParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a cyclicAMI
void hitCyclicAMIPatch
(
const cyclicAMIPolyPatch&,
Cloud<findCellParticle>& cloud,
trackingData& td,
Cloud<findCellParticle>&,
trackingData&,
const vector&
);
//- Overridable function to handle the particle hitting a cyclicACMI
void hitCyclicACMIPatch
(
const cyclicACMIPolyPatch&,
Cloud<findCellParticle>& cloud,
trackingData& td,
Cloud<findCellParticle>&,
trackingData&,
const vector&
);
//- Overridable function to handle the particle hitting a
//- processorPatch
void hitProcessorPatch
(
const processorPolyPatch&,
Cloud<findCellParticle>&,
trackingData& td
);
void hitProcessorPatch(Cloud<findCellParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a wallPatch
void hitWallPatch
(
const wallPolyPatch&,
Cloud<findCellParticle>&,
trackingData& td
);
void hitWallPatch(Cloud<findCellParticle>&, trackingData&);
// Ostream Operator

View File

@ -270,12 +270,7 @@ bool Foam::streamLineParticle::move
}
bool Foam::streamLineParticle::hitPatch
(
const polyPatch&,
streamLineParticleCloud& cloud,
trackingData& td
)
bool Foam::streamLineParticle::hitPatch(streamLineParticleCloud&, trackingData&)
{
// Disable generic patch interaction
return false;
@ -284,8 +279,7 @@ bool Foam::streamLineParticle::hitPatch
void Foam::streamLineParticle::hitWedgePatch
(
const wedgePolyPatch& pp,
streamLineParticleCloud& cloud,
streamLineParticleCloud&,
trackingData& td
)
{
@ -296,8 +290,7 @@ void Foam::streamLineParticle::hitWedgePatch
void Foam::streamLineParticle::hitSymmetryPlanePatch
(
const symmetryPlanePolyPatch& pp,
streamLineParticleCloud& cloud,
streamLineParticleCloud&,
trackingData& td
)
{
@ -308,8 +301,7 @@ void Foam::streamLineParticle::hitSymmetryPlanePatch
void Foam::streamLineParticle::hitSymmetryPatch
(
const symmetryPolyPatch& pp,
streamLineParticleCloud& cloud,
streamLineParticleCloud&,
trackingData& td
)
{
@ -320,8 +312,7 @@ void Foam::streamLineParticle::hitSymmetryPatch
void Foam::streamLineParticle::hitCyclicPatch
(
const cyclicPolyPatch& pp,
streamLineParticleCloud& cloud,
streamLineParticleCloud&,
trackingData& td
)
{
@ -332,8 +323,7 @@ void Foam::streamLineParticle::hitCyclicPatch
void Foam::streamLineParticle::hitCyclicAMIPatch
(
const cyclicAMIPolyPatch&,
streamLineParticleCloud& cloud,
streamLineParticleCloud&,
trackingData& td,
const vector&
)
@ -345,8 +335,7 @@ void Foam::streamLineParticle::hitCyclicAMIPatch
void Foam::streamLineParticle::hitCyclicACMIPatch
(
const cyclicACMIPolyPatch&,
streamLineParticleCloud& cloud,
streamLineParticleCloud&,
trackingData& td,
const vector&
)
@ -358,8 +347,7 @@ void Foam::streamLineParticle::hitCyclicACMIPatch
void Foam::streamLineParticle::hitProcessorPatch
(
const processorPolyPatch&,
streamLineParticleCloud& cloud,
streamLineParticleCloud&,
trackingData& td
)
{
@ -370,8 +358,7 @@ void Foam::streamLineParticle::hitProcessorPatch
void Foam::streamLineParticle::hitWallPatch
(
const wallPolyPatch& wpp,
streamLineParticleCloud& cloud,
streamLineParticleCloud&,
trackingData& td
)
{

View File

@ -207,63 +207,32 @@ public:
// Tracking
//- Track all particles to their end point
bool move
(
streamLineParticleCloud& cloud,
trackingData&,
const scalar
);
bool move(streamLineParticleCloud&, trackingData&, const scalar);
//- Overridable function to handle the particle hitting a patch
// Executed before other patch-hitting functions
bool hitPatch
(
const polyPatch&,
streamLineParticleCloud& cloud,
trackingData& td
);
bool hitPatch(streamLineParticleCloud&, trackingData&);
//- Overridable function to handle the particle hitting a wedge
void hitWedgePatch
(
const wedgePolyPatch&,
streamLineParticleCloud& cloud,
trackingData& td
);
void hitWedgePatch(streamLineParticleCloud&, trackingData&);
//- Overridable function to handle the particle hitting a
// symmetry plane
void hitSymmetryPlanePatch
(
const symmetryPlanePolyPatch&,
streamLineParticleCloud& cloud,
trackingData& td
);
void hitSymmetryPlanePatch(streamLineParticleCloud&, trackingData&);
//- Overridable function to handle the particle hitting a
// symmetry patch
void hitSymmetryPatch
(
const symmetryPolyPatch&,
streamLineParticleCloud& cloud,
trackingData& td
);
void hitSymmetryPatch(streamLineParticleCloud&, trackingData&);
//- Overridable function to handle the particle hitting a cyclic
void hitCyclicPatch
(
const cyclicPolyPatch&,
streamLineParticleCloud& cloud,
trackingData& td
);
void hitCyclicPatch(streamLineParticleCloud&, trackingData&);
//- Overridable function to handle the particle hitting a
// cyclicAMIPatch
void hitCyclicAMIPatch
(
const cyclicAMIPolyPatch&,
streamLineParticleCloud& cloud,
trackingData& td,
streamLineParticleCloud&,
trackingData&,
const vector& direction
);
@ -271,28 +240,17 @@ public:
// cyclicACMIPatch
void hitCyclicACMIPatch
(
const cyclicACMIPolyPatch&,
streamLineParticleCloud& cloud,
trackingData& td,
streamLineParticleCloud&,
trackingData&,
const vector& direction
);
//- Overridable function to handle the particle hitting a
//- processorPatch
void hitProcessorPatch
(
const processorPolyPatch&,
streamLineParticleCloud& cloud,
trackingData& td
);
void hitProcessorPatch(streamLineParticleCloud&, trackingData&);
//- Overridable function to handle the particle hitting a wallPatch
void hitWallPatch
(
const wallPolyPatch&,
streamLineParticleCloud& cloud,
trackingData& td
);
void hitWallPatch(streamLineParticleCloud&, trackingData&);
// I-O

View File

@ -81,12 +81,7 @@ bool Foam::DSMCParcel<ParcelType>::move
template<class ParcelType>
template<class TrackCloudType>
bool Foam::DSMCParcel<ParcelType>::hitPatch
(
const polyPatch&,
TrackCloudType& cloud,
trackingData& td
)
bool Foam::DSMCParcel<ParcelType>::hitPatch(TrackCloudType&, trackingData&)
{
return false;
}
@ -96,8 +91,7 @@ template<class ParcelType>
template<class TrackCloudType>
void Foam::DSMCParcel<ParcelType>::hitProcessorPatch
(
const processorPolyPatch&,
TrackCloudType& cloud,
TrackCloudType&,
trackingData& td
)
{
@ -109,14 +103,19 @@ template<class ParcelType>
template<class TrackCloudType>
void Foam::DSMCParcel<ParcelType>::hitWallPatch
(
const wallPolyPatch& wpp,
TrackCloudType& cloud,
trackingData& td
trackingData&
)
{
label wppIndex = wpp.index();
const label wppIndex = this->patch();
label wppLocalFace = wpp.whichFace(this->face());
const wallPolyPatch& wpp =
static_cast<const wallPolyPatch&>
(
this->mesh().boundaryMesh()[wppIndex]
);
const label wppLocalFace = wpp.whichFace(this->face());
const scalar fA = mag(wpp.faceAreas()[wppLocalFace]);
@ -155,11 +154,7 @@ void Foam::DSMCParcel<ParcelType>::hitWallPatch
// pre-interaction momentum
vector preIMom = m*U_;
cloud.wallInteraction().correct
(
static_cast<DSMCParcel<ParcelType> &>(*this),
wpp
);
cloud.wallInteraction().correct(*this);
U_dot_nw = U_ & nw;
@ -194,7 +189,6 @@ void Foam::DSMCParcel<ParcelType>::hitWallPatch
cloud.qBF()[wppIndex][wppLocalFace] += deltaQ;
cloud.fDBF()[wppIndex][wppLocalFace] += deltaFD;
}

View File

@ -262,31 +262,16 @@ public:
//- Overridable function to handle the particle hitting a patch
// Executed before other patch-hitting functions
template<class TrackCloudType>
bool hitPatch
(
const polyPatch&,
TrackCloudType& cloud,
trackingData& td
);
bool hitPatch(TrackCloudType&, trackingData&);
//- Overridable function to handle the particle hitting a
// processorPatch
template<class TrackCloudType>
void hitProcessorPatch
(
const processorPolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitProcessorPatch(TrackCloudType&, trackingData&);
//- Overridable function to handle the particle hitting a wallPatch
template<class TrackCloudType>
void hitWallPatch
(
const wallPolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitWallPatch(TrackCloudType&, trackingData&);
//- Transform the physical properties of the particle
// according to the given transformation tensor

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -53,8 +53,7 @@ Foam::MaxwellianThermal<CloudType>::~MaxwellianThermal()
template<class CloudType>
void Foam::MaxwellianThermal<CloudType>::correct
(
typename CloudType::parcelType& p,
const wallPolyPatch& wpp
typename CloudType::parcelType& p
)
{
vector& U = p.U();
@ -63,7 +62,9 @@ void Foam::MaxwellianThermal<CloudType>::correct
label typeId = p.typeId();
label wppIndex = wpp.index();
const label wppIndex = p.patch();
const polyPatch& wpp = p.mesh().boundaryMesh()[wppIndex];
label wppLocalFace = wpp.whichFace(p.face());

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -72,11 +72,7 @@ public:
// Member Functions
//- Apply wall correction
virtual void correct
(
typename CloudType::parcelType& p,
const wallPolyPatch& wpp
);
virtual void correct(typename CloudType::parcelType& p);
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -51,8 +51,7 @@ Foam::MixedDiffuseSpecular<CloudType>::~MixedDiffuseSpecular()
template<class CloudType>
void Foam::MixedDiffuseSpecular<CloudType>::correct
(
typename CloudType::parcelType& p,
const wallPolyPatch& wpp
typename CloudType::parcelType& p
)
{
vector& U = p.U();
@ -61,7 +60,9 @@ void Foam::MixedDiffuseSpecular<CloudType>::correct
label typeId = p.typeId();
label wppIndex = wpp.index();
const label wppIndex = p.patch();
const polyPatch& wpp = p.mesh().boundaryMesh()[wppIndex];
label wppLocalFace = wpp.whichFace(p.face());

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -80,11 +80,7 @@ public:
// Member Functions
//- Apply wall correction
virtual void correct
(
typename CloudType::parcelType& p,
const wallPolyPatch& wpp
);
virtual void correct(typename CloudType::parcelType& p);
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -52,8 +52,7 @@ Foam::SpecularReflection<CloudType>::~SpecularReflection()
template<class CloudType>
void Foam::SpecularReflection<CloudType>::correct
(
typename CloudType::parcelType& p,
const wallPolyPatch& wpp
typename CloudType::parcelType& p
)
{
vector& U = p.U();

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -70,11 +70,7 @@ public:
// Member Functions
//- Apply wall correction
virtual void correct
(
typename CloudType::parcelType& p,
const wallPolyPatch& wpp
);
virtual void correct(typename CloudType::parcelType& p);
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -127,11 +127,7 @@ public:
// Member Functions
//- Apply wall correction
virtual void correct
(
typename CloudType::parcelType& p,
const wallPolyPatch& wpp
) = 0;
virtual void correct(typename CloudType::parcelType& p) = 0;
};

View File

@ -284,93 +284,44 @@ protected:
// Patch interactions
//- Overridable function to handle the particle hitting a
// patch. Executed before other patch-hitting functions.
//- Overridable function to handle the particle hitting a patch.
// Executed before other patch-hitting functions.
template<class TrackCloudType>
bool hitPatch
(
const polyPatch&,
TrackCloudType& cloud,
trackingData& td
);
bool hitPatch(TrackCloudType&, trackingData&);
//- Overridable function to handle the particle hitting a wedgePatch
template<class TrackCloudType>
void hitWedgePatch
(
const wedgePolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitWedgePatch(TrackCloudType&, trackingData&);
//- Overridable function to handle the particle hitting a
// symmetryPlanePatch
template<class TrackCloudType>
void hitSymmetryPlanePatch
(
const symmetryPlanePolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitSymmetryPlanePatch(TrackCloudType&, trackingData&);
//- Overridable function to handle the particle hitting a
// symmetryPatch
//- Overridable function to handle the particle hitting a symmetryPatch
template<class TrackCloudType>
void hitSymmetryPatch
(
const symmetryPolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitSymmetryPatch(TrackCloudType&, trackingData&);
//- Overridable function to handle the particle hitting a cyclicPatch
template<class TrackCloudType>
void hitCyclicPatch
(
const cyclicPolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitCyclicPatch(TrackCloudType&, trackingData&);
//- Overridable function to handle the particle hitting a cyclicAMIPatch
template<class TrackCloudType>
void hitCyclicAMIPatch
(
const cyclicAMIPolyPatch&,
TrackCloudType& cloud,
trackingData& td,
const vector& direction
);
void hitCyclicAMIPatch(TrackCloudType&, trackingData&, const vector&);
//- Overridable function to handle the particle hitting a
// cyclicACMIPatch
template<class TrackCloudType>
void hitCyclicACMIPatch
(
const cyclicACMIPolyPatch&,
TrackCloudType& cloud,
trackingData& td,
const vector& direction
);
void hitCyclicACMIPatch(TrackCloudType&, trackingData&, const vector&);
//- Overridable function to handle the particle hitting a
// processorPatch
//- Overridable function to handle the particle hitting a processorPatch
template<class TrackCloudType>
void hitProcessorPatch
(
const processorPolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitProcessorPatch(TrackCloudType&, trackingData&);
//- Overridable function to handle the particle hitting a wallPatch
template<class TrackCloudType>
void hitWallPatch
(
const wallPolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitWallPatch(TrackCloudType&, trackingData&);
public:

View File

@ -122,73 +122,41 @@ void Foam::particle::hitFace
}
else if (onBoundaryFace())
{
if(!p.hitPatch(mesh_.boundaryMesh()[p.patch()], cloud, ttd))
if(!p.hitPatch(cloud, ttd))
{
const polyPatch& patch = mesh_.boundaryMesh()[p.patch()];
if (isA<wedgePolyPatch>(patch))
{
p.hitWedgePatch
(
static_cast<const wedgePolyPatch&>(patch), cloud, ttd
);
p.hitWedgePatch(cloud, ttd);
}
else if (isA<symmetryPlanePolyPatch>(patch))
{
p.hitSymmetryPlanePatch
(
static_cast<const symmetryPlanePolyPatch&>(patch),
cloud,
ttd
);
p.hitSymmetryPlanePatch(cloud, ttd);
}
else if (isA<symmetryPolyPatch>(patch))
{
p.hitSymmetryPatch
(
static_cast<const symmetryPolyPatch&>(patch), cloud, ttd
);
p.hitSymmetryPatch(cloud, ttd);
}
else if (isA<cyclicPolyPatch>(patch))
{
p.hitCyclicPatch
(
static_cast<const cyclicPolyPatch&>(patch), cloud, ttd
);
p.hitCyclicPatch(cloud, ttd);
}
else if (isA<cyclicACMIPolyPatch>(patch))
{
p.hitCyclicACMIPatch
(
static_cast<const cyclicACMIPolyPatch&>(patch),
cloud,
ttd,
direction
);
p.hitCyclicACMIPatch(cloud, ttd, direction);
}
else if (isA<cyclicAMIPolyPatch>(patch))
{
p.hitCyclicAMIPatch
(
static_cast<const cyclicAMIPolyPatch&>(patch),
cloud,
ttd,
direction
);
p.hitCyclicAMIPatch(cloud, ttd, direction);
}
else if (isA<processorPolyPatch>(patch))
{
p.hitProcessorPatch
(
static_cast<const processorPolyPatch&>(patch), cloud, ttd
);
p.hitProcessorPatch(cloud, ttd);
}
else if (isA<wallPolyPatch>(patch))
{
p.hitWallPatch
(
static_cast<const wallPolyPatch&>(patch), cloud, ttd
);
p.hitWallPatch(cloud, ttd);
}
else
{
@ -220,43 +188,36 @@ void Foam::particle::trackToAndHitFace
template<class TrackCloudType>
bool Foam::particle::hitPatch
(
const polyPatch&,
TrackCloudType&,
trackingData&
)
bool Foam::particle::hitPatch(TrackCloudType&, trackingData&)
{
return false;
}
template<class TrackCloudType>
void Foam::particle::hitWedgePatch
(
const wedgePolyPatch& wpp,
TrackCloudType&,
trackingData&
)
void Foam::particle::hitWedgePatch(TrackCloudType& cloud, trackingData& td)
{
FatalErrorInFunction
<< "Hitting a wedge patch should not be possible."
<< abort(FatalError);
vector nf = normal();
nf /= mag(nf);
transformProperties(I - 2.0*nf*nf);
hitSymmetryPatch(cloud, td);
}
template<class TrackCloudType>
void Foam::particle::hitSymmetryPlanePatch
(
const symmetryPlanePolyPatch& spp,
TrackCloudType&,
trackingData&
TrackCloudType& cloud,
trackingData& td
)
{
hitSymmetryPatch(cloud, td);
}
template<class TrackCloudType>
void Foam::particle::hitSymmetryPatch(TrackCloudType&, trackingData&)
{
vector nf = normal();
nf /= mag(nf);
@ -266,28 +227,10 @@ void Foam::particle::hitSymmetryPlanePatch
template<class TrackCloudType>
void Foam::particle::hitSymmetryPatch
(
const symmetryPolyPatch& spp,
TrackCloudType&,
trackingData&
)
{
vector nf = normal();
nf /= mag(nf);
transformProperties(I - 2.0*nf*nf);
}
template<class TrackCloudType>
void Foam::particle::hitCyclicPatch
(
const cyclicPolyPatch& cpp,
TrackCloudType&,
trackingData&
)
void Foam::particle::hitCyclicPatch(TrackCloudType&, trackingData&)
{
const cyclicPolyPatch& cpp =
static_cast<const cyclicPolyPatch&>(mesh_.boundaryMesh()[patch()]);
const cyclicPolyPatch& receiveCpp = cpp.neighbPatch();
const label receiveFacei = receiveCpp.whichFace(facei_);
@ -327,14 +270,15 @@ void Foam::particle::hitCyclicPatch
template<class TrackCloudType>
void Foam::particle::hitCyclicAMIPatch
(
const cyclicAMIPolyPatch& cpp,
TrackCloudType& cloud,
TrackCloudType&,
trackingData& td,
const vector& direction
)
{
vector pos = position();
const cyclicAMIPolyPatch& cpp =
static_cast<const cyclicAMIPolyPatch&>(mesh_.boundaryMesh()[patch()]);
const cyclicAMIPolyPatch& receiveCpp = cpp.neighbPatch();
const label sendFacei = cpp.whichFace(facei_);
const label receiveFacei = cpp.pointFace(sendFacei, direction, pos);
@ -398,12 +342,14 @@ void Foam::particle::hitCyclicAMIPatch
template<class TrackCloudType>
void Foam::particle::hitCyclicACMIPatch
(
const cyclicACMIPolyPatch& cpp,
TrackCloudType& cloud,
trackingData& td,
const vector& direction
)
{
const cyclicACMIPolyPatch& cpp =
static_cast<const cyclicACMIPolyPatch&>(mesh_.boundaryMesh()[patch()]);
const label localFacei = cpp.whichFace(facei_);
// If the mask is within the patch tolerance at either end, then we can
@ -424,7 +370,7 @@ void Foam::particle::hitCyclicACMIPatch
if (couple)
{
hitCyclicAMIPatch(cpp, cloud, td, direction);
hitCyclicAMIPatch(cloud, td, direction);
}
else
{
@ -437,22 +383,12 @@ void Foam::particle::hitCyclicACMIPatch
template<class TrackCloudType>
void Foam::particle::hitProcessorPatch
(
const processorPolyPatch&,
TrackCloudType&,
trackingData&
)
void Foam::particle::hitProcessorPatch(TrackCloudType&, trackingData&)
{}
template<class TrackCloudType>
void Foam::particle::hitWallPatch
(
const wallPolyPatch&,
TrackCloudType&,
trackingData&
)
void Foam::particle::hitWallPatch(TrackCloudType&, trackingData&)
{}

View File

@ -352,7 +352,6 @@ template<class ParcelType>
template<class TrackCloudType>
bool Foam::KinematicParcel<ParcelType>::hitPatch
(
const polyPatch& pp,
TrackCloudType& cloud,
trackingData& td
)
@ -360,6 +359,8 @@ bool Foam::KinematicParcel<ParcelType>::hitPatch
typename TrackCloudType::parcelType& p =
static_cast<typename TrackCloudType::parcelType&>(*this);
const polyPatch& pp = p.mesh().boundaryMesh()[p.patch()];
// Invoke post-processing model
cloud.functions().postPatch(p, pp, td.keepParticle);
@ -386,8 +387,7 @@ template<class ParcelType>
template<class TrackCloudType>
void Foam::KinematicParcel<ParcelType>::hitProcessorPatch
(
const processorPolyPatch&,
TrackCloudType& cloud,
TrackCloudType&,
trackingData& td
)
{
@ -399,12 +399,11 @@ template<class ParcelType>
template<class TrackCloudType>
void Foam::KinematicParcel<ParcelType>::hitWallPatch
(
const wallPolyPatch& wpp,
TrackCloudType& cloud,
trackingData& td
TrackCloudType&,
trackingData&
)
{
// Wall interactions handled by generic hitPatch function
// wall interactions are handled by the generic hitPatch method
}

View File

@ -585,31 +585,16 @@ public:
//- Overridable function to handle the particle hitting a patch
// Executed before other patch-hitting functions
template<class TrackCloudType>
bool hitPatch
(
const polyPatch& p,
TrackCloudType& cloud,
trackingData& td
);
bool hitPatch(TrackCloudType& cloud, trackingData& td);
//- Overridable function to handle the particle hitting a
// processorPatch
template<class TrackCloudType>
void hitProcessorPatch
(
const processorPolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitProcessorPatch(TrackCloudType& cloud, trackingData& td);
//- Overridable function to handle the particle hitting a wallPatch
template<class TrackCloudType>
void hitWallPatch
(
const wallPolyPatch&,
TrackCloudType& cloud,
trackingData& td
);
void hitWallPatch(TrackCloudType& cloud, trackingData& td);
//- Transform the physical properties of the particle
// according to the given transformation tensor

View File

@ -235,34 +235,19 @@ void Foam::molecule::setSiteSizes(label size)
}
bool Foam::molecule::hitPatch
(
const polyPatch&,
moleculeCloud&,
trackingData&
)
bool Foam::molecule::hitPatch(moleculeCloud&, trackingData&)
{
return false;
}
void Foam::molecule::hitProcessorPatch
(
const processorPolyPatch&,
moleculeCloud&,
trackingData& td
)
void Foam::molecule::hitProcessorPatch(moleculeCloud&, trackingData& td)
{
td.switchProcessor = true;
}
void Foam::molecule::hitWallPatch
(
const wallPolyPatch& wpp,
moleculeCloud& cloud,
trackingData& td
)
void Foam::molecule::hitWallPatch(moleculeCloud&, trackingData&)
{
vector nw = normal();
nw /= mag(nw);

View File

@ -364,28 +364,13 @@ public:
//- Overridable function to handle the particle hitting a patch
// Executed before other patch-hitting functions
bool hitPatch
(
const polyPatch&,
moleculeCloud& cloud,
trackingData& td
);
bool hitPatch(moleculeCloud& cloud, trackingData& td);
//- Overridable function to handle the particle hitting a processorPatch
void hitProcessorPatch
(
const processorPolyPatch&,
moleculeCloud& cloud,
trackingData& td
);
void hitProcessorPatch(moleculeCloud& cloud, trackingData& td);
//- Overridable function to handle the particle hitting a wallPatch
void hitWallPatch
(
const wallPolyPatch&,
moleculeCloud& cloud,
trackingData& td
);
void hitWallPatch(moleculeCloud& cloud, trackingData& td);
// I-O

View File

@ -96,12 +96,7 @@ bool Foam::solidParticle::move
}
bool Foam::solidParticle::hitPatch
(
const polyPatch&,
solidParticleCloud& cloud,
trackingData&
)
bool Foam::solidParticle::hitPatch(solidParticleCloud&, trackingData&)
{
return false;
}
@ -109,8 +104,7 @@ bool Foam::solidParticle::hitPatch
void Foam::solidParticle::hitProcessorPatch
(
const processorPolyPatch&,
solidParticleCloud& cloud,
solidParticleCloud&,
trackingData& td
)
{
@ -118,12 +112,7 @@ void Foam::solidParticle::hitProcessorPatch
}
void Foam::solidParticle::hitWallPatch
(
const wallPolyPatch& wpp,
solidParticleCloud& cloud,
trackingData& td
)
void Foam::solidParticle::hitWallPatch(solidParticleCloud& cloud, trackingData&)
{
vector nw = normal();
nw /= mag(nw);
@ -140,7 +129,7 @@ void Foam::solidParticle::hitWallPatch
}
void Foam::solidParticle::transformProperties (const tensor& T)
void Foam::solidParticle::transformProperties(const tensor& T)
{
particle::transformProperties(T);
U_ = transform(T, U_);

View File

@ -196,29 +196,14 @@ public:
//- Overridable function to handle the particle hitting a patch
// Executed before other patch-hitting functions
bool hitPatch
(
const polyPatch&,
solidParticleCloud& cloud,
trackingData& td
);
bool hitPatch(solidParticleCloud& cloud, trackingData& td);
//- Overridable function to handle the particle hitting a
// processorPatch
void hitProcessorPatch
(
const processorPolyPatch&,
solidParticleCloud& cloud,
trackingData& td
);
void hitProcessorPatch(solidParticleCloud& cloud, trackingData& td);
//- Overridable function to handle the particle hitting a wallPatch
void hitWallPatch
(
const wallPolyPatch&,
solidParticleCloud& cloud,
trackingData& td
);
void hitWallPatch(solidParticleCloud& cloud, trackingData& td);
//- Transform the physical properties of the particle
// according to the given transformation tensor

View File

@ -154,12 +154,7 @@ bool Foam::trackedParticle::move
}
bool Foam::trackedParticle::hitPatch
(
const polyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td
)
bool Foam::trackedParticle::hitPatch(Cloud<trackedParticle>&, trackingData&)
{
return false;
}
@ -167,8 +162,7 @@ bool Foam::trackedParticle::hitPatch
void Foam::trackedParticle::hitWedgePatch
(
const wedgePolyPatch&,
Cloud<trackedParticle>& cloud,
Cloud<trackedParticle>&,
trackingData& td
)
{
@ -179,8 +173,7 @@ void Foam::trackedParticle::hitWedgePatch
void Foam::trackedParticle::hitSymmetryPlanePatch
(
const symmetryPlanePolyPatch&,
Cloud<trackedParticle>& cloud,
Cloud<trackedParticle>&,
trackingData& td
)
{
@ -191,8 +184,7 @@ void Foam::trackedParticle::hitSymmetryPlanePatch
void Foam::trackedParticle::hitSymmetryPatch
(
const symmetryPolyPatch&,
Cloud<trackedParticle>& cloud,
Cloud<trackedParticle>&,
trackingData& td
)
{
@ -203,8 +195,7 @@ void Foam::trackedParticle::hitSymmetryPatch
void Foam::trackedParticle::hitCyclicPatch
(
const cyclicPolyPatch&,
Cloud<trackedParticle>& cloud,
Cloud<trackedParticle>&,
trackingData& td
)
{
@ -215,10 +206,9 @@ void Foam::trackedParticle::hitCyclicPatch
void Foam::trackedParticle::hitCyclicAMIPatch
(
const cyclicAMIPolyPatch&,
Cloud<trackedParticle>& cloud,
Cloud<trackedParticle>&,
trackingData& td,
const vector&
const vector& direction
)
{
// Remove particle
@ -228,8 +218,7 @@ void Foam::trackedParticle::hitCyclicAMIPatch
void Foam::trackedParticle::hitCyclicACMIPatch
(
const cyclicACMIPolyPatch&,
Cloud<trackedParticle>& cloud,
Cloud<trackedParticle>&,
trackingData& td,
const vector&
)
@ -241,8 +230,7 @@ void Foam::trackedParticle::hitCyclicACMIPatch
void Foam::trackedParticle::hitProcessorPatch
(
const processorPolyPatch&,
Cloud<trackedParticle>& cloud,
Cloud<trackedParticle>&,
trackingData& td
)
{
@ -253,8 +241,7 @@ void Foam::trackedParticle::hitProcessorPatch
void Foam::trackedParticle::hitWallPatch
(
const wallPolyPatch& wpp,
Cloud<trackedParticle>& cloud,
Cloud<trackedParticle>&,
trackingData& td
)
{

View File

@ -242,88 +242,50 @@ public:
//- Track all particles to their end point
bool move(Cloud<trackedParticle>&, trackingData&, const scalar);
//- Overridable function to handle the particle hitting a patch
// Executed before other patch-hitting functions
bool hitPatch
(
const polyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td
);
bool hitPatch(Cloud<trackedParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a wedge
void hitWedgePatch
(
const wedgePolyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td
);
void hitWedgePatch(Cloud<trackedParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a
// symmetry plane
void hitSymmetryPlanePatch
(
const symmetryPlanePolyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td
);
void hitSymmetryPlanePatch(Cloud<trackedParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a
// symmetry patch
void hitSymmetryPatch
(
const symmetryPolyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td
);
void hitSymmetryPatch(Cloud<trackedParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a cyclic
void hitCyclicPatch
(
const cyclicPolyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td
);
void hitCyclicPatch(Cloud<trackedParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a cyclicAMI
void hitCyclicAMIPatch
(
const cyclicAMIPolyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td,
Cloud<trackedParticle>&,
trackingData&,
const vector&
);
//- Overridable function to handle the particle hitting a cyclicACMI
void hitCyclicACMIPatch
(
const cyclicACMIPolyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td,
Cloud<trackedParticle>&,
trackingData&,
const vector&
);
//- Overridable function to handle the particle hitting a
//- processorPatch
void hitProcessorPatch
(
const processorPolyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td
);
void hitProcessorPatch(Cloud<trackedParticle>&, trackingData&);
//- Overridable function to handle the particle hitting a wallPatch
void hitWallPatch
(
const wallPolyPatch&,
Cloud<trackedParticle>& cloud,
trackingData& td
);
void hitWallPatch(Cloud<trackedParticle>&, trackingData&);
//- Convert processor patch addressing to the global equivalents
// and set the celli to the face-neighbour
void correctAfterParallelTransfer(const label, trackingData& td);
void correctAfterParallelTransfer(const label, trackingData&);
// Ostream Operator