The MomentumTransportModels library now builds of a standard set of phase-incompressible and phase-compressible models. This replaces most solver-specific builds of these models. This has been made possible by the addition of a new "dynamicTransportModel" interface, from which all transport classes used by the momentum transport models now derive. For the purpose of disambiguation, the old "transportModel" has also been renamed "kinematicTransportModel". This change has been made in order to create a consistent definition of phase-incompressible and phase-compressible MomentumTransportModels, which can then be looked up by functionObjects, fvModels, and similar. Some solvers still build specific momentum transport models, but these are now in addition to the standard set. The solver does not build all the models it uses. There are also corresponding centralised builds of phase dependent ThermophysicalTransportModels.
133 lines
2.1 KiB
C++
133 lines
2.1 KiB
C++
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<< "Reading incompressibleTwoPhaseInteractingMixture\n" << endl;
|
|
incompressibleTwoPhaseInteractingMixture mixture(U, phi);
|
|
|
|
volScalarField& alpha1(mixture.alpha1());
|
|
|
|
// Mixture density
|
|
volScalarField rho
|
|
(
|
|
IOobject
|
|
(
|
|
"rho",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::NO_READ,
|
|
IOobject::NO_WRITE
|
|
),
|
|
mixture.rho()
|
|
);
|
|
|
|
// Mass flux
|
|
surfaceScalarField rhoPhi
|
|
(
|
|
IOobject
|
|
(
|
|
"rhoPhi",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::NO_READ,
|
|
IOobject::NO_WRITE
|
|
),
|
|
fvc::interpolate(rho)*phi
|
|
);
|
|
|
|
|
|
// Relative Velocity
|
|
autoPtr<relativeVelocityModel> UdmModelPtr
|
|
(
|
|
relativeVelocityModel::New
|
|
(
|
|
mixture,
|
|
mixture
|
|
)
|
|
);
|
|
|
|
|
|
// Construct compressible turbulence model
|
|
autoPtr<compressible::momentumTransportModel> turbulence
|
|
(
|
|
compressible::momentumTransportModel::New(rho, U, rhoPhi, mixture)
|
|
);
|
|
|
|
|
|
#include "readGravitationalAcceleration.H"
|
|
#include "readhRef.H"
|
|
#include "gh.H"
|
|
|
|
|
|
volScalarField p
|
|
(
|
|
IOobject
|
|
(
|
|
"p",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::NO_READ,
|
|
IOobject::AUTO_WRITE
|
|
),
|
|
p_rgh + rho*gh
|
|
);
|
|
|
|
label pRefCell = 0;
|
|
scalar pRefValue = 0.0;
|
|
setRefCell
|
|
(
|
|
p,
|
|
p_rgh,
|
|
pimple.dict(),
|
|
pRefCell,
|
|
pRefValue
|
|
);
|
|
|
|
if (p_rgh.needReference())
|
|
{
|
|
p += dimensionedScalar
|
|
(
|
|
"p",
|
|
p.dimensions(),
|
|
pRefValue - getRefCellValue(p, pRefCell)
|
|
);
|
|
p_rgh = p - rho*gh;
|
|
}
|
|
|
|
mesh.setFluxRequired(p_rgh.name());
|
|
mesh.setFluxRequired(alpha1.name());
|
|
|
|
// MULES Correction
|
|
tmp<surfaceScalarField> talphaPhiCorr0;
|
|
|
|
#include "createMRF.H"
|
|
#include "createFvModels.H"
|
|
#include "createFvConstraints.H"
|