From 786d9fba2eb4e4d276e26ec1675d5d6b51c76021 Mon Sep 17 00:00:00 2001 From: ignis Date: Mon, 22 Jan 2018 02:33:29 +0900 Subject: [PATCH] EDM base from copy of combustionModel::laminar --- src/combustionModels/EDM/EDM.C | 188 ++++++++++++++++++++++++++++++++ src/combustionModels/EDM/EDM.H | 147 +++++++++++++++++++++++++ src/combustionModels/EDM/EDMs.C | 38 +++++++ src/combustionModels/Make/files | 2 + 4 files changed, 375 insertions(+) create mode 100644 src/combustionModels/EDM/EDM.C create mode 100644 src/combustionModels/EDM/EDM.H create mode 100644 src/combustionModels/EDM/EDMs.C diff --git a/src/combustionModels/EDM/EDM.C b/src/combustionModels/EDM/EDM.C new file mode 100644 index 000000000..d672d2c06 --- /dev/null +++ b/src/combustionModels/EDM/EDM.C @@ -0,0 +1,188 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "EDM.H" +#include "fvmSup.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + + +template +Foam::combustionModels::EDM::EDM +( + const word& modelType, + const fvMesh& mesh, + const word& phaseName +) +: + Type(modelType, mesh, phaseName), + finiteRate_ (this->coeffs().lookupOrDefault("finiteRate", false)), + A_ (this->coeffs().lookupOrDefault("A", 4.0)), + B_ (this->coeffs().lookupOrDefault("B", 0.5)) +{ + if (finiteRate_) + { + Info<< " using Finite-rate/Eddy Dissipation Model" << endl; + } + else + { + Info<< " using Eddy Dissipation Model" << endl; + } + Info<< " A = " << A_ << endl; + Info<< " B = " << B_ << endl; +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template +Foam::combustionModels::EDM::~EDM() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template +Foam::tmp +Foam::combustionModels::EDM::tc() const +{ + return this->chemistryPtr_->tc(); +} + + +template +void Foam::combustionModels::EDM::correct() +{ + if (this->active()) + { + if (finiteRate_) + { + this->chemistryPtr_->calculate(); + } + else + { + } + } +} + + +template +Foam::tmp +Foam::combustionModels::EDM::R(volScalarField& Y) const +{ + tmp tSu(new fvScalarMatrix(Y, dimMass/dimTime)); + + fvScalarMatrix& Su = tSu.ref(); + + if (this->active()) + { + const label specieI = + this->thermo().composition().species()[Y.member()]; + + Su += this->chemistryPtr_->RR(specieI); + } + + return tSu; +} + + +template +Foam::tmp +Foam::combustionModels::EDM::dQ() const +{ + tmp tdQ + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName(typeName + ":dQ", this->phaseName_), + this->mesh().time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh(), + dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) + ) + ); + + if (this->active()) + { + tdQ.ref() = this->chemistryPtr_->dQ(); + } + + return tdQ; +} + + +template +Foam::tmp +Foam::combustionModels::EDM::Sh() const +{ + tmp tSh + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName(typeName + ":Sh", this->phaseName_), + this->mesh().time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh(), + dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0.0) + ) + ); + + if (this->active()) + { + tSh.ref() = this->chemistryPtr_->Sh(); + } + + return tSh; +} + + +template +bool Foam::combustionModels::EDM::read() +{ + if (Type::read()) + { + this->coeffs().lookup("finiteRate") >> finiteRate_; + return true; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/src/combustionModels/EDM/EDM.H b/src/combustionModels/EDM/EDM.H new file mode 100644 index 000000000..8022bae24 --- /dev/null +++ b/src/combustionModels/EDM/EDM.H @@ -0,0 +1,147 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + Foam::combustionModels::EDM + +Description + Eddy dissipation model with finite-rate chemistry. + 28.Feb.2017 + Combustion Lab. POSTECH + Karam Han + (Version upgraded by Jinwoo Park) + +SourceFiles + EDM.C + +\*---------------------------------------------------------------------------*/ + +#ifndef EDM_H +#define EDM_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace combustionModels +{ + +/*---------------------------------------------------------------------------*\ + Class EDM Declaration +\*---------------------------------------------------------------------------*/ + +template +class EDM +: + public Type +{ + // Private data + + //- finite-rate/EDM using Arrhenius formula + bool finiteRate_; + + //- EDM Parameter A + scalar A_; + + //- EDM Parameter B + scalar B_; + +protected: + + // Protected Member Functions + + //- Return the chemical time scale + tmp tc() const; + +private: + + // Private Member Functions + + //- Disallow copy construct + EDM(const EDM&); + + //- Disallow default bitwise assignment + void operator=(const EDM&); + + +public: + + //- Runtime type information + TypeName("EDM"); + + + // Constructors + + //- Construct from components + EDM + ( + const word& modelType, + const fvMesh& mesh, + const word& phaseName + ); + + + //- Destructor + virtual ~EDM(); + + + // Member Functions + + // Evolution + + //- Correct combustion rate + virtual void correct(); + + //- Fuel consumption rate matrix. + virtual tmp R(volScalarField& Y) const; + + //- Heat release rate calculated from fuel consumption rate matrix + virtual tmp dQ() const; + + //- Return source for enthalpy equation [kg/m/s3] + virtual tmp Sh() const; + + + // IO + + //- Update properties from given dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace combustionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "EDM.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/combustionModels/EDM/EDMs.C b/src/combustionModels/EDM/EDMs.C new file mode 100644 index 000000000..f89e01382 --- /dev/null +++ b/src/combustionModels/EDM/EDMs.C @@ -0,0 +1,38 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "makeCombustionTypes.H" + +#include "psiChemistryCombustion.H" +#include "rhoChemistryCombustion.H" +#include "EDM.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makeCombustionTypes(EDM, psiChemistryCombustion, psiCombustionModel); +makeCombustionTypes(EDM, rhoChemistryCombustion, rhoCombustionModel); + + +// ************************************************************************* // diff --git a/src/combustionModels/Make/files b/src/combustionModels/Make/files index b68fbb742..97a885f31 100644 --- a/src/combustionModels/Make/files +++ b/src/combustionModels/Make/files @@ -13,6 +13,8 @@ rhoCombustionModel/rhoChemistryCombustion/rhoChemistryCombustion.C diffusion/diffusions.C infinitelyFastChemistry/infinitelyFastChemistrys.C +EDM/EDMs.C + PaSR/PaSRs.C laminar/laminars.C