Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev

This commit is contained in:
Henry Weller
2018-07-23 08:56:37 +01:00
2 changed files with 62 additions and 21 deletions

View File

@ -143,7 +143,7 @@ void Foam::ParticleErosion<CloudType>::preEvolve()
(
IOobject
(
this->owner().name() + "Q",
this->owner().name() + ":Q",
mesh.time().timeName(),
mesh,
IOobject::READ_IF_PRESENT,
@ -166,43 +166,42 @@ void Foam::ParticleErosion<CloudType>::postPatch
)
{
const label patchi = pp.index();
const label localPatchi = applyToPatch(patchi);
if (localPatchi != -1)
{
vector nw;
vector Up;
// patch-normal direction
// Get patch data
vector nw, Up;
this->owner().patchData(p, pp, nw, Up);
// particle velocity relative to patch
// Particle velocity relative to patch
const vector& U = p.U() - Up;
// quick reject if particle travelling away from the patch
// Quick rejection if the particle is travelling away from the patch
if ((nw & U) < 0)
{
return;
}
const scalar magU = mag(U);
const vector Udir = U/magU;
const vector UHat = U/magU;
// determine impact angle, alpha
const scalar alpha = mathematical::pi/2.0 - acos(nw & Udir);
const scalar coeff = p.nParticle()*p.mass()*sqr(magU)/(p_*psi_*K_);
// Impact angle
const scalar alpha = mathematical::pi/2 - acos(nw & UHat);
// Get the face value to accumulate into
const label patchFacei = pp.whichFace(p.face());
scalar& Q = QPtr_->boundaryFieldRef()[patchi][patchFacei];
if (tan(alpha) < K_/6.0)
// Finnie's model
const scalar coeff = p.nParticle()*p.mass()*sqr(magU)/(p_*psi_*K_);
if (tan(alpha) < K_/6)
{
Q += coeff*(sin(2.0*alpha) - 6.0/K_*sqr(sin(alpha)));
Q += coeff*(sin(2*alpha) - 6/K_*sqr(sin(alpha)));
}
else
{
Q += coeff*(K_*sqr(cos(alpha))/6.0);
Q += coeff*(K_*sqr(cos(alpha))/6);
}
}
}

View File

@ -25,7 +25,49 @@ Class
Foam::ParticleErosion
Description
Creates particle erosion field, Q
Function object to create a field of eroded volume, Q, on a specified list
of patches. The volume is calculated by the model of Finnie et al. The
implementation follows the description given by the review of Yadav et al.
References:
\verbatim
I Finnie, A Levy, D H McFadden
"Fundamental Mechanisms of the Erosive Wear of Ductile Metals by Solid
Particles"
ASTM STP664, 1979, pages 36-58
\endverbatim
\verbatim
I Finnie and D H McFadden
"On the Velocity Dependence of the Erosion of Ductile Metal by Solid
Particle at Low Angles of Incidence"
Wear, 1978, volume 48, pages 181-190
\endverbatim
\verbatim
G Yadav, S Tiwari, A Rajput, R Jatola, M L Jain
"A Review: Erosion Wear Models"
Emerging Trends in Mechanical Engineering, 2016, volume 1, pages 150-154
\endverbatim
Usage
\table
Property | Description | Req'd? | Default
patches | The patches on which to calculate Q | yes |
p | Plastic flow stress | yes |
psi | Ratio between depth of contact and length of cut | no | 2
K | Ratio of normal and tangential force | no | 2
\endtable
Example:
\verbatim
<functionName>
{
type particleErosion;
patches (wall1 wall2);
p 2.7e9;
}
\endverbatim
SourceFiles
ParticleErosion.C
@ -60,19 +102,19 @@ class ParticleErosion
typedef typename CloudType::parcelType parcelType;
//- Particle erosion field
//- Particle eroded volume field
autoPtr<volScalarField> QPtr_;
//- List of patch indices to post-process
labelList patchIDs_;
//- Plastic flow stress - typical metal value = 2.7 GPa
//- Plastic flow stress
scalar p_;
//- Ratio between depth of contact and length of cut - default=2
//- Ratio between depth of contact and length of cut. Default 2.
scalar psi_;
//- Ratio of normal and tangential forces - default=2
//- Ratio of normal and tangential forces. Default 2.
scalar K_;