From db0ba8d11c257d0375c7914729157faa6eabdb78 Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 17 Apr 2012 16:50:21 +0100 Subject: [PATCH] compressibleInterFoam: Added new equation of state adiabaticPerfectFluid --- .../adiabaticPerfectFluid.C | 124 ++++++++++++++++++ .../adiabaticPerfectFluid.H | 115 ++++++++++++++++ 2 files changed, 239 insertions(+) create mode 100644 applications/solvers/multiphase/compressibleInterFoam/phaseEquationsOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.C create mode 100644 applications/solvers/multiphase/compressibleInterFoam/phaseEquationsOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.H diff --git a/applications/solvers/multiphase/compressibleInterFoam/phaseEquationsOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.C b/applications/solvers/multiphase/compressibleInterFoam/phaseEquationsOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.C new file mode 100644 index 0000000000..82a195dca9 --- /dev/null +++ b/applications/solvers/multiphase/compressibleInterFoam/phaseEquationsOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.C @@ -0,0 +1,124 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 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 "adiabaticPerfectFluid.H" +#include "volFields.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace phaseEquationsOfState +{ + defineTypeNameAndDebug(adiabaticPerfectFluid, 0); + + addToRunTimeSelectionTable + ( + phaseEquationOfState, + adiabaticPerfectFluid, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phaseEquationsOfState::adiabaticPerfectFluid::adiabaticPerfectFluid +( + const dictionary& dict +) +: + phaseEquationOfState(dict), + p0_("p0", dimPressure, dict.lookup("p0")), + rho0_("rho0", dimDensity, dict.lookup("rho0")), + gamma_("gamma", dimless, dict.lookup("gamma")), + B_("B", dimPressure, dict.lookup("B")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phaseEquationsOfState::adiabaticPerfectFluid::~adiabaticPerfectFluid() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp +Foam::phaseEquationsOfState::adiabaticPerfectFluid::rho +( + const volScalarField& p, + const volScalarField& T +) const +{ + return tmp + ( + new volScalarField + ( + IOobject + ( + "rho", + p.time().timeName(), + p.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + rho0_*pow((p + B_)/(p0_ + B_), 1.0/gamma_) + ) + ); +} + + +Foam::tmp +Foam::phaseEquationsOfState::adiabaticPerfectFluid::psi +( + const volScalarField& p, + const volScalarField& T +) const +{ + return tmp + ( + new volScalarField + ( + IOobject + ( + "psi", + p.time().timeName(), + p.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + (rho0_/(gamma_*(p0_ + B_))) + *pow((p + B_)/(p0_ + B_), 1.0/gamma_ - 1.0) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleInterFoam/phaseEquationsOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.H b/applications/solvers/multiphase/compressibleInterFoam/phaseEquationsOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.H new file mode 100644 index 0000000000..49f5218e49 --- /dev/null +++ b/applications/solvers/multiphase/compressibleInterFoam/phaseEquationsOfState/adiabaticPerfectFluid/adiabaticPerfectFluid.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 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::phaseEquationsOfState::adiabaticPerfectFluid + +Description + AdiabaticPerfectFluid phase density model. + +SourceFiles + adiabaticPerfectFluid.C + +\*---------------------------------------------------------------------------*/ + +#ifndef adiabaticPerfectFluid_H +#define adiabaticPerfectFluid_H + +#include "phaseEquationOfState.H" +#include "dimensionedTypes.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace phaseEquationsOfState +{ + +/*---------------------------------------------------------------------------*\ + Class adiabaticPerfectFluid Declaration +\*---------------------------------------------------------------------------*/ + +class adiabaticPerfectFluid +: + public phaseEquationOfState +{ + // Private data + + //- Reference pressure + dimensionedScalar p0_; + + //- Reference density + dimensionedScalar rho0_; + + //- The isentropic exponent + dimensionedScalar gamma_; + + //- Pressure offset for a stiffened gas + dimensionedScalar B_; + + +public: + + //- Runtime type information + TypeName("adiabaticPerfectFluid"); + + + // Constructors + + //- Construct from components + adiabaticPerfectFluid + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~adiabaticPerfectFluid(); + + + // Member Functions + + tmp rho + ( + const volScalarField& p, + const volScalarField& T + ) const; + + tmp psi + ( + const volScalarField& p, + const volScalarField& T + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace phaseEquationsOfState +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //