diff --git a/applications/solvers/multiphase/interFoam/alphaEqn.H b/applications/solvers/multiphase/interFoam/alphaEqn.H index 96f8473e91b5dd3ff43797cdcd603e8249afde0c..2a90edea65158cd75cce95438b006c7d2b3aa4f7 100644 --- a/applications/solvers/multiphase/interFoam/alphaEqn.H +++ b/applications/solvers/multiphase/interFoam/alphaEqn.H @@ -82,7 +82,7 @@ ? fv::localEulerDdtScheme<scalar> ( mesh, - trSubDeltaT().name() + nAlphaSubCycles > 1 ? "rSubDeltaT" : "rDeltaT" ).fvmDdt(alpha1) : fv::EulerDdtScheme<scalar>(mesh).fvmDdt(alpha1) ) diff --git a/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H b/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H index 5db9f16546180ca8b428eb2527dd5798c4acddba..71de0772332d5d3b173be4afb9c1cd77d26288ee 100644 --- a/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H +++ b/applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H @@ -13,6 +13,16 @@ if (nAlphaSubCycles > 1) dimensionedScalar("0", rhoPhi.dimensions(), 0) ); + tmp<volScalarField> trSubDeltaT; + + if (LTS) + { + trSubDeltaT = tmp<volScalarField> + ( + new volScalarField("rSubDeltaT", trDeltaT()*nAlphaSubCycles) + ); + } + for ( subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles); diff --git a/applications/solvers/multiphase/interFoam/createRDeltaT.H b/applications/solvers/multiphase/interFoam/createRDeltaT.H deleted file mode 100644 index b45dff137e4df5fb5005062e10f75c289812f4d1..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/interFoam/createRDeltaT.H +++ /dev/null @@ -1,47 +0,0 @@ -bool LTS = - word(mesh.ddtScheme("default")) - == fv::localEulerDdtScheme<scalar>::typeName; - -tmp<volScalarField> trDeltaT; -tmp<volScalarField> trSubDeltaT; - -if (LTS) -{ - scalar maxDeltaT - ( - pimple.dict().lookupOrDefault<scalar>("maxDeltaT", GREAT) - ); - - trDeltaT = tmp<volScalarField> - ( - new volScalarField - ( - IOobject - ( - "rDeltaT", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - mesh, - 1/dimensionedScalar("maxDeltaT", dimTime, maxDeltaT), - zeroGradientFvPatchScalarField::typeName - ) - ); - - trSubDeltaT = tmp<volScalarField> - ( - new volScalarField - ( - IOobject - ( - "rSubDeltaT", - runTime.timeName(), - mesh - ), - mesh, - 1/dimensionedScalar("maxDeltaT", dimTime, maxDeltaT) - ) - ); -} diff --git a/applications/solvers/multiphase/interFoam/setRDeltaT.H b/applications/solvers/multiphase/interFoam/setRDeltaT.H index 0752857a9b20468b8a05ba8a438a49e443c08b7f..01bb8aa411ce23424216641173a206e932ade3e1 100644 --- a/applications/solvers/multiphase/interFoam/setRDeltaT.H +++ b/applications/solvers/multiphase/interFoam/setRDeltaT.H @@ -1,6 +1,5 @@ { volScalarField& rDeltaT = trDeltaT(); - volScalarField& rSubDeltaT = trSubDeltaT(); const dictionary& pimpleDict = pimple.dict(); @@ -134,9 +133,4 @@ << gMin(1/rDeltaT.internalField()) << ", " << gMax(1/rDeltaT.internalField()) << endl; } - - const dictionary& alphaControls = mesh.solverDict(alpha1.name()); - label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles"))); - - rSubDeltaT = rDeltaT*nAlphaSubCycles; } diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C index 48b9703ebeee6f9eb96b8f9186aa2422dca06bad..3ce13f2c43af1cf8d3ad7a1631c38630cb461c27 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C @@ -175,6 +175,10 @@ void Foam::twoPhaseSystem::solve() label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles"))); label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr"))); + bool LTS = + word(mesh.ddtScheme("default")) + == fv::localEulerDdtScheme<scalar>::typeName; + word alphaScheme("div(phi," + alpha1.name() + ')'); word alpharScheme("div(phir," + alpha1.name() + ')'); @@ -316,6 +320,22 @@ void Foam::twoPhaseSystem::solve() if (nAlphaSubCycles > 1) { + tmp<volScalarField> trSubDeltaT; + + if (LTS) + { + const volScalarField& rDeltaT = + mesh.objectRegistry::lookupObject<volScalarField> + ( + "rDeltaT" + ); + + trSubDeltaT = tmp<volScalarField> + ( + new volScalarField("rSubDeltaT", rDeltaT*nAlphaSubCycles) + ); + } + for ( subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles); diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C b/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C index ecd7671fe95b5750e051430c35de07b45d696bc7..75180f09dcadddfc0a30f291354bd3c13e29687e 100644 --- a/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C +++ b/src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C @@ -96,7 +96,10 @@ void Foam::MULES::correct if (LTS) { const volScalarField& rDeltaT = - mesh.objectRegistry::lookupObject<volScalarField>("rSubDeltaT"); + mesh.objectRegistry::lookupObject<volScalarField> + ( + mesh.time().subCycling() ? "rSubDeltaT" : "rDeltaT" + ); limitCorr ( diff --git a/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C b/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C index 83eebdb1523ab3fa3a7a3c7e4478bcdfe4acadf6..b0205beccbdde1371200a1005573e24c7f7b2e51 100644 --- a/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C +++ b/src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C @@ -118,7 +118,10 @@ void Foam::MULES::explicitSolve if (LTS) { const volScalarField& rDeltaT = - mesh.objectRegistry::lookupObject<volScalarField>("rSubDeltaT"); + mesh.objectRegistry::lookupObject<volScalarField> + ( + mesh.time().subCycling() ? "rSubDeltaT" : "rDeltaT" + ); limit (