From 85f48df630593adf75da9008add997eb995a92dd Mon Sep 17 00:00:00 2001 From: sergio <sergio> Date: Fri, 5 Apr 2019 09:43:28 -0700 Subject: [PATCH] ENH: adding total isentropic pressure option --- src/functionObjects/field/pressure/pressure.C | 23 +++++++++++++++++++ src/functionObjects/field/pressure/pressure.H | 22 +++++++++++++----- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/functionObjects/field/pressure/pressure.C b/src/functionObjects/field/pressure/pressure.C index 98d8233189a..a14664e096d 100644 --- a/src/functionObjects/field/pressure/pressure.C +++ b/src/functionObjects/field/pressure/pressure.C @@ -27,6 +27,7 @@ License #include "pressure.H" #include "volFields.H" +#include "fluidThermo.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -51,6 +52,10 @@ Foam::word Foam::functionObjects::pressure::resultName() const { rName = "total(" + fieldName_ + ")"; } + else if (calcIsen_) + { + rName = "totalIsen(" + fieldName_ + ")"; + } else { rName = "static(" + fieldName_ + ")"; @@ -145,6 +150,21 @@ Foam::tmp<Foam::volScalarField> Foam::functionObjects::pressure::pDyn tp + rhoScale(p, 0.5*magSqr(lookupObject<volVectorField>(UName_))); } + else if (calcIsen_) + { + const fluidThermo* thermoPtr = + p.mesh().lookupObjectPtr<fluidThermo>(basicThermo::dictName); + + const volScalarField gamma(thermoPtr->gamma()); + + const volScalarField Mb + ( + mag(lookupObject<volVectorField>(UName_)) + /sqrt(gamma*tp.ref()/thermoPtr->rho()) + ); + + return tp.ref()*(pow(1 + (gamma-1)/2*sqr(Mb), gamma/(gamma-1))); + } else { return std::move(tp); @@ -220,6 +240,7 @@ Foam::functionObjects::pressure::pressure UName_("U"), rhoName_("rho"), calcTotal_(false), + calcIsen_(false), pRef_(0), calcCoeff_(false), pInf_(0), @@ -252,6 +273,8 @@ bool Foam::functionObjects::pressure::read(const dictionary& dict) rhoInfInitialised_ = true; } + calcIsen_ = dict.lookupOrDefault<bool>("calcIsen", false); + dict.readEntry("calcTotal", calcTotal_); if (calcTotal_) { diff --git a/src/functionObjects/field/pressure/pressure.H b/src/functionObjects/field/pressure/pressure.H index dae02477516..38b112279bc 100644 --- a/src/functionObjects/field/pressure/pressure.H +++ b/src/functionObjects/field/pressure/pressure.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2012-2016 OpenFOAM Foundation @@ -41,6 +41,10 @@ Description \f[ p_0 = p_{ref} + p + 0.5 \rho |U|^2 \f] + - isentropic pressure + \f[ + p_iso = p*(1 + ((gamma-1)*M^2)/2)^(gamma/(gamma - 1)) + \f] - static pressure coefficient \f[ Cp = \frac{p - p_{\inf}}{0.5 \rho_{\inf} |U_{\inf}|^2} @@ -61,6 +65,7 @@ Description p | Pressure [Pa] p_0 | Total pressure [Pa] p_{ref} | Reference pressure level [Pa] + p_iso | Total isentropic pressure Cp | Pressure coefficient Cp_0 | Total pressure coefficient \endvartable @@ -71,11 +76,12 @@ Description The modes of operation are: \table - Mode | calcTotal | calcCoeff - Static pressure | no | no - Total pressure | yes | no - Pressure coefficient | no | yes - Total pressure coefficient | yes | yes + Mode | calcTotal | calcCoeff | calcIsen + Static pressure | no | no | no + Total pressure | yes | no | no + Pressure coefficient | no | yes | no + Total pressure coefficient | yes | yes | no + Total isentropic pressure | no | no | yes \endtable Usage @@ -100,6 +106,7 @@ Usage rho | Name of the density field | no | rho result | Name of the resulting field | no | derived from p calcTotal | Calculate total coefficient | yes | + calcIsen | Calculate total isentropic | no | no pRef | Reference pressure for total pressure | no | 0 calcCoeff | Calculate pressure coefficient | yes | pInf | Freestream pressure for coefficient calculation | no | @@ -152,6 +159,9 @@ class pressure //- Flag to calculate total pressure bool calcTotal_; + //- Flag to calculate identropic total pressure + bool calcIsen_; + //- Reference pressure level scalar pRef_; -- GitLab