diff --git a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/createFields.H b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/createFields.H index 28911cf012..53ef26b0ca 100644 --- a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/createFields.H +++ b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/createFields.H @@ -39,31 +39,18 @@ mesh.setFluxRequired(p.name()); // Add solver-specific interpolations { - dictionary suppressDict; - { - const wordHashSet& nonInt = Stencil::New(mesh).nonInterpolatedFields(); - for (auto fldName : nonInt) - { - suppressDict.add(fldName, true); - } - suppressDict.add("HbyA", true); - suppressDict.add("grad(p)", true); - suppressDict.add("surfaceIntegrate(phi)", true); - suppressDict.add("surfaceIntegrate(phiHbyA)", true); - suppressDict.add("cellMask", true); - suppressDict.add("cellDisplacement", true); - suppressDict.add("interpolatedCells", true); - } + wordHashSet& nonInt = + const_cast(Stencil::New(mesh).nonInterpolatedFields()); + + nonInt.insert("HbyA"); + nonInt.insert("grad(p)"); + nonInt.insert("surfaceIntegrate(phi)"); + nonInt.insert("surfaceIntegrate(phiHbyA)"); + nonInt.insert("cellMask"); + nonInt.insert("cellDisplacement"); + nonInt.insert("interpolatedCells"); + nonInt.insert("cellInterpolationWeight"); - const_cast - ( - mesh.schemesDict() - ).add - ( - "oversetInterpolationSuppressed", - suppressDict, - true - ); } // Mask field for zeroing out contributions on hole cells diff --git a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/overPimpleDyMFoam.C b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/overPimpleDyMFoam.C index fe3b9eaed1..4084953c8e 100644 --- a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/overPimpleDyMFoam.C +++ b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/overPimpleDyMFoam.C @@ -104,8 +104,14 @@ int main(int argc, char *argv[]) Uf *= faceMaskOld; // Update Uf and phi on new C-I faces Uf += (1-faceMaskOld)*fvc::interpolate(U); - phi = mesh.Sf() & Uf; + + // Zero phi on current H-I + surfaceScalarField faceMask + ( + localMin(mesh).interpolate(cellMask) + ); + phi *= faceMask; } diff --git a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/pEqn.H b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/pEqn.H index 4da53c7440..625a6b786e 100644 --- a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/pEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/pEqn.H @@ -1,5 +1,6 @@ // Option 1: interpolate rAU, do not block out rAU on blocked cells volScalarField rAU("rAU", 1.0/UEqn.A()); +mesh.interpolate(rAU); // Option 2: do not interpolate rAU but block out rAU //surfaceScalarField rAUf("rAUf", fvc::interpolate(blockedCells*rAU)); @@ -23,6 +24,13 @@ if (massFluxInterpolation) #include "interpolatedFaces.H" } +if (runTime.outputTime()) +{ + H.write(); + rAU.write(); + HbyA.write(); +} + if (pimple.nCorrPISO() <= 1) { tUEqn.clear(); @@ -42,14 +50,13 @@ if (ddtCorr) MRF.makeRelative(phiHbyA); // WIP -/* if (p.needReference()) { fvc::makeRelative(phiHbyA, U); adjustPhi(phiHbyA, U, p); fvc::makeAbsolute(phiHbyA, U); } -*/ + if (adjustFringe) { @@ -85,7 +92,11 @@ p.relax(); volVectorField gradP(fvc::grad(p)); // Option 2: zero out velocity on blocked out cells -U = HbyA - rAU*cellMask*gradP; +//U = HbyA - rAU*cellMask*gradP; +// Option 3: zero out velocity on blocked out cells +// This is needed for the scalar Eq (k,epsilon, etc) +// which can use U as source term +U = cellMask*(HbyA - rAU*gradP); U.correctBoundaryConditions(); fvOptions.correct(U); @@ -96,5 +107,12 @@ fvOptions.correct(U); Uf += n*(phi/mesh.magSf() - (n & Uf)); } + // Make the fluxes relative to the mesh motion fvc::makeRelative(phi, U); + +surfaceScalarField faceMask +( + localMin(mesh).interpolate(cellMask) +); +phi *= faceMask;