Resolves bug-report https://bugs.openfoam.org/view.php?id=2785 ENH: compressibleInterFoam family: merged two-phase momentum stress modelling from compressibleInterPhaseTransportFoam The new momentum stress model selector class compressibleInterPhaseTransportModel is now used to select between the options: Description Transport model selection class for the compressibleInterFoam family of solvers. By default the standard mixture transport modelling approach is used in which a single momentum stress model (laminar, non-Newtonian, LES or RAS) is constructed for the mixture. However if the \c simulationType in constant/turbulenceProperties is set to \c twoPhaseTransport the alternative Euler-Euler two-phase transport modelling approach is used in which separate stress models (laminar, non-Newtonian, LES or RAS) are instantiated for each of the two phases allowing for different modeling for the phases. Mixture and two-phase momentum stress modelling is now supported in compressibleInterFoam, compressibleInterDyMFoam and compressibleInterFilmFoam. The prototype compressibleInterPhaseTransportFoam solver is no longer needed and has been removed.
109 lines
1.9 KiB
C
109 lines
1.9 KiB
C
#include "createRDeltaT.H"
|
|
|
|
Info<< "Reading field p_rgh\n" << endl;
|
|
volScalarField p_rgh
|
|
(
|
|
IOobject
|
|
(
|
|
"p_rgh",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::MUST_READ,
|
|
IOobject::AUTO_WRITE
|
|
),
|
|
mesh
|
|
);
|
|
|
|
Info<< "Reading field U\n" << endl;
|
|
volVectorField U
|
|
(
|
|
IOobject
|
|
(
|
|
"U",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::MUST_READ,
|
|
IOobject::AUTO_WRITE
|
|
),
|
|
mesh
|
|
);
|
|
|
|
#include "createPhi.H"
|
|
|
|
Info<< "Constructing twoPhaseMixtureThermo\n" << endl;
|
|
twoPhaseMixtureThermo mixture(U, phi);
|
|
|
|
volScalarField& alpha1(mixture.alpha1());
|
|
volScalarField& alpha2(mixture.alpha2());
|
|
|
|
Info<< "Reading thermophysical properties\n" << endl;
|
|
|
|
const volScalarField& rho1 = mixture.thermo1().rho();
|
|
const volScalarField& rho2 = mixture.thermo2().rho();
|
|
|
|
volScalarField rho
|
|
(
|
|
IOobject
|
|
(
|
|
"rho",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::READ_IF_PRESENT,
|
|
IOobject::AUTO_WRITE
|
|
),
|
|
alpha1*rho1 + alpha2*rho2
|
|
);
|
|
|
|
|
|
dimensionedScalar pMin
|
|
(
|
|
"pMin",
|
|
dimPressure,
|
|
mixture
|
|
);
|
|
|
|
mesh.setFluxRequired(p_rgh.name());
|
|
mesh.setFluxRequired(alpha1.name());
|
|
|
|
|
|
#include "readGravitationalAcceleration.H"
|
|
#include "readhRef.H"
|
|
#include "gh.H"
|
|
|
|
|
|
// Mass flux
|
|
// Initialisation does not matter because rhoPhi is reset after the
|
|
// alpha1 solution before it is used in the U equation.
|
|
surfaceScalarField rhoPhi
|
|
(
|
|
IOobject
|
|
(
|
|
"rhoPhi",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::NO_READ,
|
|
IOobject::NO_WRITE
|
|
),
|
|
fvc::interpolate(rho)*phi
|
|
);
|
|
|
|
volScalarField dgdt(alpha1*fvc::div(phi));
|
|
|
|
#include "createAlphaFluxes.H"
|
|
|
|
// Construct compressible turbulence model
|
|
compressibleInterPhaseTransportModel turbulence
|
|
(
|
|
rho,
|
|
U,
|
|
phi,
|
|
rhoPhi,
|
|
alphaPhi10,
|
|
mixture
|
|
);
|
|
|
|
#include "createK.H"
|
|
|
|
#include "createMRF.H"
|
|
#include "createFvOptions.H"
|