From 094da99cfc382603e80a88304730e984a0b4c433 Mon Sep 17 00:00:00 2001 From: Yeongdo Park Date: Sun, 4 Nov 2018 16:24:16 -0500 Subject: [PATCH] partially replacing argument passing by GasState object --- diffusivityModel/GasState/GasState.C | 49 +++++++++++++++---- diffusivityModel/GasState/GasState.H | 27 ++++++++-- diffusivityModel/GasState/GasStateI.H | 36 ++++++++++++++ .../diffusivityModel/diffusivityModel.C | 20 ++++++-- .../diffusivityModel/diffusivityModel.H | 19 ++++++- .../diffusivityModel/diffusivityModelI.H | 17 ++++--- 6 files changed, 142 insertions(+), 26 deletions(-) diff --git a/diffusivityModel/GasState/GasState.C b/diffusivityModel/GasState/GasState.C index 684c232..9a0b86e 100644 --- a/diffusivityModel/GasState/GasState.C +++ b/diffusivityModel/GasState/GasState.C @@ -37,13 +37,13 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -inline const Foam::PtrList &Foam::GasState::thermos() +inline const Foam::PtrList &Foam::GasState::thermos() const { return diffusivityModel::thermoData(); } -inline const Foam::GasState::thermoType &Foam::GasState::thermos(label i) +inline const Foam::GasState::thermoType &Foam::GasState::thermos(label i) const { return thermos()[i]; } @@ -58,9 +58,16 @@ Foam::GasState::GasState(const scalar p, const scalar T, const label n) : p_(p), T_(T), - Y_(n, 0.0) + Y_(n, 0.0), + X_(n, 0.0) { Y_[0] = 1.0; + X_[0] = 1.0; + + forAll(X_, i) + { + W_ += X_[i] * thermos(i).W(); + } } @@ -68,11 +75,21 @@ Foam::GasState::GasState(const scalar p, const scalar T, const scalarField &Y) : p_(p), T_(T), - Y_(Y) + Y_(Y), + X_(Y) { - scalar sumY = Foam::sum(Y_); + Y_ /= Foam::sum(Y_); - Y_ /= sumY; + forAll(X_, i) + { + X_[i] /= thermos(i).W(); + } + X_ /= Foam::sum(X_); + + forAll(X_, i) + { + W_ += X_[i] * thermos(i).W(); + } } @@ -80,11 +97,21 @@ Foam::GasState::GasState(const scalar p, const scalar T, tmp Y) : p_(p), T_(T), - Y_(Y) + Y_(Y), + X_(Y_) { - scalar sumY = Foam::sum(Y_); + Y_ /= Foam::sum(Y_); - Y_ /= sumY; + forAll(X_, i) + { + X_[i] /= thermos(i).W(); + } + X_ /= Foam::sum(X_); + + forAll(X_, i) + { + W_ += X_[i] * thermos(i).W(); + } } @@ -92,7 +119,9 @@ Foam::GasState::GasState(const GasState& state) : p_(state.p_), T_(state.T_), - Y_(state.Y_) + Y_(state.Y_), + X_(state.X_), + W_(state.W_) {} diff --git a/diffusivityModel/GasState/GasState.H b/diffusivityModel/GasState/GasState.H index f1b7d39..85ac785 100644 --- a/diffusivityModel/GasState/GasState.H +++ b/diffusivityModel/GasState/GasState.H @@ -37,6 +37,7 @@ SourceFiles #define GasState_H #include "thermoPhysicsTypes.H" +#include "constants.H" #include "scalarField.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -69,15 +70,21 @@ public: private: // Private data - //- Description of data_ + //- Presssure [Pa] scalar p_; - //- Description of data_ + //- Temperature [k] scalar T_; - //- Description of data_ + //- Mass fractions scalarField Y_; + //- Mole fractions + scalarField X_; + + //- Mean molecular weight [kg/kmol] + scalar W_; + // Private Member Functions @@ -88,9 +95,9 @@ private: void operator=(const GasState&); //- Static data staticData - inline const PtrList &thermos(); + inline const PtrList &thermos() const; - inline const thermoType &thermos(label i); + inline const thermoType &thermos(label i) const; public: @@ -141,6 +148,16 @@ public: inline scalarField &Y(); + inline const scalarField &X() const; + + inline scalarField &X(); + + inline scalar W() const; + + inline scalar rho() const; + + inline scalar rhoQc2() const; + // Check // Edit diff --git a/diffusivityModel/GasState/GasStateI.H b/diffusivityModel/GasState/GasStateI.H index 7b7a7f7..4cce4b3 100644 --- a/diffusivityModel/GasState/GasStateI.H +++ b/diffusivityModel/GasState/GasStateI.H @@ -78,6 +78,42 @@ inline Foam::scalarField &Foam::GasState::Y() } +inline const Foam::scalarField &Foam::GasState::X() const +{ + return X_; +} + + +inline Foam::scalarField &Foam::GasState::X() +{ + return X_; +} + + +inline Foam::scalar Foam::GasState::W() const +{ + return W_; +} + + +inline Foam::scalar Foam::GasState::rho() const +{ + return p_ * W_ / RR / T_; +} + + +inline Foam::scalar Foam::GasState::rhoQc2() const +{ + scalar sumZN = 0.0; + forAll(X_, i) + { + sumZN += X_[i] * thermos(i).z(); + } + sumZN *= (rho()/W()) * Foam::constant::physicoChemical::NA.value() * 1000; + return sumZN; +} + + // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // diff --git a/diffusivityModel/diffusivityModel/diffusivityModel.C b/diffusivityModel/diffusivityModel/diffusivityModel.C index 16d7594..b69a605 100644 --- a/diffusivityModel/diffusivityModel/diffusivityModel.C +++ b/diffusivityModel/diffusivityModel/diffusivityModel.C @@ -39,6 +39,7 @@ License #include "Coulomb.H" #include "N64.H" #include "CrossSection.H" +#include "GasState.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -47,10 +48,6 @@ const Foam::PtrList *Foam::diffusivityModel::thermoData // * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // -const Foam::PtrList &Foam::diffusivityModel::thermoData() -{ - return *thermoData_; -} // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // @@ -168,6 +165,16 @@ Foam::scalar Foam::diffusivityModel::mixAvgK(const UList& k, const UList } +void Foam::diffusivityModel::calculateMuD +( + UList &muI, + scalarSymmetricSquareMatrix &Dij, + const GasState &state + ) +{ + calculateMuD(muI, Dij, state.p(), state.T(), state.rhoQc2(), state.Y(), state.X()); +} + void Foam::diffusivityModel::calculateMuD ( UList &muI, @@ -693,6 +700,7 @@ void Foam::diffusivityModel::correct() forAll (p, celli) { + const scalar rhoi = rho[celli]; const scalar pi = p[celli]; const scalar Ti = T[celli]; @@ -705,8 +713,12 @@ void Foam::diffusivityModel::correct() localX[i] = Y[i][celli] * WbarI / Wpure[i]; } + GasState state (pi, Ti, localY); + calculateMuD ( muI, Dij, pi, Ti, rhoQc2i, localY, localX); + // calculateMuD ( muI, Dij, state); + forAll (Dii, i) { Dii[i] = Dij(i,i); diff --git a/diffusivityModel/diffusivityModel/diffusivityModel.H b/diffusivityModel/diffusivityModel/diffusivityModel.H index e841a3f..996c914 100644 --- a/diffusivityModel/diffusivityModel/diffusivityModel.H +++ b/diffusivityModel/diffusivityModel/diffusivityModel.H @@ -54,6 +54,7 @@ class Stockmayer; class Coulomb; class N64; class CrossSection; +class GasState; // Forward declaration of friend functions and operators class diffusivityModel; @@ -149,13 +150,29 @@ class diffusivityModel const scalar Ti ); + inline void calculateMuD + ( + UList &muI, + scalarSymmetricSquareMatrix &Dij, + const GasState &state + ); + + inline void calculateK + ( + UList &kI, + const UList &muI, + const UList &Dii, + const UList &Zrot, + const GasState &state + ); + public: // Static data members //- Static data staticData // static const dataType staticData; - static const PtrList &thermoData(); + inline static const PtrList &thermoData(); // Constructors diff --git a/diffusivityModel/diffusivityModel/diffusivityModelI.H b/diffusivityModel/diffusivityModel/diffusivityModelI.H index c0036f4..2bd808d 100644 --- a/diffusivityModel/diffusivityModel/diffusivityModelI.H +++ b/diffusivityModel/diffusivityModel/diffusivityModelI.H @@ -36,38 +36,43 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +inline const Foam::PtrList &Foam::diffusivityModel::thermoData() +{ + return *thermoData_; +} -Foam::volScalarField& Foam::diffusivityModel::D(const label i) + +inline Foam::volScalarField& Foam::diffusivityModel::D(const label i) { return D_[i]; } -const Foam::volScalarField& Foam::diffusivityModel::D(const label i) const +inline const Foam::volScalarField& Foam::diffusivityModel::D(const label i) const { return D_[i]; } -Foam::volScalarField& Foam::diffusivityModel::mu() +inline Foam::volScalarField& Foam::diffusivityModel::mu() { return mu_; } -const Foam::volScalarField& Foam::diffusivityModel::mu() const +inline const Foam::volScalarField& Foam::diffusivityModel::mu() const { return mu_; } -Foam::volScalarField& Foam::diffusivityModel::k() +inline Foam::volScalarField& Foam::diffusivityModel::k() { return k_; } -const Foam::volScalarField& Foam::diffusivityModel::k() const +inline const Foam::volScalarField& Foam::diffusivityModel::k() const { return k_; }