Skip to content
Snippets Groups Projects
Commit 6f1a2dec authored by henry's avatar henry
Browse files

Fix from Niklas Nordin and tidy-up.

parent e7429463
Branches
Tags
No related merge requests found
...@@ -30,24 +30,22 @@ License ...@@ -30,24 +30,22 @@ License
#include "mathematicalConstants.H" #include "mathematicalConstants.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam namespace Foam
{ {
defineTypeNameAndDebug(swirlInjector, 0);
defineTypeNameAndDebug(swirlInjector, 0);
addToRunTimeSelectionTable
addToRunTimeSelectionTable (
( injectorType,
injectorType, swirlInjector,
swirlInjector, dictionary
dictionary );
);
} }
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
// Construct from components
Foam::swirlInjector::swirlInjector Foam::swirlInjector::swirlInjector
( (
const Foam::Time& t, const Foam::Time& t,
...@@ -66,40 +64,56 @@ Foam::swirlInjector::swirlInjector ...@@ -66,40 +64,56 @@ Foam::swirlInjector::swirlInjector
X_(propsDict_.lookup("X")), X_(propsDict_.lookup("X")),
massFlowRateProfile_(propsDict_.lookup("massFlowRateProfile")), massFlowRateProfile_(propsDict_.lookup("massFlowRateProfile")),
injectionPressureProfile_(propsDict_.lookup("injectionPressureProfile")), injectionPressureProfile_(propsDict_.lookup("injectionPressureProfile")),
velocityProfile_(injectionPressureProfile_), velocityProfile_(massFlowRateProfile_),
CdProfile_(injectionPressureProfile_), CdProfile_(massFlowRateProfile_),
TProfile_(injectionPressureProfile_), TProfile_(massFlowRateProfile_),
averageParcelMass_(mass_/nParcels_), averageParcelMass_(mass_/nParcels_),
pressureIndependentVelocity_(false) pressureIndependentVelocity_(false)
{ {
// convert CA to real time // convert CA to real time
forAll(massFlowRateProfile_, i) forAll(massFlowRateProfile_, i)
{ {
massFlowRateProfile_[i][0] = t.userTimeToTime(massFlowRateProfile_[i][0]); massFlowRateProfile_[i][0] =
t.userTimeToTime(massFlowRateProfile_[i][0]);
} }
forAll(injectionPressureProfile_, i) forAll(injectionPressureProfile_, i)
{ {
injectionPressureProfile_[i][0] = t.userTimeToTime(injectionPressureProfile_[i][0]); injectionPressureProfile_[i][0] =
t.userTimeToTime(injectionPressureProfile_[i][0]);
} }
// check if time entries match // check if time entries match
if (mag(massFlowRateProfile_[0][0]-injectionPressureProfile_[0][0]) > SMALL) if (mag(massFlowRateProfile_[0][0]-injectionPressureProfile_[0][0]) > SMALL)
{ {
FatalError << "swirlInjector::swirlInjector(const time& t, const dictionary dict) " << endl FatalErrorIn
<< " start-times do not match for injectionPressureProfile and massFlowRateProfile." (
"swirlInjector::swirlInjector(const time& t, const dictionary dict)"
) << "Start-times do not match for "
"injectionPressureProfile and massFlowRateProfile."
<< abort(FatalError); << abort(FatalError);
} }
// check if time entries match // check if time entries match
if (mag(massFlowRateProfile_[massFlowRateProfile_.size()-1][0]-injectionPressureProfile_[injectionPressureProfile_.size()-1][0]) > SMALL) if
(
mag
(
massFlowRateProfile_[massFlowRateProfile_.size() - 1][0]
- injectionPressureProfile_[injectionPressureProfile_.size() - 1][0]
) > SMALL
)
{ {
FatalError << "swirlInjector::swirlInjector(const time& t, const dictionary dict) " << endl FatalErrorIn
<< " end-times do not match for injectionPressureProfile and massFlowRateProfile." (
"swirlInjector::swirlInjector(const time& t, const dictionary dict)"
) << "End-times do not match for "
"injectionPressureProfile and massFlowRateProfile."
<< abort(FatalError); << abort(FatalError);
} }
scalar integratedMFR = integrateTable(massFlowRateProfile_); scalar integratedMFR = integrateTable(massFlowRateProfile_);
scalar integratedPressure = integrateTable(injectionPressureProfile_)/(teoi()-tsoi()); scalar integratedPressure =
integrateTable(injectionPressureProfile_)/(teoi()-tsoi());
forAll(massFlowRateProfile_, i) forAll(massFlowRateProfile_, i)
{ {
...@@ -118,12 +132,13 @@ Foam::swirlInjector::swirlInjector ...@@ -118,12 +132,13 @@ Foam::swirlInjector::swirlInjector
forAll(injectionPressureProfile_, i) forAll(injectionPressureProfile_, i)
{ {
// correct the pressureProfile to match the injection pressure // correct the pressureProfile to match the injection pressure
injectionPressureProfile_[i][1] *= injectionPressure_/integratedPressure; injectionPressureProfile_[i][1] *=
injectionPressure_/integratedPressure;
} }
// Normalize the direction vector // Normalize the direction vector
direction_ /= mag(direction_); direction_ /= mag(direction_);
setTangentialVectors(); setTangentialVectors();
// check molar fractions // check molar fractions
...@@ -135,17 +150,19 @@ Foam::swirlInjector::swirlInjector ...@@ -135,17 +150,19 @@ Foam::swirlInjector::swirlInjector
if (mag(Xsum - 1.0) > SMALL) if (mag(Xsum - 1.0) > SMALL)
{ {
Info << "Warning!!!\n swirlInjector::swirlInjector(const time& t, Istream& is)" WarningIn
<< "X does not add up to 1.0, correcting molar fractions." (
<< endl; "swirlInjector::swirlInjector(const time& t, const dictionary dict)"
) << "X does not add up to 1.0, correcting molar fractions." << endl;
forAll(X_, i) forAll(X_, i)
{ {
X_[i] /= Xsum; X_[i] /= Xsum;
} }
} }
} }
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::swirlInjector::~swirlInjector() Foam::swirlInjector::~swirlInjector()
...@@ -170,10 +187,8 @@ void Foam::swirlInjector::setTangentialVectors() ...@@ -170,10 +187,8 @@ void Foam::swirlInjector::setTangentialVectors()
tangentialInjectionVector1_ = tangent/magV; tangentialInjectionVector1_ = tangent/magV;
tangentialInjectionVector2_ = direction_ ^ tangentialInjectionVector1_; tangentialInjectionVector2_ = direction_ ^ tangentialInjectionVector1_;
} }
Foam::label Foam::swirlInjector::nParcelsToInject Foam::label Foam::swirlInjector::nParcelsToInject
( (
const scalar time0, const scalar time0,
...@@ -183,7 +198,7 @@ Foam::label Foam::swirlInjector::nParcelsToInject ...@@ -183,7 +198,7 @@ Foam::label Foam::swirlInjector::nParcelsToInject
scalar mInj = mass_*(fractionOfInjection(time1)-fractionOfInjection(time0)); scalar mInj = mass_*(fractionOfInjection(time1)-fractionOfInjection(time0));
label nParcels = label(mInj/averageParcelMass_ + 0.49); label nParcels = label(mInj/averageParcelMass_ + 0.49);
return nParcels; return nParcels;
} }
...@@ -223,7 +238,7 @@ Foam::vector Foam::swirlInjector::position ...@@ -223,7 +238,7 @@ Foam::vector Foam::swirlInjector::position
scalar iAngle = 2.0*mathematicalConstant::pi*rndGen.scalar01(); scalar iAngle = 2.0*mathematicalConstant::pi*rndGen.scalar01();
return return
( (
position_ position_
+ iRadius + iRadius
* ( * (
...@@ -231,7 +246,7 @@ Foam::vector Foam::swirlInjector::position ...@@ -231,7 +246,7 @@ Foam::vector Foam::swirlInjector::position
+ tangentialInjectionVector2_*sin(iAngle) + tangentialInjectionVector2_*sin(iAngle)
) )
); );
} }
return position_; return position_;
...@@ -266,7 +281,7 @@ Foam::scalar Foam::swirlInjector::mass ...@@ -266,7 +281,7 @@ Foam::scalar Foam::swirlInjector::mass
{ {
scalar mInj = mass_*(fractionOfInjection(time1)-fractionOfInjection(time0)); scalar mInj = mass_*(fractionOfInjection(time1)-fractionOfInjection(time0));
// correct mass if calculation is 2D // correct mass if calculation is 2D
if (twoD) if (twoD)
{ {
mInj *= 0.5*angleOfWedge/mathematicalConstant::pi; mInj *= 0.5*angleOfWedge/mathematicalConstant::pi;
...@@ -280,7 +295,8 @@ Foam::scalar Foam::swirlInjector::mass() const ...@@ -280,7 +295,8 @@ Foam::scalar Foam::swirlInjector::mass() const
return mass_; return mass_;
} }
Foam::List<Foam::swirlInjector::pair> Foam::swirlInjector::massFlowRateProfile() const Foam::List<Foam::swirlInjector::pair>
Foam::swirlInjector::massFlowRateProfile() const
{ {
return massFlowRateProfile_; return massFlowRateProfile_;
} }
...@@ -290,7 +306,8 @@ Foam::scalar Foam::swirlInjector::massFlowRate(const scalar time) const ...@@ -290,7 +306,8 @@ Foam::scalar Foam::swirlInjector::massFlowRate(const scalar time) const
return getTableValue(massFlowRateProfile_, time); return getTableValue(massFlowRateProfile_, time);
} }
Foam::List<Foam::swirlInjector::pair> Foam::swirlInjector::injectionPressureProfile() const Foam::List<Foam::swirlInjector::pair>
Foam::swirlInjector::injectionPressureProfile() const
{ {
return injectionPressureProfile_; return injectionPressureProfile_;
} }
...@@ -300,7 +317,8 @@ Foam::scalar Foam::swirlInjector::injectionPressure(const scalar time) const ...@@ -300,7 +317,8 @@ Foam::scalar Foam::swirlInjector::injectionPressure(const scalar time) const
return getTableValue(injectionPressureProfile_, time); return getTableValue(injectionPressureProfile_, time);
} }
Foam::List<Foam::swirlInjector::pair> Foam::swirlInjector::velocityProfile() const Foam::List<Foam::swirlInjector::pair>
Foam::swirlInjector::velocityProfile() const
{ {
return velocityProfile_; return velocityProfile_;
} }
...@@ -309,7 +327,7 @@ Foam::scalar Foam::swirlInjector::velocity(const scalar time) const ...@@ -309,7 +327,7 @@ Foam::scalar Foam::swirlInjector::velocity(const scalar time) const
{ {
return getTableValue(velocityProfile_, time); return getTableValue(velocityProfile_, time);
} }
Foam::List<Foam::swirlInjector::pair> Foam::swirlInjector::CdProfile() const Foam::List<Foam::swirlInjector::pair> Foam::swirlInjector::CdProfile() const
{ {
return CdProfile_; return CdProfile_;
...@@ -350,7 +368,6 @@ Foam::scalar Foam::swirlInjector::fractionOfInjection(const scalar time) const ...@@ -350,7 +368,6 @@ Foam::scalar Foam::swirlInjector::fractionOfInjection(const scalar time) const
return integrateTable(massFlowRateProfile_, time)/mass_; return integrateTable(massFlowRateProfile_, time)/mass_;
} }
Foam::scalar Foam::swirlInjector::injectedMass Foam::scalar Foam::swirlInjector::injectedMass
( (
const scalar t const scalar t
...@@ -372,7 +389,11 @@ void Foam::swirlInjector::correctProfiles ...@@ -372,7 +389,11 @@ void Foam::swirlInjector::correctProfiles
forAll(velocityProfile_, i) forAll(velocityProfile_, i)
{ {
scalar Pinj = getTableValue(injectionPressureProfile_, massFlowRateProfile_[i][0]); scalar Pinj = getTableValue
(
injectionPressureProfile_,
massFlowRateProfile_[i][0]
);
scalar mfr = massFlowRateProfile_[i][1]/(rho*A); scalar mfr = massFlowRateProfile_[i][1]/(rho*A);
scalar v = sqrt(2.0*(Pinj - referencePressure)/rho); scalar v = sqrt(2.0*(Pinj - referencePressure)/rho);
velocityProfile_[i][1] = v; velocityProfile_[i][1] = v;
...@@ -390,4 +411,5 @@ Foam::vector Foam::swirlInjector::tan2(const label n) const ...@@ -390,4 +411,5 @@ Foam::vector Foam::swirlInjector::tan2(const label n) const
return tangentialInjectionVector2_; return tangentialInjectionVector2_;
} }
// ************************************************************************* // // ************************************************************************* //
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