Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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_;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user