multiphaseEuler: Cavitation phaseTransfer model
This adds cavitation modelling to the multiphaseEuler solver module as a
phaseTransfer model. The underlying cavitation modelling is the same as
for the compressibleVoF module.
An example specification in constant/phaseProperties is shown below:
phaseTransfer
{
gas_liquid
{
type cavitation;
model Kunz;
liquid water;
pSat 80000;
UInf 5.33;
tInf 0.028142589;
Cc 100;
Cv 100;
}
}
Based on code contributed by Petteri Peltonen, VTT.
This commit is contained in:
@ -5,6 +5,8 @@ EXE_INC = \
|
|||||||
-I../multiphaseThermophysicalTransportModels/lnInclude \
|
-I../multiphaseThermophysicalTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
||||||
@ -25,6 +27,7 @@ LIB_LIBS = \
|
|||||||
-lmultiphaseProperties \
|
-lmultiphaseProperties \
|
||||||
-lphaseFluidThermophysicalTransportModels \
|
-lphaseFluidThermophysicalTransportModels \
|
||||||
-lphaseFluidMulticomponentThermophysicalTransportModels \
|
-lphaseFluidMulticomponentThermophysicalTransportModels \
|
||||||
|
-lcompressibleTwoPhaseMixture \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
-lmeshTools \
|
-lmeshTools \
|
||||||
-lfileFormats \
|
-lfileFormats \
|
||||||
|
|||||||
@ -2,6 +2,8 @@ EXE_INC = \
|
|||||||
-I../phaseSystems/lnInclude \
|
-I../phaseSystems/lnInclude \
|
||||||
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
||||||
@ -18,6 +20,7 @@ LIB_LIBS = \
|
|||||||
-lmultiphaseProperties \
|
-lmultiphaseProperties \
|
||||||
-lphaseFluidThermophysicalTransportModels \
|
-lphaseFluidThermophysicalTransportModels \
|
||||||
-lphaseFluidMulticomponentThermophysicalTransportModels \
|
-lphaseFluidMulticomponentThermophysicalTransportModels \
|
||||||
|
-lcompressibleTwoPhaseMixture \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
-lfvModels \
|
-lfvModels \
|
||||||
-lmeshTools
|
-lmeshTools
|
||||||
|
|||||||
@ -6,6 +6,8 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
||||||
|
|||||||
@ -85,6 +85,7 @@ wallDampingModels/sine/sineWallDamping.C
|
|||||||
|
|
||||||
phaseTransferModels/phaseTransferModel/phaseTransferModel.C
|
phaseTransferModels/phaseTransferModel/phaseTransferModel.C
|
||||||
phaseTransferModels/phaseTransferModel/phaseTransferModelNew.C
|
phaseTransferModels/phaseTransferModel/phaseTransferModelNew.C
|
||||||
|
phaseTransferModels/cavitation/cavitation.C
|
||||||
phaseTransferModels/deposition/deposition.C
|
phaseTransferModels/deposition/deposition.C
|
||||||
phaseTransferModels/reactionDriven/reactionDriven.C
|
phaseTransferModels/reactionDriven/reactionDriven.C
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,10 @@ EXE_INC = \
|
|||||||
-I../phaseSystems/lnInclude \
|
-I../phaseSystems/lnInclude \
|
||||||
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleCavitation/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
||||||
@ -12,4 +16,6 @@ EXE_INC = \
|
|||||||
LIB_LIBS = \
|
LIB_LIBS = \
|
||||||
-lphaseSystem \
|
-lphaseSystem \
|
||||||
-lfluidThermophysicalModels \
|
-lfluidThermophysicalModels \
|
||||||
-lspecie
|
-lsaturationModels \
|
||||||
|
-lspecie \
|
||||||
|
-lcompressibleCavitationModels
|
||||||
|
|||||||
@ -0,0 +1,122 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration | Website: https://openfoam.org
|
||||||
|
\\ / A nd | Copyright (C) 2021-2022 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "cavitation.H"
|
||||||
|
#include "phaseSystem.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "fvCFD.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace phaseTransferModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(cavitation, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
phaseTransferModel,
|
||||||
|
cavitation,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::phaseTransferModels::cavitation::cavitation
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
const phaseInterface& interface
|
||||||
|
)
|
||||||
|
:
|
||||||
|
phaseTransferModel(dict, interface),
|
||||||
|
interface_(interface),
|
||||||
|
cavitation_(compressible::cavitationModel::New(dict, interface_))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::phaseTransferModels::cavitation::~cavitation()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
bool Foam::phaseTransferModels::cavitation::mixture() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField>
|
||||||
|
Foam::phaseTransferModels::cavitation::dmdtf() const
|
||||||
|
{
|
||||||
|
tmp<volScalarField> tResult =
|
||||||
|
volScalarField::New
|
||||||
|
(
|
||||||
|
IOobject::groupName(typedName("dmdtf"), interface_.name()),
|
||||||
|
interface_.mesh(),
|
||||||
|
dimDensity/dimTime,
|
||||||
|
zeroGradientFvPatchField<scalar>::typeName
|
||||||
|
);
|
||||||
|
|
||||||
|
const Pair<tmp<volScalarField::Internal>> coeffs(cavitation_->mDot12P());
|
||||||
|
|
||||||
|
const volScalarField::Internal& p = interface_.phase1().thermo().p();
|
||||||
|
const volScalarField::Internal pSat1(cavitation_->pSat1());
|
||||||
|
const volScalarField::Internal pSat2(cavitation_->pSat2());
|
||||||
|
|
||||||
|
tResult.ref().ref() = coeffs[0]*(p - pSat1) - coeffs[1]*(p - pSat2);
|
||||||
|
tResult.ref().correctBoundaryConditions();
|
||||||
|
|
||||||
|
return tResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField>
|
||||||
|
Foam::phaseTransferModels::cavitation::d2mdtdpf() const
|
||||||
|
{
|
||||||
|
tmp<volScalarField> tResult =
|
||||||
|
volScalarField::New
|
||||||
|
(
|
||||||
|
IOobject::groupName(typedName("d2mdtdpf"), interface_.name()),
|
||||||
|
interface_.mesh(),
|
||||||
|
dimDensity/dimTime/dimPressure,
|
||||||
|
zeroGradientFvPatchField<scalar>::typeName
|
||||||
|
);
|
||||||
|
|
||||||
|
const Pair<tmp<volScalarField::Internal>> coeffs(cavitation_->mDot12P());
|
||||||
|
|
||||||
|
tResult.ref().ref() = coeffs[0] - coeffs[1];
|
||||||
|
tResult.ref().correctBoundaryConditions();
|
||||||
|
|
||||||
|
return tResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,134 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration | Website: https://openfoam.org
|
||||||
|
\\ / A nd | Copyright (C) 2021-2022 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::phaseTransferModels::cavitation
|
||||||
|
|
||||||
|
Description
|
||||||
|
A phase transfer model which represents cavitation.
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
\verbatim
|
||||||
|
phaseTransfer
|
||||||
|
{
|
||||||
|
vapour_dispersedIn_water
|
||||||
|
{
|
||||||
|
type cavitation;
|
||||||
|
|
||||||
|
model Kunz;
|
||||||
|
|
||||||
|
liquid water;
|
||||||
|
|
||||||
|
pSat 80000;
|
||||||
|
|
||||||
|
UInf 5.33;
|
||||||
|
tInf 0.028142589;
|
||||||
|
Cc 100;
|
||||||
|
Cv 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
cavitation.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef cavitation_H
|
||||||
|
#define cavitation_H
|
||||||
|
|
||||||
|
#include "phaseTransferModel.H"
|
||||||
|
#include "cavitationModel.H"
|
||||||
|
#include "phaseModel.H"
|
||||||
|
#include "dispersedPhaseInterface.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
class phasePair;
|
||||||
|
|
||||||
|
namespace phaseTransferModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class cavitation Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class cavitation
|
||||||
|
:
|
||||||
|
public phaseTransferModel
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private Data
|
||||||
|
|
||||||
|
//- Interface
|
||||||
|
const phaseInterface interface_;
|
||||||
|
|
||||||
|
//- Cavitation model
|
||||||
|
autoPtr<compressible::cavitationModel> cavitation_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("cavitation");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
cavitation
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
const phaseInterface& interface
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~cavitation();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Whether or not there is a mass transfer rate for the mixture
|
||||||
|
virtual bool mixture() const;
|
||||||
|
|
||||||
|
//- The mass transfer rate for the mixture
|
||||||
|
virtual tmp<volScalarField> dmdtf() const;
|
||||||
|
|
||||||
|
//- The derivative of mass transfer w.r.t. pressure
|
||||||
|
virtual tmp<volScalarField> d2mdtdpf() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace phaseTransferModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -37,6 +37,9 @@ namespace Foam
|
|||||||
const Foam::dimensionSet Foam::phaseTransferModel::dimDmdt =
|
const Foam::dimensionSet Foam::phaseTransferModel::dimDmdt =
|
||||||
Foam::dimDensity/Foam::dimTime;
|
Foam::dimDensity/Foam::dimTime;
|
||||||
|
|
||||||
|
const Foam::dimensionSet Foam::phaseTransferModel::dimD2mdtdp =
|
||||||
|
Foam::dimDensity/Foam::dimTime/Foam::dimPressure;
|
||||||
|
|
||||||
const Foam::hashedWordList Foam::phaseTransferModel::noSpecies_ =
|
const Foam::hashedWordList Foam::phaseTransferModel::noSpecies_ =
|
||||||
Foam::hashedWordList();
|
Foam::hashedWordList();
|
||||||
|
|
||||||
@ -80,6 +83,12 @@ Foam::tmp<Foam::volScalarField> Foam::phaseTransferModel::dmdtf() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::phaseTransferModel::d2mdtdpf() const
|
||||||
|
{
|
||||||
|
return tmp<volScalarField>(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const Foam::hashedWordList& Foam::phaseTransferModel::species() const
|
const Foam::hashedWordList& Foam::phaseTransferModel::species() const
|
||||||
{
|
{
|
||||||
return noSpecies_;
|
return noSpecies_;
|
||||||
@ -119,6 +128,20 @@ Foam::blendedPhaseTransferModel::dmdtf() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField>
|
||||||
|
Foam::blendedPhaseTransferModel::d2mdtdpf() const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
evaluate
|
||||||
|
(
|
||||||
|
&phaseTransferModel::d2mdtdpf,
|
||||||
|
"d2mdtdpf",
|
||||||
|
phaseTransferModel::dimD2mdtdp,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::hashedWordList Foam::blendedPhaseTransferModel::species() const
|
Foam::hashedWordList Foam::blendedPhaseTransferModel::species() const
|
||||||
{
|
{
|
||||||
return evaluate(&phaseTransferModel::species);
|
return evaluate(&phaseTransferModel::species);
|
||||||
|
|||||||
@ -82,6 +82,9 @@ public:
|
|||||||
//- Mass transfer rate dimensions
|
//- Mass transfer rate dimensions
|
||||||
static const dimensionSet dimDmdt;
|
static const dimensionSet dimDmdt;
|
||||||
|
|
||||||
|
//- Mass transfer rate derivative w.r.t pressure dimensions
|
||||||
|
static const dimensionSet dimD2mdtdp;
|
||||||
|
|
||||||
//- Does this model require correcting on fixed flux boundaries?
|
//- Does this model require correcting on fixed flux boundaries?
|
||||||
static const bool correctFixedFluxBCs = false;
|
static const bool correctFixedFluxBCs = false;
|
||||||
|
|
||||||
@ -120,6 +123,9 @@ public:
|
|||||||
//- The mass transfer rate for the mixture
|
//- The mass transfer rate for the mixture
|
||||||
virtual tmp<volScalarField> dmdtf() const;
|
virtual tmp<volScalarField> dmdtf() const;
|
||||||
|
|
||||||
|
//- The mass transfer rate derivative w.r.t pressure for the mixture
|
||||||
|
virtual tmp<volScalarField> d2mdtdpf() const;
|
||||||
|
|
||||||
//- The list of individual species that are transferred
|
//- The list of individual species that are transferred
|
||||||
virtual const hashedWordList& species() const;
|
virtual const hashedWordList& species() const;
|
||||||
|
|
||||||
@ -166,6 +172,9 @@ public:
|
|||||||
//- The mass transfer rate for the mixture
|
//- The mass transfer rate for the mixture
|
||||||
tmp<volScalarField> dmdtf() const;
|
tmp<volScalarField> dmdtf() const;
|
||||||
|
|
||||||
|
//- The mass transfer rate derivative w.r.t pressure for the mixture
|
||||||
|
tmp<volScalarField> d2mdtdpf() const;
|
||||||
|
|
||||||
//- The list of individual species that are transferred
|
//- The list of individual species that are transferred
|
||||||
hashedWordList species() const;
|
hashedWordList species() const;
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,8 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
||||||
|
|||||||
@ -6,6 +6,8 @@ EXE_INC = \
|
|||||||
-I../interfacialCompositionModels/lnInclude \
|
-I../interfacialCompositionModels/lnInclude \
|
||||||
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
||||||
|
|||||||
@ -9,6 +9,8 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
||||||
|
|||||||
@ -5,6 +5,8 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||||
-I$(LIB_SRC)/meshTools/lnInclude
|
-I$(LIB_SRC)/meshTools/lnInclude
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,9 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
||||||
|
|||||||
@ -4,11 +4,13 @@ EXE_INC = \
|
|||||||
-I../multiphaseCompressibleMomentumTransportModels/lnInclude \
|
-I../multiphaseCompressibleMomentumTransportModels/lnInclude \
|
||||||
-I../multiphaseThermophysicalTransportModels/lnInclude \
|
-I../multiphaseThermophysicalTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
-I$(LIB_SRC)/physicalProperties/lnInclude \
|
||||||
-I$(LIB_SRC)/multiphaseModels/multiphaseProperties/lnInclude \
|
|
||||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/multicomponentThermo/lnInclude \
|
||||||
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
-I$(LIB_SRC)/thermophysicalModels/saturationModels/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/twoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/twoPhaseModels/compressibleTwoPhaseMixture/lnInclude \
|
||||||
|
-I$(LIB_SRC)/multiphaseModels/multiphaseProperties/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/momentumTransportModels/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/compressible/lnInclude \
|
||||||
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
-I$(LIB_SRC)/MomentumTransportModels/phaseCompressible/lnInclude \
|
||||||
|
|||||||
@ -182,6 +182,26 @@ Foam::PhaseTransferPhaseSystem<BasePhaseSystem>::PhaseTransferPhaseSystem
|
|||||||
dimensionedScalar(dimDensity/dimTime, 0)
|
dimensionedScalar(dimDensity/dimTime, 0)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
d2mdtdpfs_.insert
|
||||||
|
(
|
||||||
|
interface,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
IOobject::groupName
|
||||||
|
(
|
||||||
|
"phaseTransfer:d2mdtdpf",
|
||||||
|
interface.name()
|
||||||
|
),
|
||||||
|
this->mesh().time().timeName(),
|
||||||
|
this->mesh()
|
||||||
|
),
|
||||||
|
this->mesh(),
|
||||||
|
dimensionedScalar(dimDensity/dimTime/dimPressure, 0)
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
dmidtfs_.insert(interface, new HashPtrTable<volScalarField>());
|
dmidtfs_.insert(interface, new HashPtrTable<volScalarField>());
|
||||||
@ -281,6 +301,24 @@ Foam::PhaseTransferPhaseSystem<BasePhaseSystem>::dmdts() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class BasePhaseSystem>
|
||||||
|
Foam::PtrList<Foam::volScalarField>
|
||||||
|
Foam::PhaseTransferPhaseSystem<BasePhaseSystem>::d2mdtdps() const
|
||||||
|
{
|
||||||
|
PtrList<volScalarField> d2mdtdps(BasePhaseSystem::d2mdtdps());
|
||||||
|
|
||||||
|
forAllConstIter(phaseSystem::dmdtfTable, d2mdtdpfs_, d2mdtdpfIter)
|
||||||
|
{
|
||||||
|
const phaseInterface interface(*this, d2mdtdpfIter.key());
|
||||||
|
|
||||||
|
addField(interface.phase1(), "d2mdtdp", *d2mdtdpfIter(), d2mdtdps);
|
||||||
|
addField(interface.phase2(), "d2mdtdp", - *d2mdtdpfIter(), d2mdtdps);
|
||||||
|
}
|
||||||
|
|
||||||
|
return d2mdtdps;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class BasePhaseSystem>
|
template<class BasePhaseSystem>
|
||||||
Foam::autoPtr<Foam::phaseSystem::momentumTransferTable>
|
Foam::autoPtr<Foam::phaseSystem::momentumTransferTable>
|
||||||
Foam::PhaseTransferPhaseSystem<BasePhaseSystem>::momentumTransfer()
|
Foam::PhaseTransferPhaseSystem<BasePhaseSystem>::momentumTransfer()
|
||||||
@ -380,6 +418,7 @@ void Foam::PhaseTransferPhaseSystem<BasePhaseSystem>::correct()
|
|||||||
if (phaseTransferModelIter()->mixture())
|
if (phaseTransferModelIter()->mixture())
|
||||||
{
|
{
|
||||||
*dmdtfs_[interface] = Zero;
|
*dmdtfs_[interface] = Zero;
|
||||||
|
*d2mdtdpfs_[interface] = Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
const hashedWordList species(phaseTransferModelIter()->species());
|
const hashedWordList species(phaseTransferModelIter()->species());
|
||||||
@ -405,6 +444,7 @@ void Foam::PhaseTransferPhaseSystem<BasePhaseSystem>::correct()
|
|||||||
if (phaseTransferModelIter()->mixture())
|
if (phaseTransferModelIter()->mixture())
|
||||||
{
|
{
|
||||||
*dmdtfs_[interface] += phaseTransferModelIter()->dmdtf();
|
*dmdtfs_[interface] += phaseTransferModelIter()->dmdtf();
|
||||||
|
*d2mdtdpfs_[interface] += phaseTransferModelIter()->d2mdtdpf();
|
||||||
}
|
}
|
||||||
|
|
||||||
const HashPtrTable<volScalarField> dmidtf
|
const HashPtrTable<volScalarField> dmidtf
|
||||||
|
|||||||
@ -76,6 +76,9 @@ private:
|
|||||||
//- Bulk mass transfer rates
|
//- Bulk mass transfer rates
|
||||||
phaseSystem::dmdtfTable dmdtfs_;
|
phaseSystem::dmdtfTable dmdtfs_;
|
||||||
|
|
||||||
|
//- Bulk mass transfer pressure linearisation coefficients
|
||||||
|
phaseSystem::dmdtfTable d2mdtdpfs_;
|
||||||
|
|
||||||
//- Specie mass transfer rates
|
//- Specie mass transfer rates
|
||||||
phaseSystem::dmidtfTable dmidtfs_;
|
phaseSystem::dmidtfTable dmidtfs_;
|
||||||
|
|
||||||
@ -125,6 +128,10 @@ public:
|
|||||||
//- Return the mass transfer rates for each phase
|
//- Return the mass transfer rates for each phase
|
||||||
virtual PtrList<volScalarField> dmdts() const;
|
virtual PtrList<volScalarField> dmdts() const;
|
||||||
|
|
||||||
|
//- Return the mass transfer pressure linearisation coefficients for
|
||||||
|
// each phase
|
||||||
|
virtual PtrList<volScalarField> d2mdtdps() const;
|
||||||
|
|
||||||
//- Return the momentum transfer matrices for the cell-based algorithm
|
//- Return the momentum transfer matrices for the cell-based algorithm
|
||||||
virtual autoPtr<phaseSystem::momentumTransferTable> momentumTransfer();
|
virtual autoPtr<phaseSystem::momentumTransferTable> momentumTransfer();
|
||||||
|
|
||||||
|
|||||||
@ -39,6 +39,7 @@ SourceFiles
|
|||||||
#define phaseInterface_H
|
#define phaseInterface_H
|
||||||
|
|
||||||
#include "phaseModel.H"
|
#include "phaseModel.H"
|
||||||
|
#include "compressibleTwoPhases.H"
|
||||||
#include "uniformDimensionedFields.H"
|
#include "uniformDimensionedFields.H"
|
||||||
#include "runTimeSelectionTables.H"
|
#include "runTimeSelectionTables.H"
|
||||||
|
|
||||||
@ -54,6 +55,8 @@ class phaseInterfaceKey;
|
|||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class phaseInterface
|
class phaseInterface
|
||||||
|
:
|
||||||
|
public compressibleTwoPhases
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -290,6 +293,24 @@ public:
|
|||||||
|
|
||||||
// Access
|
// Access
|
||||||
|
|
||||||
|
//- Return the volume fraction of phase 1
|
||||||
|
virtual inline const volScalarField& alpha1() const;
|
||||||
|
|
||||||
|
//- Return the volume fraction of phase 2
|
||||||
|
virtual inline const volScalarField& alpha2() const;
|
||||||
|
|
||||||
|
//- Return the thermo for phase 1
|
||||||
|
virtual inline const rhoThermo& thermo1() const;
|
||||||
|
|
||||||
|
//- Return the thermo for phase 2
|
||||||
|
virtual inline const rhoThermo& thermo2() const;
|
||||||
|
|
||||||
|
//- Return the density of phase 1
|
||||||
|
virtual inline const volScalarField& rho1() const;
|
||||||
|
|
||||||
|
//- Return the density of phase 2
|
||||||
|
virtual inline const volScalarField& rho2() const;
|
||||||
|
|
||||||
//- Return phase 1
|
//- Return phase 1
|
||||||
inline const phaseModel& phase1() const;
|
inline const phaseModel& phase1() const;
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,42 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
inline const Foam::volScalarField& Foam::phaseInterface::alpha1() const
|
||||||
|
{
|
||||||
|
return phase1();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::volScalarField& Foam::phaseInterface::alpha2() const
|
||||||
|
{
|
||||||
|
return phase2();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::rhoThermo& Foam::phaseInterface::thermo1() const
|
||||||
|
{
|
||||||
|
return phase1().thermo();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::rhoThermo& Foam::phaseInterface::thermo2() const
|
||||||
|
{
|
||||||
|
return phase2().thermo();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::volScalarField& Foam::phaseInterface::rho1() const
|
||||||
|
{
|
||||||
|
return phase1().rho();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::volScalarField& Foam::phaseInterface::rho2() const
|
||||||
|
{
|
||||||
|
return phase2().rho();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline const Foam::phaseModel& Foam::phaseInterface::phase1() const
|
inline const Foam::phaseModel& Foam::phaseInterface::phase1() const
|
||||||
{
|
{
|
||||||
return phase1_;
|
return phase1_;
|
||||||
@ -41,7 +77,7 @@ inline const Foam::phaseModel& Foam::phaseInterface::phase2() const
|
|||||||
|
|
||||||
inline bool Foam::phaseInterface::contains(const phaseModel& phase) const
|
inline bool Foam::phaseInterface::contains(const phaseModel& phase) const
|
||||||
{
|
{
|
||||||
return &phase1_ == &phase || & phase2_ == &phase;
|
return &phase1_ == &phase || &phase2_ == &phase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,7 @@ License
|
|||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "cavitationModel.H"
|
#include "cavitationModel.H"
|
||||||
|
#include "constantPressure.H"
|
||||||
#include "fvmSup.H"
|
#include "fvmSup.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
@ -48,16 +49,13 @@ Foam::compressible::cavitationModel::cavitationModel
|
|||||||
:
|
:
|
||||||
phases_(phases),
|
phases_(phases),
|
||||||
liquidIndex_(phases.index(dict.lookup<word>("liquid"))),
|
liquidIndex_(phases.index(dict.lookup<word>("liquid"))),
|
||||||
saturationModel_
|
saturationModel_(saturationPressureModel::New("pSat", dict))
|
||||||
(
|
|
||||||
saturationPressureModel::New(dict.subDict("saturationPressure"))
|
|
||||||
)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
bool Foam::compressible::cavitationModel::read(const dictionary& dict)
|
bool Foam::compressible::cavitationModel::read(const dictionary& dict)
|
||||||
{
|
{
|
||||||
saturationModel_.reset(saturationPressureModel::New(dict).ptr());
|
saturationModel_.reset(saturationPressureModel::New("pSat", dict).ptr());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user