From bc492823fcf8d047548a59f7a64c8a3bc11cb9bc Mon Sep 17 00:00:00 2001 From: tlichtenegger Date: Tue, 20 Oct 2020 12:01:25 +0200 Subject: [PATCH] Restructuring the solver. --- .../rcfdemSolverRhoSteadyPimpleChem/UEqn.H | 40 +++++++------- .../rcfdemSolverRhoSteadyPimpleChem/YEqn.H | 6 +-- .../createFields.H | 2 + .../rcfdemSolverRhoSteadyPimpleChem/pEqn.H | 5 ++ .../rcfdemSolverRhoSteadyPimpleChem.C | 52 +++++++++---------- 5 files changed, 57 insertions(+), 48 deletions(-) diff --git a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/UEqn.H b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/UEqn.H index 9e75193e..44cb1f6e 100644 --- a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/UEqn.H +++ b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/UEqn.H @@ -1,7 +1,7 @@ // Solve the Momentum equation particleCloud.otherForces(fOther); -tmp tUEqn +fvVectorMatrix UEqn ( fvm::div(phi, U) + particleCloud.divVoidfractionTau(U, voidfractionRec) @@ -10,24 +10,26 @@ tmp tUEqn == fvOptions(rho, U) ); -fvVectorMatrix& UEqn = tUEqn.ref(); -UEqn.relax(); - -fvOptions.constrain(UEqn); - -if (modelType=="B" || modelType=="Bfull") +if (stepcounter%nEveryFlow==0) { - solve(UEqn == -fvc::grad(p)+ Ksl*UsRec); + UEqn.relax(); + + fvOptions.constrain(UEqn); + + if (modelType=="B" || modelType=="Bfull") + { + solve(UEqn == -fvc::grad(p)+ Ksl*UsRec); + } + else + { + solve(UEqn == -voidfractionRec*fvc::grad(p)+ Ksl*UsRec); + } + + + #include "limitU.H" + + fvOptions.correct(U); + + K = 0.5*magSqr(U); } -else -{ - solve(UEqn == -voidfractionRec*fvc::grad(p)+ Ksl*UsRec); -} - -//U.relax(); -#include "limitU.H" - -fvOptions.correct(U); - -K = 0.5*magSqr(U); diff --git a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/YEqn.H b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/YEqn.H index de5c56e9..c5cbaca0 100644 --- a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/YEqn.H +++ b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/YEqn.H @@ -30,13 +30,11 @@ tmp > mvConvection fvScalarMatrix YiEqn ( - //fvm::ddt(rhoeps, Yi) - //+ mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(voidfractionRec*turbulence->muEff(), Yi) == combustion->R(Yi) - + particleCloud.chemistryM(0).Smi(i) + + particleCloud.chemistryM(0).Smi(i)*p/p.prevIter() + fvOptions(rho, Yi) ); @@ -46,6 +44,8 @@ tmp > mvConvection YiEqn.solve(mesh.solver("Yi")); + Yi.relax(); + fvOptions.correct(Yi); Yi.max(0.0); diff --git a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/createFields.H b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/createFields.H index c0ac42dc..1556801e 100644 --- a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/createFields.H +++ b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/createFields.H @@ -212,6 +212,8 @@ Info<< "Reading thermophysical properties\n" << endl; linearInterpolate(rho*U*voidfraction) & mesh.Sf() ); + bool transientEEqn(pimple.dict().lookupOrDefault("transientEEqn",false)); + dimensionedScalar rhoMax ( dimensionedScalar::lookupOrDefault diff --git a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/pEqn.H b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/pEqn.H index 6b40829c..c8e4c697 100644 --- a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/pEqn.H +++ b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/pEqn.H @@ -3,6 +3,9 @@ rho = max(rho, rhoMin); rho = min(rho, rhoMax); rho.relax(); +if (stepcounter%nEveryFlow==0) +{ + volScalarField rAU(1.0/UEqn.A()); surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rhoeps*rAU)); if (modelType=="A") @@ -89,3 +92,5 @@ else U.correctBoundaryConditions(); fvOptions.correct(U); K = 0.5*magSqr(U); + +} diff --git a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/rcfdemSolverRhoSteadyPimpleChem.C b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/rcfdemSolverRhoSteadyPimpleChem.C index 9e22b7f8..e2dc841c 100644 --- a/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/rcfdemSolverRhoSteadyPimpleChem.C +++ b/applications/solvers/rcfdemSolverRhoSteadyPimpleChem/rcfdemSolverRhoSteadyPimpleChem.C @@ -95,7 +95,7 @@ int main(int argc, char *argv[]) const IOdictionary& couplingProps = particleCloud.couplingProperties(); label nEveryFlow(couplingProps.lookupOrDefault