From e42ca7cb8ae4cdb545524f1dd7407b2f649b9e96 Mon Sep 17 00:00:00 2001 From: henry Date: Tue, 9 Jun 2009 11:47:48 +0100 Subject: [PATCH] Bug fix supplied by Niklas Nordin: http://www.cfd-online.com/Forums/openfoam-bugs/65201-swirlinjector.html Also a general tidy-up. --- .../injector/swirlInjector/swirlInjector.C | 104 +++++++++++++-------- 1 file changed, 63 insertions(+), 41 deletions(-) diff --git a/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C b/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C index 192319f..2d9fa9b 100644 --- a/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C +++ b/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2008 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,24 +30,22 @@ License #include "mathematicalConstants.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + namespace Foam { - -defineTypeNameAndDebug(swirlInjector, 0); - -addToRunTimeSelectionTable -( - injectorType, - swirlInjector, - dictionary -); + defineTypeNameAndDebug(swirlInjector, 0); + + addToRunTimeSelectionTable + ( + injectorType, + swirlInjector, + dictionary + ); } -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -// Construct from components Foam::swirlInjector::swirlInjector ( const Foam::Time& t, @@ -66,40 +64,56 @@ Foam::swirlInjector::swirlInjector X_(propsDict_.lookup("X")), massFlowRateProfile_(propsDict_.lookup("massFlowRateProfile")), injectionPressureProfile_(propsDict_.lookup("injectionPressureProfile")), - velocityProfile_(injectionPressureProfile_), - CdProfile_(injectionPressureProfile_), - TProfile_(injectionPressureProfile_), + velocityProfile_(massFlowRateProfile_), + CdProfile_(massFlowRateProfile_), + TProfile_(massFlowRateProfile_), averageParcelMass_(mass_/nParcels_), pressureIndependentVelocity_(false) { // convert CA to real time forAll(massFlowRateProfile_, i) { - massFlowRateProfile_[i][0] = t.userTimeToTime(massFlowRateProfile_[i][0]); + massFlowRateProfile_[i][0] = + t.userTimeToTime(massFlowRateProfile_[i][0]); } forAll(injectionPressureProfile_, i) { - injectionPressureProfile_[i][0] = t.userTimeToTime(injectionPressureProfile_[i][0]); + injectionPressureProfile_[i][0] = + t.userTimeToTime(injectionPressureProfile_[i][0]); } // check if time entries match if (mag(massFlowRateProfile_[0][0]-injectionPressureProfile_[0][0]) > SMALL) { - FatalError << "swirlInjector::swirlInjector(const time& t, const dictionary dict) " << endl - << " start-times do not match for injectionPressureProfile and massFlowRateProfile." + FatalErrorIn + ( + "swirlInjector::swirlInjector(const time& t, const dictionary dict)" + ) << "Start-times do not match for " + "injectionPressureProfile and massFlowRateProfile." << abort(FatalError); } // 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 - << " end-times do not match for injectionPressureProfile and massFlowRateProfile." + FatalErrorIn + ( + "swirlInjector::swirlInjector(const time& t, const dictionary dict)" + ) << "End-times do not match for " + "injectionPressureProfile and massFlowRateProfile." << abort(FatalError); } scalar integratedMFR = integrateTable(massFlowRateProfile_); - scalar integratedPressure = integrateTable(injectionPressureProfile_)/(teoi()-tsoi()); + scalar integratedPressure = + integrateTable(injectionPressureProfile_)/(teoi()-tsoi()); forAll(massFlowRateProfile_, i) { @@ -118,12 +132,13 @@ Foam::swirlInjector::swirlInjector forAll(injectionPressureProfile_, i) { // correct the pressureProfile to match the injection pressure - injectionPressureProfile_[i][1] *= injectionPressure_/integratedPressure; + injectionPressureProfile_[i][1] *= + injectionPressure_/integratedPressure; } // Normalize the direction vector direction_ /= mag(direction_); - + setTangentialVectors(); // check molar fractions @@ -135,17 +150,19 @@ Foam::swirlInjector::swirlInjector if (mag(Xsum - 1.0) > SMALL) { - Info << "Warning!!!\n swirlInjector::swirlInjector(const time& t, Istream& is)" - << "X does not add up to 1.0, correcting molar fractions." - << endl; + WarningIn + ( + "swirlInjector::swirlInjector(const time& t, const dictionary dict)" + ) << "X does not add up to 1.0, correcting molar fractions." << endl; + forAll(X_, i) { X_[i] /= Xsum; } } - } + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::swirlInjector::~swirlInjector() @@ -170,10 +187,8 @@ void Foam::swirlInjector::setTangentialVectors() tangentialInjectionVector1_ = tangent/magV; tangentialInjectionVector2_ = direction_ ^ tangentialInjectionVector1_; - } - Foam::label Foam::swirlInjector::nParcelsToInject ( const scalar time0, @@ -183,7 +198,7 @@ Foam::label Foam::swirlInjector::nParcelsToInject scalar mInj = mass_*(fractionOfInjection(time1)-fractionOfInjection(time0)); label nParcels = label(mInj/averageParcelMass_ + 0.49); - + return nParcels; } @@ -223,7 +238,7 @@ Foam::vector Foam::swirlInjector::position scalar iAngle = 2.0*mathematicalConstant::pi*rndGen.scalar01(); return - ( + ( position_ + iRadius * ( @@ -231,7 +246,7 @@ Foam::vector Foam::swirlInjector::position + tangentialInjectionVector2_*sin(iAngle) ) ); - + } return position_; @@ -266,7 +281,7 @@ Foam::scalar Foam::swirlInjector::mass { scalar mInj = mass_*(fractionOfInjection(time1)-fractionOfInjection(time0)); - // correct mass if calculation is 2D + // correct mass if calculation is 2D if (twoD) { mInj *= 0.5*angleOfWedge/mathematicalConstant::pi; @@ -280,7 +295,8 @@ Foam::scalar Foam::swirlInjector::mass() const return mass_; } -Foam::List Foam::swirlInjector::massFlowRateProfile() const +Foam::List +Foam::swirlInjector::massFlowRateProfile() const { return massFlowRateProfile_; } @@ -290,7 +306,8 @@ Foam::scalar Foam::swirlInjector::massFlowRate(const scalar time) const return getTableValue(massFlowRateProfile_, time); } -Foam::List Foam::swirlInjector::injectionPressureProfile() const +Foam::List +Foam::swirlInjector::injectionPressureProfile() const { return injectionPressureProfile_; } @@ -300,7 +317,8 @@ Foam::scalar Foam::swirlInjector::injectionPressure(const scalar time) const return getTableValue(injectionPressureProfile_, time); } -Foam::List Foam::swirlInjector::velocityProfile() const +Foam::List +Foam::swirlInjector::velocityProfile() const { return velocityProfile_; } @@ -309,7 +327,7 @@ Foam::scalar Foam::swirlInjector::velocity(const scalar time) const { return getTableValue(velocityProfile_, time); } - + Foam::List Foam::swirlInjector::CdProfile() const { return CdProfile_; @@ -350,7 +368,6 @@ Foam::scalar Foam::swirlInjector::fractionOfInjection(const scalar time) const return integrateTable(massFlowRateProfile_, time)/mass_; } - Foam::scalar Foam::swirlInjector::injectedMass ( const scalar t @@ -372,7 +389,11 @@ void Foam::swirlInjector::correctProfiles 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 v = sqrt(2.0*(Pinj - referencePressure)/rho); velocityProfile_[i][1] = v; @@ -390,4 +411,5 @@ Foam::vector Foam::swirlInjector::tan2(const label n) const return tangentialInjectionVector2_; } + // ************************************************************************* // -- 2.11.4.GIT