diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options index deef74acc..2b9836121 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options @@ -8,6 +8,7 @@ EXE_INC = \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/finiteVolume/cfdTools \ -I$(LIB_SRC)/transportModels/compressible/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/checkResidualControls.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/checkResidualControls.H deleted file mode 100644 index 8068798cd..000000000 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/checkResidualControls.H +++ /dev/null @@ -1,66 +0,0 @@ -// Residual control used? -bool resControlUsed = false; -int nFluidControlled = fluidRegions.size(); -int nSolidControlled = solidRegions.size(); - -// Check wheater there is a single regions that uses residual control -forAll(fluidRegions, i) -{ - if (residualControlUsedFluid[i]) - { - resControlUsed = true; - } -} - -forAll(solidRegions, i) -{ - if(residualControlUsedSolid[i]) - { - resControlUsed = true; - } -} - -if (resControlUsed) -{ - int nFluidConv = 0; - int nSolidConv = 0; - - // Sum of all converged regions (Note: if no residual control is used - // the residualReached* flag is already set to true) - forAll(fluidRegions, i) - { - if (residualReachedFluid[i]) - { - nFluidConv++; - } - } - - forAll(solidRegions, i) - { - if (residualReachedSolid[i]) - { - nSolidConv++; - } - } - - if (nFluidConv == nFluidControlled && nSolidConv == nSolidControlled) - { - // Activate flag to go to the 'Final' loop using the 'Final' - // relaxation factors - allRegionsConverged = true; - } -} - -if (finalIter && resControlUsed && !allRegionsConverged) -{ - Info<< "\nRegions not converged after " << nOuterCorr - << " outer correctors" << endl; -} -else if (finalIter && resControlUsed && allRegionsConverged) -{ - Info<< "\nRegions converged after " << oCorr - << " outer correctors" << endl; - - // Leave PIMPLE loop - break; -} diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C index 8f11f8bab..c58eadb06 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,6 +45,8 @@ Description #include "radiationModel.H" #include "fvOptions.H" #include "coordinateSystem.H" +#include "pimpleMultiRegionControl.H" +#include "pressureControl.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -59,17 +61,18 @@ int main(int argc, char *argv[]) #include "createMeshes.H" #include "createFields.H" #include "initContinuityErrs.H" + pimpleMultiRegionControl pimples(fluidRegions, solidRegions); + #include "createFluidPressureControls.H" #include "createTimeControls.H" #include "readSolidTimeControls.H" #include "compressibleMultiRegionCourantNo.H" #include "solidRegionDiffusionNo.H" #include "setInitialMultiRegionDeltaT.H" - while (runTime.run()) + while (pimples.run(runTime)) { #include "readTimeControls.H" #include "readSolidTimeControls.H" - #include "readPIMPLEControls.H" #include "compressibleMultiRegionCourantNo.H" #include "solidRegionDiffusionNo.H" @@ -79,36 +82,15 @@ int main(int argc, char *argv[]) Info<< "Time = " << runTime.timeName() << nl << endl; - if (nOuterCorr != 1) - { - forAll(fluidRegions, i) - { - #include "storeOldFluidFields.H" - } - } - - bool allRegionsConverged = false; - bool finalIter = false; - // --- PIMPLE loop - for (int oCorr=0; oCorr. - -Application - chtMultiRegionSimpleFoam - -Description - Steady-state solver for buoyant, turbulent fluid flow and solid heat - conduction with conjugate heat transfer between solid and fluid regions. - -\*---------------------------------------------------------------------------*/ - -#include "fvCFD.H" -#include "rhoThermo.H" -#include "turbulentFluidThermoModel.H" -#include "fixedGradientFvPatchFields.H" -#include "regionProperties.H" -#include "solidThermo.H" -#include "radiationModel.H" -#include "fvOptions.H" -#include "coordinateSystem.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -int main(int argc, char *argv[]) -{ - #define NO_CONTROL - #define CREATE_MESH createMeshesPostProcess.H - #include "postProcess.H" - - #include "setRootCase.H" - #include "createTime.H" - #include "createMeshes.H" - #include "createFields.H" - #include "initContinuityErrs.H" - - // Residual control - bool allRegionsConverged = false; - - while (runTime.run()) - { - runTime++; - - Info<< "Time = " << runTime.timeName() << nl << endl; - - forAll(fluidRegions, i) - { - Info<< "\nSolving for fluid region " - << fluidRegions[i].name() << endl; - #include "setRegionFluidFields.H" - #include "readFluidMultiRegionSIMPLEControls.H" - #include "readFluidMultiRegionResidualControls.H" - #include "solveFluid.H" - #include "residualControlsFluid.H" - } - - forAll(solidRegions, i) - { - Info<< "\nSolving for solid region " - << solidRegions[i].name() << endl; - #include "setRegionSolidFields.H" - #include "readSolidMultiRegionSIMPLEControls.H" - #include "readSolidMultiRegionResidualControls.H" - #include "solveSolid.H" - #include "residualControlsSolid.H" - } - - #include "checkResidualControls.H" - - runTime.write(); - - Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << nl << endl; - } - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H deleted file mode 100644 index 3fd3ba505..000000000 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H +++ /dev/null @@ -1,32 +0,0 @@ -{ - volScalarField& he = thermo.he(); - - fvScalarMatrix EEqn - ( - fvm::div(phi, he) - + ( - he.name() == "e" - ? fvc::div(phi, volScalarField("Ekp", 0.5*magSqr(U) + p/rho)) - : fvc::div(phi, volScalarField("K", 0.5*magSqr(U))) - ) - - fvm::laplacian(turb.alphaEff(), he) - == - rho*(U&g) - + rad.Sh(thermo, he) - + fvOptions(rho, he) - ); - - EEqn.relax(); - - fvOptions.constrain(EEqn); - - solvPerfh = EEqn.solve(); - - fvOptions.correct(he); - - thermo.correct(); - rad.correct(); - - Info<< "Min/max T:" << min(thermo.T()).value() << ' ' - << max(thermo.T()).value() << endl; -} diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H deleted file mode 100644 index 636c29ff9..000000000 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H +++ /dev/null @@ -1,35 +0,0 @@ - // Solve the Momentum equation - - MRF.correctBoundaryVelocity(U); - - tmp tUEqn - ( - fvm::div(phi, U) - + MRF.DDt(rho, U) - + turb.divDevRhoReff(U) - == - fvOptions(rho, U) - ); - fvVectorMatrix& UEqn = tUEqn.ref(); - - UEqn.relax(); - - fvOptions.constrain(UEqn); - - if (momentumPredictor) - { - solvPerfU = solve - ( - UEqn - == - fvc::reconstruct - ( - ( - - ghf*fvc::snGrad(rho) - - fvc::snGrad(p_rgh) - )*mesh.magSf() - ) - ); - } - - fvOptions.correct(U); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/compressibleContinuityErrors.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/compressibleContinuityErrors.H deleted file mode 100644 index 046ca5ec3..000000000 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/compressibleContinuityErrors.H +++ /dev/null @@ -1,21 +0,0 @@ -{ - dimensionedScalar totalMass = fvc::domainIntegrate(rho); - - scalar sumLocalContErr = - ( - fvc::domainIntegrate(mag(rho - thermo.rho()))/totalMass - ).value(); - - scalar globalContErr = - ( - fvc::domainIntegrate(rho - thermo.rho())/totalMass - ).value(); - - cumulativeContErr[i] += globalContErr; - - Info<< "time step continuity errors (" << mesh.name() << ")" - << ": sum local = " << sumLocalContErr - << ", global = " << globalContErr - << ", cumulative = " << cumulativeContErr[i] - << endl; -} diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/compressibleMultiRegionCourantNo.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/compressibleMultiRegionCourantNo.H deleted file mode 100644 index e070c5966..000000000 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/compressibleMultiRegionCourantNo.H +++ /dev/null @@ -1,15 +0,0 @@ - scalar CoNum = -great; - forAll(fluidRegions, regionI) - { - CoNum = max - ( - compressibleCourantNo - ( - fluidRegions[regionI], - runTime, - rhoFluid[regionI], - phiFluid[regionI] - ), - CoNum - ); - } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H deleted file mode 100644 index c1bb05fc2..000000000 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H +++ /dev/null @@ -1,277 +0,0 @@ -// Initialise fluid field pointer lists -PtrList thermoFluid(fluidRegions.size()); -PtrList rhoFluid(fluidRegions.size()); -PtrList UFluid(fluidRegions.size()); -PtrList phiFluid(fluidRegions.size()); -PtrList gFluid(fluidRegions.size()); -PtrList hRefFluid(fluidRegions.size()); -PtrList ghFluid(fluidRegions.size()); -PtrList ghfFluid(fluidRegions.size()); -PtrList turbulence(fluidRegions.size()); -PtrList p_rghFluid(fluidRegions.size()); -PtrList radiation(fluidRegions.size()); - -List initialMassFluid(fluidRegions.size()); -List