diff --git a/applications/solvers/basic/laplacianFoam/laplacianFoam.C b/applications/solvers/basic/laplacianFoam/laplacianFoam.C index 830a266a40..5ed2849be9 100644 --- a/applications/solvers/basic/laplacianFoam/laplacianFoam.C +++ b/applications/solvers/basic/laplacianFoam/laplacianFoam.C @@ -52,7 +52,7 @@ int main(int argc, char *argv[]) { Info<< "Time = " << runTime.timeName() << nl << endl; - for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++) + while (simple.correctNonOrthogonal()) { solve ( diff --git a/applications/solvers/basic/scalarTransportFoam/scalarTransportFoam.C b/applications/solvers/basic/scalarTransportFoam/scalarTransportFoam.C index 7dbbc97dac..8eade6a545 100644 --- a/applications/solvers/basic/scalarTransportFoam/scalarTransportFoam.C +++ b/applications/solvers/basic/scalarTransportFoam/scalarTransportFoam.C @@ -53,7 +53,7 @@ int main(int argc, char *argv[]) { Info<< "Time = " << runTime.timeName() << nl << endl; - for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++) + while (simple.correctNonOrthogonal()) { solve ( diff --git a/applications/solvers/combustion/PDRFoam/PDRFoam.C b/applications/solvers/combustion/PDRFoam/PDRFoam.C index 40a48cfbdb..bf70e83c5d 100644 --- a/applications/solvers/combustion/PDRFoam/PDRFoam.C +++ b/applications/solvers/combustion/PDRFoam/PDRFoam.C @@ -114,12 +114,12 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { #include "UEqn.H" - // --- PISO loop - for (int corr=1; corr<=pimple.nCorr(); corr++) + // --- Pressure corrector loop + while (pimple.correct()) { #include "bEqn.H" #include "ftEqn.H" diff --git a/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C b/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C index 557c8aa1fb..0c5082df04 100644 --- a/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C +++ b/applications/solvers/combustion/PDRFoam/PDRFoamAutoRefine.C @@ -167,13 +167,13 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { #include "UEqn.H" - // --- PISO loop - for (int corr=1; corr<=pimple.nCorr(); corr++) + // --- Pressure corrector loop + while (pimple.correct()) { #include "bEqn.H" #include "ftEqn.H" diff --git a/applications/solvers/combustion/PDRFoam/pEqn.H b/applications/solvers/combustion/PDRFoam/pEqn.H index 3c6a6341f9..e2a2a471e2 100644 --- a/applications/solvers/combustion/PDRFoam/pEqn.H +++ b/applications/solvers/combustion/PDRFoam/pEqn.H @@ -15,7 +15,7 @@ if (pimple.transonic()) ) ); - for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn ( @@ -24,12 +24,9 @@ if (pimple.transonic()) - fvm::laplacian(rho*invA, p) ); - pEqn.solve - ( - mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth))) - ); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); - if (nonOrth == pimple.nNonOrthCorr()) + if (pimple.finalNonOrthogonalIter()) { phi == pEqn.flux(); } @@ -44,7 +41,7 @@ else + fvc::ddtPhiCorr(rAU, rho, U, phi) ); - for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn ( @@ -53,12 +50,9 @@ else - fvm::laplacian(rho*invA, p) ); - pEqn.solve - ( - mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth))) - ); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); - if (nonOrth == pimple.nNonOrthCorr()) + if (pimple.finalNonOrthogonalIter()) { phi += pEqn.flux(); } diff --git a/applications/solvers/combustion/XiFoam/XiFoam.C b/applications/solvers/combustion/XiFoam/XiFoam.C index 71b03064fa..069e5b8caa 100644 --- a/applications/solvers/combustion/XiFoam/XiFoam.C +++ b/applications/solvers/combustion/XiFoam/XiFoam.C @@ -91,7 +91,7 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { #include "UEqn.H" @@ -105,8 +105,8 @@ int main(int argc, char *argv[]) hu == h; } - // --- PISO loop - for (int corr=0; corrcorrect(); #include "UEqn.H" #include "hEqn.H" - // --- PISO loop - for (int corr=0; corr tpEqn; @@ -37,7 +37,7 @@ if (simple.transonic()) tpEqn().solve(); - if (nonOrth == simple.nNonOrthCorr()) + if (simple.finalNonOrthogonalIter()) { phi == tpEqn().flux(); } @@ -50,7 +50,7 @@ else closedVolume = adjustPhi(phi, U, p); - for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++) + while (simple.correctNonOrthogonal()) { tmp tpEqn; @@ -67,7 +67,7 @@ else tpEqn().solve(); - if (nonOrth == simple.nNonOrthCorr()) + if (simple.finalNonOrthogonalIter()) { phi -= tpEqn().flux(); } diff --git a/applications/solvers/compressible/rhoSimplecFoam/pEqn.H b/applications/solvers/compressible/rhoSimplecFoam/pEqn.H index 9eb783feca..ccc7a1b21e 100644 --- a/applications/solvers/compressible/rhoSimplecFoam/pEqn.H +++ b/applications/solvers/compressible/rhoSimplecFoam/pEqn.H @@ -14,7 +14,7 @@ bool closedVolume = false; if (simple.transonic()) { - for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++) + while (simple.correctNonOrthogonal()) { surfaceScalarField phid ( @@ -44,17 +44,9 @@ if (simple.transonic()) pEqn.setReference(pRefCell, pRefValue); - // Retain the residual from the first iteration - if (nonOrth == 0) - { - pEqn.solve(); - } - else - { - pEqn.solve(); - } + pEqn.solve(); - if (nonOrth == simple.nNonOrthCorr()) + if (simple.finalNonOrthogonalIter()) { phi == phic + pEqn.flux(); } @@ -62,7 +54,7 @@ if (simple.transonic()) } else { - for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++) + while (simple.correctNonOrthogonal()) { phi = fvc::interpolate(rho*U) & mesh.Sf(); closedVolume = adjustPhi(phi, U, p); @@ -77,18 +69,9 @@ else pEqn.setReference(pRefCell, pRefValue); - // Retain the residual from the first iteration - if (nonOrth == 0) - { - pEqn.solve(); - } - else - { - pEqn.solve(); - } + pEqn.solve(); - - if (nonOrth == simple.nNonOrthCorr()) + if (simple.finalNonOrthogonalIter()) { phi += pEqn.flux(); } diff --git a/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C b/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C index c0311807d4..37bea3c176 100644 --- a/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C +++ b/applications/solvers/electromagnetics/magneticFoam/magneticFoam.C @@ -75,7 +75,7 @@ int main(int argc, char *argv[]) runTime++; - for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++) + while (simple.correctNonOrthogonal()) { solve(fvm::laplacian(murf, psi) + fvc::div(murf*Mrf)); } diff --git a/applications/solvers/heatTransfer/buoyantBaffleSimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantBaffleSimpleFoam/pEqn.H index 17bf590f29..d2793d7192 100644 --- a/applications/solvers/heatTransfer/buoyantBaffleSimpleFoam/pEqn.H +++ b/applications/solvers/heatTransfer/buoyantBaffleSimpleFoam/pEqn.H @@ -14,7 +14,7 @@ surfaceScalarField buoyancyPhi(rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf()); phi -= buoyancyPhi; - for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++) + while (simple.correctNonOrthogonal()) { fvScalarMatrix p_rghEqn ( @@ -24,7 +24,7 @@ p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell)); p_rghEqn.solve(); - if (nonOrth == simple.nNonOrthCorr()) + if (simple.finalNonOrthogonalIter()) { // Calculate the conservative fluxes phi -= p_rghEqn.flux(); diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C index c00c1fe8d8..461578e864 100644 --- a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C +++ b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/buoyantBoussinesqPimpleFoam.C @@ -79,13 +79,13 @@ int main(int argc, char *argv[]) #include "setDeltaT.H" // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { #include "UEqn.H" #include "TEqn.H" - // --- PISO loop - for (int corr=0; corr tpEqn; @@ -25,17 +25,10 @@ for (int nonOrth=0; nonOrth<=simple.nNonOrthCorr(); nonOrth++) } tpEqn().setReference(pRefCell, pRefValue); - // retain the residual from the first iteration - if (nonOrth == 0) - { - tpEqn().solve(); - } - else - { - tpEqn().solve(); - } - if (nonOrth == simple.nNonOrthCorr()) + tpEqn().solve(); + + if (simple.finalNonOrthogonalIter()) { phi -= tpEqn().flux(); } diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C b/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C index dc642e7c72..23c9e03229 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/LTSReactingParcelFoam.C @@ -87,7 +87,7 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { turbulence->correct(); @@ -95,8 +95,8 @@ int main(int argc, char *argv[]) #include "YEqn.H" #include "hsEqn.H" - // --- PISO loop - for (int corr=0; corrcorrect(); - // --- Outer-corrector loop - for (pimple.start(); pimple.loop(); pimple++) + // --- Pressure-velocity PIMPLE corrector loop + while (pimple.loop()) { #include "alphaEqnsSubCycle.H" @@ -125,8 +125,8 @@ int main(int argc, char *argv[]) #include "UEqn.H" - // --- PISO loop - for (int corr=0; corr 1 && pimple.nOuterCorr() != 1) + if (nAlphaSubCycles > 1 && pimple.nCorrPIMPLE() != 1) { FatalErrorIn(args.executable()) << "Sub-cycling alpha is only allowed for PISO, " diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C index 02d6764ae2..4ad1b3d01d 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFoam.C @@ -74,8 +74,8 @@ int main(int argc, char *argv[]) Info<< "Time = " << runTime.timeName() << nl << endl; - // --- Outer-corrector loop - for (pimple.start(); pimple.loop(); pimple++) + // --- Pressure-velocity PIMPLE corrector loop + while (pimple.loop()) { #include "alphaEqnsSubCycle.H" @@ -83,8 +83,8 @@ int main(int argc, char *argv[]) #include "UEqn.H" - // --- PISO loop - for (int corr=0; corr 1 && pimple.nOuterCorr() != 1) + if (nAlphaSubCycles > 1 && pimple.nCorrPIMPLE() != 1) { FatalErrorIn(args.executable()) - << "Sub-cycling alpha is only allowed for PISO, " + << "Sub-cycling alpha is only allowed for PISO operation, " "i.e. when the number of outer-correctors = 1" << exit(FatalError); } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/compressibleTwoPhaseEulerFoam.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/compressibleTwoPhaseEulerFoam.C index c764472cb7..d29da482ba 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/compressibleTwoPhaseEulerFoam.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/compressibleTwoPhaseEulerFoam.C @@ -77,7 +77,7 @@ int main(int argc, char *argv[]) Info<< "Time = " << runTime.timeName() << nl << endl; // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { #include "alphaEqn.H" #include "kEpsilon.H" @@ -85,8 +85,8 @@ int main(int argc, char *argv[]) #include "TEqns.H" #include "UEqns.H" - // --- PISO loop - for (int corr=0; corrcorrect(); // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { #include "UEqn.H" - // --- PISO loop - for (int corr=0; corrcorrect(); // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { #include "UEqn.H" - // --- PISO loop - for (int corr=0; corr, fluid.phases(), iter) + { + sumPhi = max + ( + sumPhi, + fvc::surfaceSum(mag(iter().phi()))().internalField() + ); + } + CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue(); meanCoNum = diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/CourantNos.H b/applications/solvers/multiphase/multiphaseEulerFoam/CourantNos.H deleted file mode 100644 index 9bd18a9fcc..0000000000 --- a/applications/solvers/multiphase/multiphaseEulerFoam/CourantNos.H +++ /dev/null @@ -1,12 +0,0 @@ -# include "CourantNo.H" - -// { -// scalar UrCoNum = 0.5*gMax -// ( -// fvc::surfaceSum(mag(phi1 - phi2))().internalField()/mesh.V().field() -// )*runTime.deltaTValue(); - -// Info<< "Max Ur Courant Number = " << UrCoNum << endl; - -// CoNum = max(CoNum, UrCoNum); -// } diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/correctPhi.H b/applications/solvers/multiphase/multiphaseEulerFoam/correctPhi.H index 92c8676225..78f93384b0 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/correctPhi.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/correctPhi.H @@ -34,7 +34,7 @@ adjustPhi(phi, U, pcorr); - for (int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pcorrEqn ( @@ -44,7 +44,7 @@ pcorrEqn.setReference(pRefCell, pRefValue); pcorrEqn.solve(); - if (nonOrth == pimple.nNonOrthCorr()) + if (pimple.finalNonOrthogonalIter()) { phi -= pcorrEqn.flux(); } diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/createFields.H b/applications/solvers/multiphase/multiphaseEulerFoam/createFields.H index 6b859f068f..484ceae4ac 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/createFields.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/createFields.H @@ -42,7 +42,7 @@ dimensionedScalar("phi", dimArea*dimVelocity, 0) ); - multiphaseSystem fluid(mesh, phi); + multiphaseSystem fluid(U, phi); forAllIter(PtrDictionary, fluid.phases(), iter) { @@ -77,9 +77,8 @@ scalar pRefValue = 0.0; setRefCell(p, mesh.solutionDict().subDict("PIMPLE"), pRefCell, pRefValue); - singlePhaseTransportModel laminarTransport(U, phi); autoPtr sgsModel ( - incompressible::LESModel::New(U, phi, laminarTransport) + incompressible::LESModel::New(U, phi, fluid) ); diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/Make/files index 43869fde40..ff81afc634 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/Make/files +++ b/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/Make/files @@ -8,6 +8,7 @@ dragModels/Gibilaro/Gibilaro.C dragModels/WenYu/WenYu.C dragModels/SyamlalOBrien/SyamlalOBrien.C dragModels/blended/blended.C +dragModels/interface/interface.C heatTransferModels/heatTransferModel/heatTransferModel.C heatTransferModels/heatTransferModel/newHeatTransferModel.C diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/dragModels/interface/interface.C b/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/dragModels/interface/interface.C new file mode 100644 index 0000000000..0ef07da220 --- /dev/null +++ b/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/dragModels/interface/interface.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011 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 . + +\*---------------------------------------------------------------------------*/ + +#include "interface.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(interface, 0); + + addToRunTimeSelectionTable + ( + dragModel, + interface, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::interface::interface +( + const dictionary& interfaceDict, + const phaseModel& phase1, + const phaseModel& phase2 +) +: + dragModel(interfaceDict, phase1, phase2) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::interface::~interface() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp Foam::dragModels::interface::K +( + const volScalarField& Ur +) const +{ + return tmp + ( + new volScalarField + ( + IOobject + ( + "K", + Ur.mesh().time().timeName(), + Ur.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + Ur.mesh(), + dimensionedScalar("K", dimDensity/dimTime, 0) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/dragModels/interface/interface.H b/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/dragModels/interface/interface.H new file mode 100644 index 0000000000..bc7c8223cf --- /dev/null +++ b/applications/solvers/multiphase/multiphaseEulerFoam/interfacialModels/dragModels/interface/interface.H @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011 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 . + +Class + Foam::dragModels::interface + +Description + Drag between phase separated by a VoF resolved interface. + +SourceFiles + interface.C + +\*---------------------------------------------------------------------------*/ + +#ifndef interface_H +#define interface_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class interface Declaration +\*---------------------------------------------------------------------------*/ + +class interface +: + public dragModel +{ + +public: + + //- Runtime type information + TypeName("interface"); + + + // Constructors + + //- Construct from components + interface + ( + const dictionary& interfaceDict, + const phaseModel& phase1, + const phaseModel& phase2 + ); + + + //- Destructor + virtual ~interface(); + + + // Member Functions + + tmp K(const volScalarField& Ur) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C index b4cc579835..4ca01f1a3a 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseEulerFoam.C @@ -58,7 +58,7 @@ int main(int argc, char *argv[]) #include "initContinuityErrs.H" #include "readTimeControls.H" #include "correctPhi.H" - #include "CourantNos.H" + #include "CourantNo.H" #include "setInitialDeltaT.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -68,25 +68,26 @@ int main(int argc, char *argv[]) while (runTime.run()) { #include "readTimeControls.H" - #include "CourantNos.H" + #include "CourantNo.H" #include "setDeltaT.H" runTime++; Info<< "Time = " << runTime.timeName() << nl << endl; // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { sgsModel->correct(); fluid.solve(); rho = fluid.rho(); + #include "zonePhaseVolumes.H" //#include "interfacialCoeffs.H" //#include "TEqns.H" #include "UEqns.H" - // --- PISO loop - for (int corr=0; corr. + +\*---------------------------------------------------------------------------*/ + +#include "multiphaseFixedFluxPressureFvPatchScalarField.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "surfaceFields.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::multiphaseFixedFluxPressureFvPatchScalarField:: +multiphaseFixedFluxPressureFvPatchScalarField +( + const fvPatch& p, + const DimensionedField& iF +) +: + fixedGradientFvPatchScalarField(p, iF), + phi0Name_("phi0"), + phiName_("phi"), + rhoName_("rho") +{} + + +Foam::multiphaseFixedFluxPressureFvPatchScalarField:: +multiphaseFixedFluxPressureFvPatchScalarField +( + const multiphaseFixedFluxPressureFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + fixedGradientFvPatchScalarField(ptf, p, iF, mapper), + phi0Name_(ptf.phi0Name_), + phiName_(ptf.phiName_), + rhoName_(ptf.rhoName_) +{} + + +Foam::multiphaseFixedFluxPressureFvPatchScalarField:: +multiphaseFixedFluxPressureFvPatchScalarField +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + fixedGradientFvPatchScalarField(p, iF), + phi0Name_(dict.lookupOrDefault("phi0", "phi0")), + phiName_(dict.lookupOrDefault("phi", "phi")), + rhoName_(dict.lookupOrDefault("rho", "rho")) +{ + if (dict.found("gradient")) + { + gradient() = scalarField("gradient", dict, p.size()); + fixedGradientFvPatchScalarField::updateCoeffs(); + fixedGradientFvPatchScalarField::evaluate(); + } + else + { + fvPatchField::operator=(patchInternalField()); + gradient() = 0.0; + } +} + + +Foam::multiphaseFixedFluxPressureFvPatchScalarField:: +multiphaseFixedFluxPressureFvPatchScalarField +( + const multiphaseFixedFluxPressureFvPatchScalarField& wbppsf +) +: + fixedGradientFvPatchScalarField(wbppsf), + phi0Name_(wbppsf.phi0Name_), + phiName_(wbppsf.phiName_), + rhoName_(wbppsf.rhoName_) +{} + + +Foam::multiphaseFixedFluxPressureFvPatchScalarField:: +multiphaseFixedFluxPressureFvPatchScalarField +( + const multiphaseFixedFluxPressureFvPatchScalarField& wbppsf, + const DimensionedField& iF +) +: + fixedGradientFvPatchScalarField(wbppsf, iF), + phi0Name_(wbppsf.phi0Name_), + phiName_(wbppsf.phiName_), + rhoName_(wbppsf.rhoName_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::multiphaseFixedFluxPressureFvPatchScalarField::updateCoeffs() +{ + if (updated()) + { + return; + } + + const surfaceScalarField& phi0 = + db().lookupObject(phi0Name_); + + const surfaceScalarField& phi = + db().lookupObject(phiName_); + + fvsPatchField phi0p = + patch().patchField(phi0); + + fvsPatchField phip = + patch().patchField(phi); + + if (phi.dimensions() == dimDensity*dimVelocity*dimArea) + { + const fvPatchField& rhop = + patch().lookupPatchField(rhoName_); + + phip /= rhop; + } + + const fvsPatchField& Dpp = + patch().lookupPatchField("Dp"); + + gradient() = (phi0p - phip)/patch().magSf()/Dpp; + + fixedGradientFvPatchScalarField::updateCoeffs(); +} + + +void Foam::multiphaseFixedFluxPressureFvPatchScalarField::write +( + Ostream& os +) const +{ + fvPatchScalarField::write(os); + writeEntryIfDifferent(os, "phi0", "phi0", phi0Name_); + writeEntryIfDifferent(os, "phi", "phi", phiName_); + writeEntryIfDifferent(os, "rho", "rho", rhoName_); + gradient().writeEntry("gradient", os); + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + multiphaseFixedFluxPressureFvPatchScalarField + ); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.H b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.H new file mode 100644 index 0000000000..f1699309b1 --- /dev/null +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.H @@ -0,0 +1,154 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011 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 . + +Class + Foam::multiphaseFixedFluxPressureFvPatchScalarField + +Description + Foam::multiphaseFixedFluxPressureFvPatchScalarField + +SourceFiles + multiphaseFixedFluxPressureFvPatchScalarField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef multiphaseFixedFluxPressureFvPatchScalarFields_H +#define multiphaseFixedFluxPressureFvPatchScalarFields_H + +#include "fvPatchFields.H" +#include "fixedGradientFvPatchFields.H" +#include "Switch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class multiphaseFixedFluxPressureFvPatch Declaration +\*---------------------------------------------------------------------------*/ + +class multiphaseFixedFluxPressureFvPatchScalarField +: + public fixedGradientFvPatchScalarField +{ + // Private data + + //- Name of the predicted flux transporting the field + word phi0Name_; + + //- Name of the flux transporting the field + word phiName_; + + //- Name of the density field used to normalise the mass flux + // if neccessary + word rhoName_; + + +public: + + //- Runtime type information + TypeName("multiphaseFixedFluxPressure"); + + + // Constructors + + //- Construct from patch and internal field + multiphaseFixedFluxPressureFvPatchScalarField + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + multiphaseFixedFluxPressureFvPatchScalarField + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given + // multiphaseFixedFluxPressureFvPatchScalarField onto a new patch + multiphaseFixedFluxPressureFvPatchScalarField + ( + const multiphaseFixedFluxPressureFvPatchScalarField&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + multiphaseFixedFluxPressureFvPatchScalarField + ( + const multiphaseFixedFluxPressureFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new multiphaseFixedFluxPressureFvPatchScalarField(*this) + ); + } + + //- Construct as copy setting internal field reference + multiphaseFixedFluxPressureFvPatchScalarField + ( + const multiphaseFixedFluxPressureFvPatchScalarField&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new multiphaseFixedFluxPressureFvPatchScalarField(*this, iF) + ); + } + + + // Member functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C index 3382504153..2403597d9c 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.C @@ -441,24 +441,15 @@ Foam::tmp Foam::multiphaseSystem::K Foam::multiphaseSystem::multiphaseSystem ( - const fvMesh& mesh, + const volVectorField& U, const surfaceScalarField& phi ) : - IOdictionary - ( - IOobject - ( - "transportProperties", - mesh.time().constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ), - phases_(lookup("phases"), phaseModel::iNew(mesh)), + transportModel(U, phi), - mesh_(mesh), + phases_(lookup("phases"), phaseModel::iNew(U.mesh())), + + mesh_(U.mesh()), phi_(phi), alphas_ @@ -514,7 +505,6 @@ Foam::multiphaseSystem::multiphaseSystem // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - Foam::tmp Foam::multiphaseSystem::rho() const { PtrDictionary::const_iterator iter = phases_.begin(); @@ -530,6 +520,21 @@ Foam::tmp Foam::multiphaseSystem::rho() const } +Foam::tmp Foam::multiphaseSystem::nu() const +{ + PtrDictionary::const_iterator iter = phases_.begin(); + + tmp tnu = iter()*iter().nu(); + + for (++iter; iter != phases_.end(); ++iter) + { + tnu() += iter()*iter().nu(); + } + + return tnu; +} + + Foam::tmp Foam::multiphaseSystem::Cvm ( const phaseModel& phase @@ -770,19 +775,81 @@ void Foam::multiphaseSystem::solve() label nAlphaSubCycles(readLabel(pimpleDict.lookup("nAlphaSubCycles"))); - volScalarField& alpha = phases_.first(); - if (nAlphaSubCycles > 1) { dimensionedScalar totalDeltaT = runTime.deltaT(); + PtrList alpha0s(phases_.size()); + PtrList phiSums(phases_.size()); + + int phasei = 0; + forAllIter(PtrDictionary, phases_, iter) + { + phaseModel& phase = iter(); + volScalarField& alpha = phase; + + alpha0s.set + ( + phasei, + new volScalarField(alpha.oldTime()) + ); + + phiSums.set + ( + phasei, + new surfaceScalarField + ( + IOobject + ( + "phiSum" + alpha.name(), + runTime.timeName(), + mesh_ + ), + mesh_, + dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0) + ) + ); + + phasei++; + } + for ( - subCycle alphaSubCycle(alpha, nAlphaSubCycles); + subCycleTime alphaSubCycle + ( + const_cast(runTime), + nAlphaSubCycles + ); !(++alphaSubCycle).end(); ) { solveAlphas(); + + int phasei = 0; + forAllIter(PtrDictionary, phases_, iter) + { + phiSums[phasei] += (runTime.deltaT()/totalDeltaT)*iter().phi(); + phasei++; + } + } + + phasei = 0; + forAllIter(PtrDictionary, phases_, iter) + { + phaseModel& phase = iter(); + volScalarField& alpha = phase; + + phase.phi() = phiSums[phasei]; + + // Correct the time index of the field + // to correspond to the global time + alpha.timeIndex() = runTime.timeIndex(); + + // Reset the old-time field value + alpha.oldTime() = alpha0s[phasei]; + alpha.oldTime().timeIndex() = runTime.timeIndex(); + + phasei++; } } else diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H index 408fdcdafa..4c3e52e0ea 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/multiphaseSystem/multiphaseSystem.H @@ -61,7 +61,7 @@ namespace Foam class multiphaseSystem : - public IOdictionary + public transportModel { public: @@ -247,7 +247,7 @@ public: //- Construct from components multiphaseSystem ( - const fvMesh& mesh, + const volVectorField& U, const surfaceScalarField& phi ); @@ -274,6 +274,9 @@ public: //- Return the mixture density tmp rho() const; + //- Return the mixture laminar viscosity + tmp nu() const; + //- Return the virtual-mass coefficient for the given phase tmp Cvm(const phaseModel& phase) const; @@ -305,6 +308,10 @@ public: //- Solve for the mixture phase-fractions void solve(); + //- Dummy correct + void correct() + {} + //- Read base transportProperties dictionary bool read(); }; diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H b/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H index 6cbfbf2d16..98fa7b139e 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H @@ -41,6 +41,20 @@ phasei++; } + surfaceScalarField phi0 + ( + IOobject + ( + "phi0", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + mesh, + dimensionedScalar("phi0", dimArea*dimVelocity, 0) + ); + phasei = 0; forAllIter(PtrDictionary, fluid.phases(), iter) { @@ -60,7 +74,8 @@ + fvc::ddtPhiCorr(rAUs[phasei], alpha, phase.U(), phase.phi()) ); mrfZones.relativeFlux(phase.phi()); - phase.phi() += rAlphaAUfs[phasei]*(g & mesh.Sf()); + surfaceScalarField pphi0("pphi0", phase.phi()); + pphi0 += rAlphaAUfs[phasei]*(g & mesh.Sf()); multiphaseSystem::dragModelTable::const_iterator dmIter = fluid.dragModels().begin(); @@ -99,13 +114,16 @@ phasej++; } - phase.phi() += + pphi0 += fvc::interpolate ((1.0/phase.rho())*rAUs[phasei]*(*dcIter())) *phi0s[phasej]; } } + phi0 += alphafs[phasei]*pphi0; + phase.phi() = pphi0; + phasei++; } @@ -132,13 +150,13 @@ phasei++; } Dp = mag(Dp); - adjustPhi(phi, U, p); + adjustPhi(phi0, U, p); - for(int nonOrth=0; nonOrth<=pimple.nNonOrthCorr(); nonOrth++) + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqnIncomp ( - fvc::div(phi) + fvc::div(phi0) - fvm::laplacian(Dp, p) ); @@ -149,10 +167,10 @@ // + (alpha2/rho2)*pEqnComp2() // ) + pEqnIncomp, - mesh.solver(p.select(pimple.finalInnerIter(corr, nonOrth))) + mesh.solver(p.select(pimple.finalInnerIter())) ); - if (nonOrth == pimple.nNonOrthCorr()) + if (pimple.finalNonOrthogonalIter()) { surfaceScalarField mSfGradp = pEqnIncomp.flux()/Dp; @@ -169,6 +187,7 @@ } // dgdt = + // ( // pos(alpha2)*(pEqnComp2 & p)/rho2 // - pos(alpha1)*(pEqnComp1 & p)/rho1 diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/zonePhaseVolumes.H b/applications/solvers/multiphase/multiphaseEulerFoam/zonePhaseVolumes.H new file mode 100644 index 0000000000..5f8f3fb19a --- /dev/null +++ b/applications/solvers/multiphase/multiphaseEulerFoam/zonePhaseVolumes.H @@ -0,0 +1,26 @@ +{ + const scalarField& V = mesh.V(); + + forAll(mesh.cellZones(), czi) + { + const labelList& cellLabels = mesh.cellZones()[czi]; + + forAllConstIter(PtrDictionary, fluid.phases(), iter) + { + const volScalarField& alpha = iter(); + scalar phaseVolume = 0; + + forAll(cellLabels, cli) + { + label celli = cellLabels[cli]; + phaseVolume += alpha[celli]*V[celli]; + } + + reduce(phaseVolume, sumOp()); + + Info<< alpha.name() + << " phase volume in zone " << mesh.cellZones()[czi].name() + << " = " << phaseVolume*1e6 << " ml " << endl; + } + } +} diff --git a/applications/solvers/multiphase/multiphaseInterFoam/MRFMultiphaseInterFoam/MRFMultiphaseInterFoam.C b/applications/solvers/multiphase/multiphaseInterFoam/MRFMultiphaseInterFoam/MRFMultiphaseInterFoam.C index 6769a47474..0179b98e68 100644 --- a/applications/solvers/multiphase/multiphaseInterFoam/MRFMultiphaseInterFoam/MRFMultiphaseInterFoam.C +++ b/applications/solvers/multiphase/multiphaseInterFoam/MRFMultiphaseInterFoam/MRFMultiphaseInterFoam.C @@ -76,12 +76,12 @@ int main(int argc, char *argv[]) #include "zonePhaseVolumes.H" // --- Pressure-velocity PIMPLE corrector loop - for (pimple.start(); pimple.loop(); pimple++) + while (pimple.loop()) { #include "UEqn.H" - // --- PISO loop - for (int corr=0; corr("thermalProperties"); - dimensionedScalar rho(mechanicalProperties.lookup("rho")); - dimensionedScalar rhoE(mechanicalProperties.lookup("E")); - dimensionedScalar nu(mechanicalProperties.lookup("nu")); - dimensionedScalar E = rhoE/rho; - dimensionedScalar mu = E/(2.0*(1.0 + nu)); - dimensionedScalar lambda = nu*E/((1.0 + nu)*(1.0 - 2.0*nu)); - dimensionedScalar threeK = E/(1.0 - 2.0*nu); + const fvPatchField& rho = + patch().lookupPatchField("rho"); + + const fvPatchField& rhoE = + patch().lookupPatchField("E"); + + const fvPatchField& nu = + patch().lookupPatchField("nu"); + + scalarField E = rhoE/rho; + scalarField mu = E/(2.0*(1.0 + nu)); + scalarField lambda = nu*E/((1.0 + nu)*(1.0 - 2.0*nu)); + scalarField threeK = E/(1.0 - 2.0*nu); Switch planeStress(mechanicalProperties.lookup("planeStress")); @@ -166,7 +172,7 @@ void tractionDisplacementFvPatchVectorField::updateCoeffs() threeK = E/(1.0 - nu); } - scalar twoMuLambda = (2*mu + lambda).value(); + scalarField twoMuLambda = (2*mu + lambda); vectorField n(patch().nf()); @@ -175,7 +181,7 @@ void tractionDisplacementFvPatchVectorField::updateCoeffs() gradient() = ( - (traction_ + pressure_*n)/rho.value() + (traction_ + pressure_*n)/rho + twoMuLambda*fvPatchField::snGrad() - (n & sigmaD) )/twoMuLambda; @@ -183,13 +189,13 @@ void tractionDisplacementFvPatchVectorField::updateCoeffs() if (thermalStress) { - dimensionedScalar alpha(thermalProperties.lookup("alpha")); - dimensionedScalar threeKalpha = threeK*alpha; + const fvPatchField& threeKalpha= + patch().lookupPatchField("threeKalpha"); const fvPatchField& T = patch().lookupPatchField("T"); - gradient() += n*threeKalpha.value()*T/twoMuLambda; + gradient() += n*threeKalpha*T/twoMuLambda; } fixedGradientFvPatchVectorField::updateCoeffs(); diff --git a/applications/utilities/mesh/generation/cvMesh/cvMesh.C b/applications/utilities/mesh/generation/cvMesh/cvMesh.C index 9c65f5cd82..fa95c852c1 100644 --- a/applications/utilities/mesh/generation/cvMesh/cvMesh.C +++ b/applications/utilities/mesh/generation/cvMesh/cvMesh.C @@ -34,7 +34,7 @@ Description \*---------------------------------------------------------------------------*/ -#include "fvCFD.H" +#include "argList.H" #include "conformalVoronoiMesh.H" using namespace Foam; diff --git a/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C b/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C index 1b1d317138..2f56ee07de 100644 --- a/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C +++ b/applications/utilities/thermophysical/chemkinToFoam/chemkinToFoam.C @@ -44,7 +44,9 @@ int main(int argc, char *argv[]) argList::validArgs.append("FOAMThermodynamicsFile"); argList args(argc, argv); - chemkinReader cr(args[1], args[2]); + speciesTable species; + + chemkinReader cr(args[1], species, args[2]); OFstream reactionsFile(args[3]); reactionsFile diff --git a/src/OpenFOAM/meshes/meshShapes/face/face.C b/src/OpenFOAM/meshes/meshShapes/face/face.C index 995c75cdc0..3211df1514 100644 --- a/src/OpenFOAM/meshes/meshShapes/face/face.C +++ b/src/OpenFOAM/meshes/meshShapes/face/face.C @@ -655,6 +655,27 @@ Foam::scalar Foam::face::sweptVol const pointField& newPoints ) const { + if (size() == 3) + { + return + ( + triPointRef + ( + oldPoints[operator[](0)], + oldPoints[operator[](1)], + oldPoints[operator[](2)] + ).sweptVol + ( + triPointRef + ( + newPoints[operator[](0)], + newPoints[operator[](1)], + newPoints[operator[](2)] + ) + ) + ); + } + scalar sv = 0; // Calculate the swept volume by breaking the face into triangles and diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index cc2f3e4225..d30f23b9bd 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -280,6 +280,7 @@ $(limitedSchemes)/limitWith/limitWith.C multivariateSchemes = $(surfaceInterpolation)/multivariateSchemes $(multivariateSchemes)/multivariateSurfaceInterpolationScheme/multivariateSurfaceInterpolationSchemes.C $(multivariateSchemes)/multivariateSelectionScheme/multivariateSelectionSchemes.C +$(multivariateSchemes)/multivariateIndependentScheme/multivariateIndependentSchemes.C $(multivariateSchemes)/upwind/multivariateUpwind.C $(multivariateSchemes)/Gamma/multivariateGamma.C $(multivariateSchemes)/vanLeer/multivariateVanLeer.C diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C index 87c3f13090..98a742e16b 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C +++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C @@ -42,8 +42,8 @@ void Foam::pimpleControl::read() // Read solution controls const dictionary& pimpleDict = dict(); - nOuterCorr_ = pimpleDict.lookupOrDefault