mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
unused files
This commit is contained in:
@ -1,211 +0,0 @@
|
||||
// The FOAM Project // File: reflectParcel.C
|
||||
/*
|
||||
-------------------------------------------------------------------------------
|
||||
========= | Class Implementation
|
||||
\\ / |
|
||||
\\ / | Name: reflectParcel
|
||||
\\ / | Family: wallModel
|
||||
\\/ |
|
||||
F ield | FOAM version: 2.3
|
||||
O peration |
|
||||
A and | Copyright (C) 1991-2009 OpenCFD Ltd.
|
||||
M anipulation | All Rights Reserved.
|
||||
-------------------------------------------------------------------------------
|
||||
DESCRIPTION
|
||||
|
||||
AUTHOR
|
||||
Henry G Weller.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "reflectParcel.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
#include "wallPolyPatch.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
defineTypeNameAndDebug(reflectParcel, 0);
|
||||
|
||||
addToRunTimeSelectionTable
|
||||
(
|
||||
wallModel,
|
||||
reflectParcel,
|
||||
dictionary
|
||||
);
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
// Construct from components
|
||||
reflectParcel::reflectParcel
|
||||
(
|
||||
const dictionary& dict,
|
||||
const fvMesh& mesh,
|
||||
spray& sm
|
||||
)
|
||||
:
|
||||
wallModel(dict, mesh, sm),
|
||||
coeffsDict_(dict.subDict(typeName + "Coeffs")),
|
||||
elasticity_(readScalar(coeffsDict_.lookup("elasticity")))
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
reflectParcel::~reflectParcel()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
// Return 'keepParcel'
|
||||
bool reflectParcel::wallTreatment
|
||||
(
|
||||
parcel& p
|
||||
) const
|
||||
{
|
||||
label patchi = p.patch();
|
||||
label facei = p.patchFace(patchi);
|
||||
|
||||
const polyMesh& mesh = spray_.mesh();
|
||||
|
||||
if (typeid(mesh_.boundaryMesh()[patchi]) == typeid(wallPolyPatch))
|
||||
{
|
||||
// wallNormal defined to point outwards of domain
|
||||
vector Sf = mesh_.Sf().boundaryField()[patchi][facei];
|
||||
Sf /= mag(Sf);
|
||||
|
||||
// adjust velocity when wall is moving
|
||||
if (!mesh.moving())
|
||||
{
|
||||
scalar Un = p.U() & Sf;
|
||||
|
||||
if (Un > 0)
|
||||
{
|
||||
p.U() -= (1.0 + elasticity_)*Un*Sf;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
label facep = p.face();
|
||||
|
||||
scalar dt = spray_.runTime().deltaT().value();
|
||||
scalar fraction = p.t0()/dt;
|
||||
const vectorField& oldPoints = mesh.oldPoints();
|
||||
const vector& Cf1 = mesh.faceCentres()[facep];
|
||||
|
||||
vector Cf0 = mesh.faces()[facep].centre(oldPoints);
|
||||
vector Cf = Cf0 + fraction*(Cf1 - Cf0);
|
||||
vector Sf0 = mesh.faces()[facep].normal(oldPoints);
|
||||
Sf0 /= mag(Sf0);
|
||||
|
||||
scalar magSfDiff = mag(Sf - Sf0);
|
||||
|
||||
if (magSfDiff > SMALL)
|
||||
{
|
||||
bool pureRotation = false;
|
||||
|
||||
if (pureRotation)
|
||||
{
|
||||
// rotation
|
||||
|
||||
// find center of rotation
|
||||
vector omega = Sf0 ^ Sf;
|
||||
scalar magOmega = mag(omega);
|
||||
omega /= magOmega+SMALL;
|
||||
vector n0 = omega ^ Sf0;
|
||||
scalar lam = ((Cf1 - Cf0) & Sf)/(n0 & Sf);
|
||||
vector r0 = Cf0 + lam*n0;
|
||||
|
||||
scalar phiVel = ::asin(magOmega)/dt;
|
||||
|
||||
vector pos = p.position() - r0;
|
||||
vector v = phiVel*(omega ^ pos);
|
||||
|
||||
vector Sfp = Sf0 + fraction*(Sf - Sf0);
|
||||
//vector Sfp = Sf;
|
||||
|
||||
vector Ur = p.U() - v;
|
||||
scalar Urn = Ur & Sfp;
|
||||
/*
|
||||
scalar dd = (p.position() - r0) & Sfp;
|
||||
Info << "Urn = " << Urn
|
||||
<< ", dd = " << dd
|
||||
<< ", pos = " << p.position()
|
||||
<< ", Sfp = " << Sfp
|
||||
<< ", omega = " << omega
|
||||
<< ", r0 = " << r0
|
||||
<< endl;
|
||||
*/
|
||||
if (Urn > 0.0)
|
||||
{
|
||||
p.U() -= (1.0 + elasticity_)*Urn*Sfp;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
vector Sfp = Sf0 + fraction*(Sf - Sf0);
|
||||
//vector Sfp = Sf;
|
||||
vector omega = Sf0 ^ Sf;
|
||||
scalar magOmega = mag(omega);
|
||||
omega /= magOmega+SMALL;
|
||||
|
||||
scalar phiVel = ::asin(magOmega)/dt;
|
||||
|
||||
scalar dist = (p.position() - Cf) & Sfp;
|
||||
vector pos = p.position() - dist*Sfp;
|
||||
vector vrot = phiVel*(omega ^ (pos - Cf));
|
||||
vector vtrans = (Cf1 - Cf0)/dt;
|
||||
vector v = vtrans + vrot;
|
||||
|
||||
scalar Un = ((p.U() - v) & Sfp);
|
||||
|
||||
if (Un > 0.0)
|
||||
{
|
||||
p.U() -= (1.0 + elasticity_)*Un*Sfp;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// translation
|
||||
|
||||
vector v = (Cf1 - Cf0)/dt;
|
||||
vector Ur = p.U() - v;
|
||||
scalar Urn = Ur & Sf;
|
||||
|
||||
if (Urn > 0.0)
|
||||
{
|
||||
Ur -= (1.0 + elasticity_)*Urn*Sf;
|
||||
p.U() = Ur + v;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
FatalError
|
||||
<< "bool reflectParcel::wallTreatment(parcel& parcel) const "
|
||||
<< " parcel has hit a boundary "
|
||||
<< mesh_.boundary()[patchi].type()
|
||||
<< " which not yet has been implemented."
|
||||
<< abort(FatalError);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
Reference in New Issue
Block a user