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<< "Creating phaseChangeTwoPhaseMixture\n" << endl; autoPtr twoPhaseProperties = phaseChangeTwoPhaseMixture::New(U, phi); volScalarField& alpha1(twoPhaseProperties->alpha1()); volScalarField& alpha2(twoPhaseProperties->alpha2()); const dimensionedScalar& rho1 = twoPhaseProperties->rho1(); const dimensionedScalar& rho2 = twoPhaseProperties->rho2(); const dimensionedScalar& pSat = twoPhaseProperties->pSat(); // Need to store rho for ddt(rho, U) volScalarField rho ( IOobject ( "rho", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT ), alpha1*rho1 + alpha2*rho2, alpha1.boundaryField().types() ); rho.oldTime(); // Construct interface from alpha1 distribution interfaceProperties interface(alpha1, U, twoPhaseProperties()); // Construct incompressible turbulence model autoPtr turbulence ( incompressible::turbulenceModel::New(U, phi, twoPhaseProperties()) ); Info<< "Calculating field g.h\n" << endl; volScalarField gh("gh", g & mesh.C()); surfaceScalarField ghf("ghf", g & mesh.Cf()); 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, mesh.solutionDict().subDict("PIMPLE"), pRefCell, pRefValue ); if (p_rgh.needReference()) { p += dimensionedScalar ( "p", p.dimensions(), pRefValue - getRefCellValue(p, pRefCell) ); p_rgh = p - rho*gh; } fv::IOoptionList fvOptions(mesh);