From 283f8b7dc8873e3c0352c23144cb6dfcb7ca26d9 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Fri, 26 Jan 2018 13:40:42 +0000 Subject: [PATCH] chtMultiRegionFoam: SIMPLE operation and transonic switch Multi-region PIMPLE controls have been applied to the chtMultiRegionFoam solver, and a transonic option has been implemented. The new PIMPLE controls let the solver operate SIMPLE mode. The utilisation of library solution and convergence control functionality has significantly reduced the amount of code in the solver. The chtMultiRegionSimpleFoam solver has also been made obsolete, and has therefore been removed. A few changes will be necessary to convert an existing chtMultiRegionSimpleFoam case to chtMultiRegionFoam. All the SIMPLE sub-dictionaries in the system//fvSolution will need to be renamed PIMPLE. The system/fvSolution file will also need an empty PIMPLE sub-dictionary. In addition, additional "Final" solver and relaxation entries will be needed. For a steady case, adding a wildcard ending, ".*", to the variable names should be sufficient. Solution parameters appropriate for a steady case are shown below: solvers { "p_rgh.*" { solver GAMG; tolerance 1e-7; relTol 0.01; smoother DIC; maxIter 10; } "(U|h|e|k|epsilon).*" { solver PBiCGStab; preconditioner DILU; tolerance 1e-7; relTol 0.1; } } PIMPLE { // ... } relaxationFactors { fields { "p_rgh.*" 0.7; } equations { "U.*" 0.5; "(h|e).*" 0.3; "(k|epsilon).*" 0.2; } } This work was supported by Fabian Buelow, at Evonik Tobias Holzmann provided cases for testing the convergence controls --- .../chtMultiRegionFoam/Make/options | 1 + .../checkResidualControls.H | 66 ----- .../chtMultiRegionFoam/chtMultiRegionFoam.C | 37 +-- .../chtMultiRegionSimpleFoam/Make/files | 4 - .../chtMultiRegionSimpleFoam/Make/options | 30 -- .../checkResidualControls.H | 68 ----- .../chtMultiRegionSimpleFoam.C | 103 ------- .../chtMultiRegionSimpleFoam/fluid/EEqn.H | 32 -- .../chtMultiRegionSimpleFoam/fluid/UEqn.H | 35 --- .../fluid/compressibleContinuityErrors.H | 21 -- .../fluid/compressibleMultiRegionCourantNo.H | 15 - .../fluid/createFluidFields.H | 277 ------------------ .../fluid/createFluidMeshes.H | 24 -- .../chtMultiRegionSimpleFoam/fluid/pEqn.H | 84 ------ .../readFluidMultiRegionResidualControls.H | 60 ---- .../readFluidMultiRegionSIMPLEControls.H | 7 - .../fluid/residualControlsFluid.H | 56 ---- .../fluid/setRegionFluidFields.H | 39 --- .../fluid/solveFluid.H | 19 -- .../solid/createSolidFields.H | 126 -------- .../solid/createSolidMeshes.H | 1 - .../readSolidMultiRegionResidualControls.H | 36 --- .../readSolidMultiRegionSIMPLEControls.H | 4 - .../solid/residualControlsSolid.H | 1 - .../solid/setRegionSolidFields.H | 1 - .../solid/solveSolid.H | 28 -- .../chtMultiRegionFoam/createFields.H | 5 - .../chtMultiRegionFoam/fluid/EEqn.H | 2 +- .../chtMultiRegionFoam/fluid/UEqn.H | 26 +- .../fluid/compressibleContinuityErrors.H | 21 -- .../fluid/compressibleMultiRegionCourantNo.H | 16 - .../fluid/createFluidFields.H | 20 -- .../fluid/createFluidPressureControls.H | 16 + .../fluid/initContinuityErrs.H | 2 +- .../chtMultiRegionFoam/fluid/pEqn.H | 123 +++++--- .../readFluidMultiRegionPIMPLEControls.H | 10 - .../readFluidMultiRegionResidualControls.H | 60 ---- .../fluid/residualControlsFluid.H | 55 ---- .../fluid/setRegionFluidFields.H | 12 +- .../chtMultiRegionFoam/fluid/solveFluid.H | 26 +- .../fluid/storeOldFluidFields.H | 2 - .../chtMultiRegionFoam/readPIMPLEControls.H | 8 - .../solid/createSolidFields.H | 19 -- .../readSolidMultiRegionPIMPLEControls.H | 4 - .../readSolidMultiRegionResidualControls.H | 36 --- .../solid/residualControlsSolid.H | 8 - .../solid/setRegionSolidFields.H | 4 +- .../chtMultiRegionFoam/solid/solveSolid.H | 20 +- .../heatExchanger/0.orig/air/T | 0 .../heatExchanger/0.orig/air/U | 0 .../heatExchanger/0.orig/air/alphat | 0 .../heatExchanger/0.orig/air/epsilon | 0 .../heatExchanger/0.orig/air/k | 0 .../heatExchanger/0.orig/air/nut | 0 .../heatExchanger/0.orig/air/p | 0 .../heatExchanger/0.orig/air/p_rgh | 0 .../heatExchanger/0.orig/porous/AoV | 0 .../heatExchanger/0.orig/porous/T | 0 .../heatExchanger/0.orig/porous/U | 0 .../heatExchanger/0.orig/porous/htcConst | 0 .../heatExchanger/0.orig/porous/p | 0 .../heatExchanger/0.orig/porous/p_rgh | 0 .../heatExchanger/Allclean | 0 .../heatExchanger/Allrun | 0 .../heatExchanger/Allrun-parallel | 0 .../heatExchanger/Allrun.pre | 0 .../heatExchanger/constant/air/MRFProperties | 0 .../heatExchanger/constant/air/fvOptions | 0 .../heatExchanger/constant/air/g | 0 .../constant/air/radiationProperties | 0 .../constant/air/thermophysicalProperties | 0 .../constant/air/turbulenceProperties | 0 .../heatExchanger/constant/porous/fvOptions | 0 .../heatExchanger/constant/porous/g | 0 .../constant/porous/thermophysicalProperties | 0 .../constant/porous/turbulenceProperties | 0 .../heatExchanger/constant/regionProperties | 0 .../heatExchanger/system/air/blockMeshDict | 0 .../system/air/createBafflesDict | 0 .../heatExchanger/system/air/decomposeParDict | 0 .../heatExchanger/system/air/fvSchemes | 0 .../heatExchanger/system/air/fvSolution | 34 +-- .../heatExchanger/system/air/topoSetDict.1 | 0 .../heatExchanger/system/air/topoSetDict.2 | 0 .../heatExchanger/system/controlDict | 2 +- .../heatExchanger/system/decomposeParDict | 0 .../heatExchanger/system/fvSchemes | 0 .../heatExchanger/system/fvSolution | 0 .../heatExchanger/system/porous/blockMeshDict | 0 .../system/porous/decomposeParDict | 0 .../heatExchanger/system/porous/fvSchemes | 0 .../heatExchanger/system/porous/fvSolution | 24 +- .../multiRegionHeaterRadiation/0/G | 0 .../multiRegionHeaterRadiation/0/IDefault | 0 .../multiRegionHeaterRadiation/0/T | 0 .../multiRegionHeaterRadiation/0/U | 0 .../multiRegionHeaterRadiation/0/epsilon | 0 .../multiRegionHeaterRadiation/0/k | 0 .../multiRegionHeaterRadiation/0/p | 0 .../multiRegionHeaterRadiation/0/p_rgh | 0 .../multiRegionHeaterRadiation/0/qr | 0 .../multiRegionHeaterRadiation/Allclean | 0 .../multiRegionHeaterRadiation/Allrun | 0 .../Allrun-parallel | 0 .../multiRegionHeaterRadiation/Allrun.pre | 0 .../constant/bottomAir/g | 0 .../constant/bottomAir/radiationProperties | 0 .../bottomAir/thermophysicalProperties | 0 .../constant/bottomAir/turbulenceProperties | 0 .../constant/bottomAir/viewFactorsDict | 0 .../constant/heater/radiationProperties | 0 .../constant/heater/thermophysicalProperties | 0 .../constant/leftSolid/radiationProperties | 0 .../leftSolid/thermophysicalProperties | 0 .../constant/regionProperties | 0 .../constant/rightSolid/radiationProperties | 0 .../rightSolid/thermophysicalProperties | 0 .../constant/topAir/g | 0 .../constant/topAir/radiationProperties | 0 .../constant/topAir/thermophysicalProperties | 0 .../constant/topAir/turbulenceProperties | 0 .../constant/topAir/viewFactorsDict | 0 .../system/blockMeshDict | 0 .../system/bottomAir/changeDictionaryDict | 0 .../system/bottomAir/decomposeParDict | 0 .../system/bottomAir/fvSchemes | 0 .../system/bottomAir}/fvSolution | 37 +-- .../system/controlDict | 2 +- .../system/decomposeParDict | 0 .../system/fvSchemes | 0 .../system/fvSolution | 5 + .../system/heater/changeDictionaryDict | 0 .../system/heater/decomposeParDict | 0 .../system/heater/fvSchemes | 0 .../system/heater}/fvSolution | 6 +- .../system/leftSolid/changeDictionaryDict | 0 .../system/leftSolid/decomposeParDict | 0 .../system/leftSolid/fvSchemes | 0 .../system/leftSolid}/fvSolution | 6 +- .../system/rightSolid/changeDictionaryDict | 0 .../system/rightSolid/decomposeParDict | 0 .../system/rightSolid/fvSchemes | 0 .../system/rightSolid}/fvSolution | 6 +- .../system/topAir/changeDictionaryDict | 0 .../system/topAir/decomposeParDict | 0 .../system/topAir/fvSchemes | 0 .../system/topAir}/fvSolution | 37 +-- .../system/topoSetDict | 0 148 files changed, 205 insertions(+), 1624 deletions(-) delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/checkResidualControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/files delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/checkResidualControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/compressibleContinuityErrors.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/compressibleMultiRegionCourantNo.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidMeshes.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/readFluidMultiRegionResidualControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/readFluidMultiRegionSIMPLEControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/residualControlsFluid.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/solveFluid.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidFields.H delete mode 120000 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/createSolidMeshes.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/readSolidMultiRegionResidualControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/readSolidMultiRegionSIMPLEControls.H delete mode 120000 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/residualControlsSolid.H delete mode 120000 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/setRegionSolidFields.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/compressibleContinuityErrors.H create mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidPressureControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/readFluidMultiRegionPIMPLEControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/readFluidMultiRegionResidualControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/residualControlsFluid.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/storeOldFluidFields.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/readPIMPLEControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionPIMPLEControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/solid/readSolidMultiRegionResidualControls.H delete mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/solid/residualControlsSolid.H rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/air/T (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/air/U (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/air/alphat (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/air/epsilon (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/air/k (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/air/nut (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/air/p (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/air/p_rgh (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/porous/AoV (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/porous/T (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/porous/U (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/porous/htcConst (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/porous/p (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/0.orig/porous/p_rgh (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/Allclean (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/Allrun (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/Allrun-parallel (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/Allrun.pre (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/air/MRFProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/air/fvOptions (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/air/g (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/air/radiationProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/air/thermophysicalProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/air/turbulenceProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/porous/fvOptions (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/porous/g (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/porous/thermophysicalProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/porous/turbulenceProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/constant/regionProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/air/blockMeshDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/air/createBafflesDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/air/decomposeParDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/air/fvSchemes (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/air/fvSolution (73%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/air/topoSetDict.1 (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/air/topoSetDict.2 (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/controlDict (96%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/decomposeParDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/fvSchemes (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/fvSolution (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/porous/blockMeshDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/porous/decomposeParDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/porous/fvSchemes (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/heatExchanger/system/porous/fvSolution (82%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/0/G (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/0/IDefault (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/0/T (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/0/U (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/0/epsilon (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/0/k (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/0/p (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/0/p_rgh (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/0/qr (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/Allclean (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/Allrun (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/Allrun-parallel (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/Allrun.pre (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/bottomAir/g (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/bottomAir/radiationProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/bottomAir/thermophysicalProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/bottomAir/turbulenceProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/bottomAir/viewFactorsDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/heater/radiationProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/heater/thermophysicalProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/leftSolid/radiationProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/leftSolid/thermophysicalProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/regionProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/rightSolid/radiationProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/rightSolid/thermophysicalProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/topAir/g (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/topAir/radiationProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/topAir/thermophysicalProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/topAir/turbulenceProperties (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/constant/topAir/viewFactorsDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/blockMeshDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/bottomAir/changeDictionaryDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/bottomAir/decomposeParDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/bottomAir/fvSchemes (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir => chtMultiRegionFoam/multiRegionHeaterRadiation/system/bottomAir}/fvSolution (70%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/controlDict (96%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/decomposeParDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/fvSchemes (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/fvSolution (98%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/heater/changeDictionaryDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/heater/decomposeParDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/heater/fvSchemes (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid => chtMultiRegionFoam/multiRegionHeaterRadiation/system/heater}/fvSolution (95%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/leftSolid/changeDictionaryDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/leftSolid/decomposeParDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/leftSolid/fvSchemes (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid => chtMultiRegionFoam/multiRegionHeaterRadiation/system/leftSolid}/fvSolution (95%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/rightSolid/changeDictionaryDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/rightSolid/decomposeParDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/rightSolid/fvSchemes (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater => chtMultiRegionFoam/multiRegionHeaterRadiation/system/rightSolid}/fvSolution (95%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/topAir/changeDictionaryDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/topAir/decomposeParDict (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/topAir/fvSchemes (100%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir => chtMultiRegionFoam/multiRegionHeaterRadiation/system/topAir}/fvSolution (70%) rename tutorials/heatTransfer/{chtMultiRegionSimpleFoam => chtMultiRegionFoam}/multiRegionHeaterRadiation/system/topoSetDict (100%) 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