From 53af23b9fbad3d3f6506aec68763d0fccdf7e21a Mon Sep 17 00:00:00 2001 From: Sergio Ferraris <6-Sergio@users.noreply.develop.openfoam.com> Date: Tue, 3 Aug 2021 20:08:49 +0000 Subject: [PATCH] Implicit treatment of coupled boundary conditions --- .../chtMultiRegionFoam/Make/options | 1 + .../chtMultiRegionFoam/chtMultiRegionFoam.C | 51 +- .../chtMultiRegionSimpleFoam/Make/options | 2 + .../chtMultiRegionSimpleFoam.C | 39 +- .../chtMultiRegionSimpleFoam/fluid/EEqn.H | 19 +- .../chtMultiRegionSimpleFoam/fluid/UEqn.H | 3 +- .../fluid/createFluidFields.H | 8 + .../chtMultiRegionSimpleFoam/fluid/pEqn.H | 2 +- .../fluid/setRegionFluidFields.H | 2 + .../fluid/solveFluid.H | 8 +- .../solid/solveSolid.H | 22 +- .../Make/options | 1 + .../solid/solveSolid.H | 39 + .../chtMultiRegionFoam/fluid/EEqn.H | 20 +- .../chtMultiRegionFoam/fluid/UEqn.H | 3 +- .../fluid/createFluidFields.H | 8 + .../fluid/setRegionFluidFields.H | 2 + .../chtMultiRegionFoam/fluid/solveFluid.H | 19 +- .../include/correctThermos.H | 20 + .../include/createCoupledRegions.H | 51 ++ .../chtMultiRegionFoam/solid/solveSolid.H | 64 +- .../solvers/incompressible/pimpleFoam/pEqn.H | 1 + .../Make/options | 2 + .../phaseChangeTwoPhaseMixtures/Make/options | 4 +- src/OpenFOAM/Make/files | 1 + .../LduInterfaceField/LduInterfaceField.H | 7 +- .../LduMatrixUpdateMatrixInterfaces.C | 13 + .../lduAddressing/lduInterface/lduInterface.H | 20 + .../lduPrimitiveProcessorInterface.C | 38 +- .../lduPrimitiveProcessorInterface.H | 20 +- .../lduInterfaceField/lduInterfaceField.H | 11 +- .../lduInterfaceFieldTemplates.C | 13 +- .../matrices/lduMatrix/lduMatrix/lduMatrix.C | 6 +- .../matrices/lduMatrix/lduMatrix/lduMatrix.H | 11 +- .../lduMatrix/lduMatrix/lduMatrixSolver.C | 4 +- .../lduMatrixUpdateMatrixInterfaces.C | 22 +- .../GAMGAgglomerateLduAddressing.C | 73 +- .../GAMGAgglomeration/GAMGAgglomeration.C | 120 +-- .../GAMGAgglomeration/GAMGAgglomeration.H | 2 +- .../GAMGInterfaceField/GAMGInterfaceField.H | 1 + .../cyclicGAMGInterfaceField.C | 18 +- .../cyclicGAMGInterfaceField.H | 2 + .../processorGAMGInterfaceField.C | 10 +- .../processorGAMGInterfaceField.H | 4 + .../interfaces/GAMGInterface/GAMGInterface.C | 15 +- .../interfaces/GAMGInterface/GAMGInterface.H | 25 +- .../GAMGInterface/GAMGInterfaceTemplates.C | 27 +- .../cyclicGAMGInterface/cyclicGAMGInterface.C | 2 +- .../cyclicGAMGInterface/cyclicGAMGInterface.H | 2 +- .../processorGAMGInterface.C | 13 +- .../processorGAMGInterface.H | 13 +- src/OpenFOAM/meshes/lduMesh/lduMesh.H | 2 +- .../meshes/lduMesh/lduPrimitiveMesh.C | 182 ++++- .../meshes/lduMesh/lduPrimitiveMesh.H | 46 +- .../basic/coupled/coupledPolyPatch.C | 20 +- .../basic/coupled/coupledPolyPatch.H | 13 +- .../constraint/cyclic/cyclicPolyPatch.C | 22 + .../constraint/cyclic/cyclicPolyPatch.H | 56 +- .../polyPatches/polyPatch/polyPatch.C | 12 + .../polyPatches/polyPatch/polyPatch.H | 75 +- .../compressible/Make/options | 1 + ...tureCoupledBaffleMixedFvPatchScalarField.C | 64 ++ ...tureCoupledBaffleMixedFvPatchScalarField.H | 24 +- ...eratureRadCoupledMixedFvPatchScalarField.C | 159 ++++ ...eratureRadCoupledMixedFvPatchScalarField.H | 41 +- .../porousBafflePressureFvPatchField.C | 3 +- .../constraint/cyclic/cyclicFaPatch.C | 47 +- .../constraint/cyclic/cyclicFaPatch.H | 21 +- .../constraint/processor/processorFaPatch.C | 23 +- .../constraint/processor/processorFaPatch.H | 21 +- .../faMesh/faPatches/faPatch/faPatch.H | 9 + .../faPatches/faPatch/faPatchTemplates.C | 16 +- .../basic/coupled/coupledFaPatchField.H | 4 + .../constraint/cyclic/cyclicFaPatchField.C | 10 +- .../constraint/cyclic/cyclicFaPatchField.H | 4 + .../processor/processorFaPatchField.C | 8 + .../processor/processorFaPatchField.H | 8 + .../processor/processorFaPatchScalarField.C | 4 + .../processor/processorFaPatchScalarField.H | 4 + src/finiteVolume/Make/files | 6 + src/finiteVolume/Make/options | 1 + .../basic/coupled/coupledFvPatchField.H | 4 + .../basic/mixed/mixedFvPatchField.C | 29 +- .../basic/mixed/mixedFvPatchField.H | 13 + .../calculatedProcessorFvPatchField.C | 36 +- .../calculatedProcessorFvPatchField.H | 17 +- .../calculatedProcessorFvPatchFields.C | 24 +- .../calculatedProcessorFvPatchFields.H | 0 .../calculatedProcessorFvPatchFieldsFwd.H | 0 .../constraint/cyclic/cyclicFvPatchField.C | 107 ++- .../constraint/cyclic/cyclicFvPatchField.H | 15 + .../cyclicACMI/cyclicACMIFvPatchField.C | 178 ++++- .../cyclicACMI/cyclicACMIFvPatchField.H | 21 + .../cyclicAMI/cyclicAMIFvPatchField.C | 200 ++++- .../cyclicAMI/cyclicAMIFvPatchField.H | 33 + .../jumpCyclic/jumpCyclicFvPatchField.C | 17 +- .../jumpCyclic/jumpCyclicFvPatchField.H | 8 + .../jumpCyclic/jumpCyclicFvPatchFields.C | 22 +- .../jumpCyclicAMI/jumpCyclicAMIFvPatchField.C | 13 +- .../jumpCyclicAMI/jumpCyclicAMIFvPatchField.H | 6 + .../jumpCyclicAMIFvPatchFields.C | 11 +- .../processor/processorFvPatchField.C | 46 +- .../processor/processorFvPatchField.H | 9 + .../mappedMixedFieldFvPatchFields.C | 4 +- .../mappedMixedFieldFvPatchFields.H | 4 +- .../mappedMixed/mappedMixedFvPatchFields.C | 4 +- .../mappedMixed/mappedMixedFvPatchFields.H | 4 +- .../fvPatchFields/fvPatchField/fvPatchField.C | 39 +- .../fvPatchFields/fvPatchField/fvPatchField.H | 44 +- .../fvMatrices/fvMatrix/fvMatrix.C | 754 ++++++++++++++++-- .../fvMatrices/fvMatrix/fvMatrix.H | 147 +++- .../fvMatrices/fvMatrix/fvMatrixSolve.C | 6 + .../fvScalarMatrix/fvScalarMatrix.C | 126 ++- .../fvScalarMatrix/fvScalarMatrix.H | 15 +- src/finiteVolume/fvMesh/fvMesh.C | 8 + src/finiteVolume/fvMesh/fvMesh.H | 7 +- .../fvPatches/basic/coupled/coupledFvPatch.H | 20 +- .../constraint/cyclic/cyclicFvPatch.C | 11 + .../constraint/cyclic/cyclicFvPatch.H | 15 +- .../constraint/cyclicACMI/cyclicACMIFvPatch.C | 73 +- .../constraint/cyclicACMI/cyclicACMIFvPatch.H | 24 +- .../constraint/cyclicAMI/cyclicAMIFvPatch.C | 43 +- .../constraint/cyclicAMI/cyclicAMIFvPatch.H | 48 ++ .../constraint/processor/processorFvPatch.C | 22 + .../constraint/processor/processorFvPatch.H | 29 +- .../fvMesh/fvPatches/fvPatch/fvPatch.H | 9 + .../fvPatches/fvPatch/fvPatchTemplates.C | 18 +- .../AssemblyFvPatch.H | 176 ++++ .../AssemblyFvPatches.C | 56 ++ .../assemblyFaceAreaPairGAMGAgglomeration.C | 244 ++++++ .../assemblyFaceAreaPairGAMGAgglomeration.H | 93 +++ .../lduPrimitiveMeshAssembly.C | 159 ++++ .../lduPrimitiveMeshAssembly.H | 243 ++++++ .../lduPrimitiveMeshAssemblyTemplates.C | 492 ++++++++++++ .../AMIInterpolation/AMIInterpolation.H | 1 + .../AMIInterpolation/AMIInterpolationI.H | 1 - .../cyclicACMIGAMGInterfaceField.C | 17 +- .../cyclicACMIGAMGInterfaceField.H | 2 + .../cyclicAMIGAMGInterfaceField.C | 18 +- .../cyclicAMIGAMGInterfaceField.H | 2 + .../cyclicACMIGAMGInterface.C | 4 +- .../cyclicAMIGAMGInterface.C | 3 +- .../cyclicACMIPolyPatch/cyclicACMIPolyPatch.C | 59 ++ .../cyclicACMIPolyPatch/cyclicACMIPolyPatch.H | 9 + .../cyclicAMIPolyPatch/cyclicAMIPolyPatch.C | 33 +- .../cyclicAMIPolyPatch/cyclicAMIPolyPatch.H | 35 +- .../mappedPolyPatch/mappedPatchBase.H | 4 + .../mappedPolyPatch/mappedPatchBaseI.H | 8 +- .../mappedPolyPatch/mappedPolyPatch.H | 54 ++ .../mappedPolyPatch/mappedWallPolyPatch.H | 55 +- src/overset/Make/files | 3 +- .../GAMG/calculatedProcessorGAMGInterface.C | 16 +- .../GAMG/calculatedProcessorGAMGInterface.H | 14 +- .../calculatedProcessorGAMGInterfaceField.C | 10 +- .../calculatedProcessorGAMGInterfaceField.H | 4 + .../functionObjects/Make/options | 4 +- .../kinematicSingleLayer.C | 7 +- .../kinematicSingleLayer.H | 2 +- .../thermoSingleLayer/thermoSingleLayer.C | 5 +- .../mixedEnergyFvPatchScalarField.C | 61 +- .../mixedEnergyFvPatchScalarField.H | 8 + .../basic/heThermo/heThermo.C | 2 + .../solidThermo/solidThermo/heSolidThermo.C | 13 - .../2DImplicitCyclic/0.orig/T | 31 + .../2DImplicitCyclic/0.orig/U | 31 + .../2DImplicitCyclic/0.orig/epsilon | 33 + .../0.orig/include/emptyPatches | 20 + .../2DImplicitCyclic/0.orig/k | 32 + .../2DImplicitCyclic/0.orig/p | 31 + .../2DImplicitCyclic/0.orig/p_rgh | 31 + .../2DImplicitCyclic/Allclean | 11 + .../2DImplicitCyclic/Allmesh | 34 + .../2DImplicitCyclic/Allrun | 10 + .../2DImplicitCyclic/constant/g | 20 + .../constant/leftSolid/radiationProperties | 42 + .../leftSolid/thermophysicalProperties | 52 ++ .../constant/regionProperties | 24 + .../constant/rightFluid/radiationProperties | 30 + .../rightFluid/thermophysicalProperties | 47 ++ .../constant/rightFluid/turbulenceProperties | 19 + .../2DImplicitCyclic/system/blockMeshDict | 96 +++ .../2DImplicitCyclic/system/controlDict | 57 ++ .../2DImplicitCyclic/system/fvSchemes | 42 + .../2DImplicitCyclic/system/fvSolution | 22 + .../system/leftSolid/changeDictionaryDict | 47 ++ .../system/leftSolid/fvSchemes | 50 ++ .../system/leftSolid/fvSolution | 40 + .../system/rightFluid/changeDictionaryDict | 108 +++ .../system/rightFluid/createBafflesDict | 79 ++ .../system/rightFluid/fvSchemes | 61 ++ .../system/rightFluid/fvSolution | 105 +++ .../2DImplicitCyclic/system/topoSetDict | 66 ++ .../2DImplicitCyclic/system/topoSetDict.f1 | 59 ++ tutorials/basic/laplacianFoam/implicitAMI/0/T | 63 ++ .../implicitAMI/constant/transportProperties | 21 + .../implicitAMI/system/blockMeshDict | 136 ++++ .../implicitAMI/system/controlDict | 74 ++ .../implicitAMI/system/decomposeParDict | 25 + .../implicitAMI/system/fvSchemes | 52 ++ .../implicitAMI/system/fvSolution | 35 + tutorials/basic/simpleFoam/implicitAMI/0/U | 65 ++ tutorials/basic/simpleFoam/implicitAMI/0/p | 62 ++ .../implicitAMI/constant/transportProperties | 26 + .../implicitAMI/constant/turbulenceProperties | 19 + .../implicitAMI/system/blockMeshDict | 136 ++++ .../simpleFoam/implicitAMI/system/controlDict | 58 ++ .../implicitAMI/system/decomposeParDict | 25 + .../simpleFoam/implicitAMI/system/fvSchemes | 57 ++ .../simpleFoam/implicitAMI/system/fvSolution | 61 ++ .../snappyMultiRegionHeaterImplicit/0.orig/T | 32 + .../snappyMultiRegionHeaterImplicit/0.orig/U | 32 + .../0.orig/alphat | 32 + .../0.orig/epsilon | 32 + .../snappyMultiRegionHeaterImplicit/0.orig/k | 32 + .../snappyMultiRegionHeaterImplicit/0.orig/p | 32 + .../0.orig/p_rgh | 32 + .../0.orig/rho | 32 + .../snappyMultiRegionHeaterImplicit/Allclean | 15 + .../Allrun-parallel | 61 ++ .../constant/bottomAir/radiationProperties | 22 + .../bottomAir/thermophysicalProperties | 47 ++ .../constant/bottomAir/turbulenceProperties | 19 + .../constant/g | 20 + .../constant/heater/radiationProperties | 24 + .../constant/heater/thermophysicalProperties | 52 ++ .../constant/leftSolid/radiationProperties | 1 + .../leftSolid/thermophysicalProperties | 1 + .../constant/regionProperties | 25 + .../constant/rightSolid/radiationProperties | 1 + .../rightSolid/thermophysicalProperties | 1 + .../constant/topAir/radiationProperties | 1 + .../constant/topAir/thermophysicalProperties | 1 + .../constant/topAir/turbulenceProperties | 1 + .../system/blockMeshDict | 96 +++ .../system/bottomAir/changeDictionaryDict | 148 ++++ .../system/bottomAir/decomposeParDict | 1 + .../system/bottomAir/fvSchemes | 56 ++ .../system/bottomAir/fvSolution | 99 +++ .../system/controlDict | 54 ++ .../system/decomposeParDict | 35 + .../system/fvSchemes | 42 + .../system/fvSolution | 22 + .../system/heater/changeDictionaryDict | 64 ++ .../system/heater/decomposeParDict | 1 + .../system/heater/fvSchemes | 49 ++ .../system/heater/fvSolution | 40 + .../system/leftSolid/changeDictionaryDict | 55 ++ .../system/leftSolid/decomposeParDict | 1 + .../system/leftSolid/fvSchemes | 1 + .../system/leftSolid/fvSolution | 40 + .../system/meshQualityDict | 21 + .../system/rightSolid/changeDictionaryDict | 55 ++ .../system/rightSolid/decomposeParDict | 1 + .../system/rightSolid/fvSchemes | 1 + .../system/rightSolid/fvSolution | 40 + .../system/snappyHexMeshDict | 284 +++++++ .../system/surfaceFeatureExtractDict | 35 + .../system/topAir/changeDictionaryDict | 192 +++++ .../system/topAir/decomposeParDict | 1 + .../system/topAir/fvSchemes | 1 + .../system/topAir/fvSolution | 76 ++ .../system/topoSetDict.f1 | 105 +++ .../cpuCabinet/0.orig/domain0/T | 140 ++++ .../cpuCabinet/0.orig/domain0/U | 84 ++ .../cpuCabinet/0.orig/domain0/alphat | 87 ++ .../cpuCabinet/0.orig/domain0/epsilon | 87 ++ .../cpuCabinet/0.orig/domain0/k | 87 ++ .../cpuCabinet/0.orig/domain0/nut | 85 ++ .../cpuCabinet/0.orig/domain0/p | 77 ++ .../cpuCabinet/0.orig/domain0/p_rgh | 85 ++ .../cpuCabinet/0.orig/v_CPU/T | 73 ++ .../cpuCabinet/0.orig/v_CPU/p | 45 ++ .../cpuCabinet/0.orig/v_fins/T | 48 ++ .../cpuCabinet/0.orig/v_fins/p | 35 + .../cpuCabinet/Allclean | 19 + .../cpuCabinet/Allrun-parallel | 26 + .../cpuCabinet/Allrun.pre | 20 + .../cpuCabinet/constant/domain0/MRFProperties | 29 + .../constant/domain0/thermophysicalProperties | 50 ++ .../constant/domain0/turbulenceProperties | 27 + .../cpuCabinet/constant/g | 23 + .../cpuCabinet/constant/regionProperties | 24 + .../constant/v_CPU/thermophysicalProperties | 55 ++ .../constant/v_fins/thermophysicalProperties | 55 ++ .../cpuCabinet/system/blockMeshDict | 93 +++ .../cpuCabinet/system/controlDict | 53 ++ .../cpuCabinet/system/createBafflesDict | 24 + .../cpuCabinet/system/decomposeParDict | 36 + .../system/domain0/decomposeParDict | 30 + .../cpuCabinet/system/domain0/fvSchemes | 68 ++ .../cpuCabinet/system/domain0/fvSolution | 77 ++ .../cpuCabinet/system/domain0/topoSetDict | 40 + .../cpuCabinet/system/fvSchemes | 43 + .../cpuCabinet/system/fvSolution | 17 + .../cpuCabinet/system/meshQualityDict | 54 ++ .../cpuCabinet/system/probes | 82 ++ .../cpuCabinet/system/snappyHexMeshDict | 205 +++++ .../system/surfaceFeatureExtractDict | 29 + .../cpuCabinet/system/topoSetDict.f1 | 85 ++ .../cpuCabinet/system/v_CPU/decomposeParDict | 28 + .../cpuCabinet/system/v_CPU/fvOptions | 36 + .../cpuCabinet/system/v_CPU/fvSchemes | 49 ++ .../cpuCabinet/system/v_CPU/fvSolution | 46 ++ .../cpuCabinet/system/v_fins/decomposeParDict | 28 + .../cpuCabinet/system/v_fins/fvSchemes | 47 ++ .../cpuCabinet/system/v_fins/fvSolution | 51 ++ .../cpuCabinet/Cabinet_withMesh.obj.gz | Bin 0 -> 746359 bytes .../geometry/cpuCabinet/MRF_region.obj.gz | Bin 0 -> 108735 bytes 308 files changed, 12354 insertions(+), 527 deletions(-) create mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/solid/solveSolid.H create mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/include/correctThermos.H create mode 100644 applications/solvers/heatTransfer/chtMultiRegionFoam/include/createCoupledRegions.H rename src/{overset/lduPrimitiveProcessorInterface => OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface}/lduPrimitiveProcessorInterface.C (78%) rename src/{overset/lduPrimitiveProcessorInterface => OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface}/lduPrimitiveProcessorInterface.H (89%) rename src/{overset/lduPrimitiveProcessorInterface => finiteVolume/fields/fvPatchFields/constraint/calculatedProcessor}/calculatedProcessorFvPatchField.C (93%) rename src/{overset/lduPrimitiveProcessorInterface => finiteVolume/fields/fvPatchFields/constraint/calculatedProcessor}/calculatedProcessorFvPatchField.H (94%) rename src/{overset/lduPrimitiveProcessorInterface => finiteVolume/fields/fvPatchFields/constraint/calculatedProcessor}/calculatedProcessorFvPatchFields.C (83%) rename src/{overset/lduPrimitiveProcessorInterface => finiteVolume/fields/fvPatchFields/constraint/calculatedProcessor}/calculatedProcessorFvPatchFields.H (100%) rename src/{overset/lduPrimitiveProcessorInterface => finiteVolume/fields/fvPatchFields/constraint/calculatedProcessor}/calculatedProcessorFvPatchFieldsFwd.H (100%) create mode 100644 src/finiteVolume/lduPrimitiveMeshAssembly/AssemblyFvPatch.H create mode 100644 src/finiteVolume/lduPrimitiveMeshAssembly/AssemblyFvPatches.C create mode 100644 src/finiteVolume/lduPrimitiveMeshAssembly/assemblyFaceAreaPairGAMGAgglomeration/assemblyFaceAreaPairGAMGAgglomeration.C create mode 100644 src/finiteVolume/lduPrimitiveMeshAssembly/assemblyFaceAreaPairGAMGAgglomeration/assemblyFaceAreaPairGAMGAgglomeration.H create mode 100644 src/finiteVolume/lduPrimitiveMeshAssembly/lduPrimitiveMeshAssembly.C create mode 100644 src/finiteVolume/lduPrimitiveMeshAssembly/lduPrimitiveMeshAssembly.H create mode 100644 src/finiteVolume/lduPrimitiveMeshAssembly/lduPrimitiveMeshAssemblyTemplates.C create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/0.orig/T create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/0.orig/U create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/0.orig/epsilon create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/0.orig/include/emptyPatches create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/0.orig/k create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/0.orig/p create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/0.orig/p_rgh create mode 100755 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/Allclean create mode 100755 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/Allmesh create mode 100755 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/Allrun create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/constant/g create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/constant/leftSolid/radiationProperties create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/constant/leftSolid/thermophysicalProperties create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/constant/regionProperties create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/constant/rightFluid/radiationProperties create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/constant/rightFluid/thermophysicalProperties create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/constant/rightFluid/turbulenceProperties create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/blockMeshDict create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/controlDict create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/fvSchemes create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/fvSolution create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/leftSolid/changeDictionaryDict create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/leftSolid/fvSchemes create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/leftSolid/fvSolution create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/rightFluid/changeDictionaryDict create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/rightFluid/createBafflesDict create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/rightFluid/fvSchemes create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/rightFluid/fvSolution create mode 100644 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/topoSetDict create mode 100755 tutorials/basic/chtMultiRegionFoam/2DImplicitCyclic/system/topoSetDict.f1 create mode 100644 tutorials/basic/laplacianFoam/implicitAMI/0/T create mode 100644 tutorials/basic/laplacianFoam/implicitAMI/constant/transportProperties create mode 100644 tutorials/basic/laplacianFoam/implicitAMI/system/blockMeshDict create mode 100644 tutorials/basic/laplacianFoam/implicitAMI/system/controlDict create mode 100644 tutorials/basic/laplacianFoam/implicitAMI/system/decomposeParDict create mode 100644 tutorials/basic/laplacianFoam/implicitAMI/system/fvSchemes create mode 100644 tutorials/basic/laplacianFoam/implicitAMI/system/fvSolution create mode 100644 tutorials/basic/simpleFoam/implicitAMI/0/U create mode 100644 tutorials/basic/simpleFoam/implicitAMI/0/p create mode 100644 tutorials/basic/simpleFoam/implicitAMI/constant/transportProperties create mode 100644 tutorials/basic/simpleFoam/implicitAMI/constant/turbulenceProperties create mode 100644 tutorials/basic/simpleFoam/implicitAMI/system/blockMeshDict create mode 100644 tutorials/basic/simpleFoam/implicitAMI/system/controlDict create mode 100644 tutorials/basic/simpleFoam/implicitAMI/system/decomposeParDict create mode 100644 tutorials/basic/simpleFoam/implicitAMI/system/fvSchemes create mode 100644 tutorials/basic/simpleFoam/implicitAMI/system/fvSolution create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/0.orig/T create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/0.orig/U create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/0.orig/alphat create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/0.orig/epsilon create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/0.orig/k create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/0.orig/p create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/0.orig/p_rgh create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/0.orig/rho create mode 100755 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/Allclean create mode 100755 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/Allrun-parallel create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/bottomAir/radiationProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/bottomAir/thermophysicalProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/bottomAir/turbulenceProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/g create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/heater/radiationProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/heater/thermophysicalProperties create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/leftSolid/radiationProperties create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/leftSolid/thermophysicalProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/regionProperties create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/rightSolid/radiationProperties create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/rightSolid/thermophysicalProperties create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/topAir/radiationProperties create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/topAir/thermophysicalProperties create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/constant/topAir/turbulenceProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/blockMeshDict create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/bottomAir/changeDictionaryDict create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/bottomAir/decomposeParDict create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/bottomAir/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/bottomAir/fvSolution create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/controlDict create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/decomposeParDict create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/fvSolution create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/heater/changeDictionaryDict create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/heater/decomposeParDict create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/heater/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/heater/fvSolution create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/leftSolid/changeDictionaryDict create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/leftSolid/decomposeParDict create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/leftSolid/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/leftSolid/fvSolution create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/meshQualityDict create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/rightSolid/changeDictionaryDict create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/rightSolid/decomposeParDict create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/rightSolid/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/rightSolid/fvSolution create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/snappyHexMeshDict create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/surfaceFeatureExtractDict create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/topAir/changeDictionaryDict create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/topAir/decomposeParDict create mode 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/topAir/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/topAir/fvSolution create mode 100755 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeaterImplicit/system/topoSetDict.f1 create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/domain0/T create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/domain0/U create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/domain0/alphat create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/domain0/epsilon create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/domain0/k create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/domain0/nut create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/domain0/p create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/domain0/p_rgh create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/v_CPU/T create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/v_CPU/p create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/v_fins/T create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/0.orig/v_fins/p create mode 100755 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/Allclean create mode 100755 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/Allrun-parallel create mode 100755 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/Allrun.pre create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/constant/domain0/MRFProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/constant/domain0/thermophysicalProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/constant/domain0/turbulenceProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/constant/g create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/constant/regionProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/constant/v_CPU/thermophysicalProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/constant/v_fins/thermophysicalProperties create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/blockMeshDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/controlDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/createBafflesDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/decomposeParDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/domain0/decomposeParDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/domain0/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/domain0/fvSolution create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/domain0/topoSetDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/fvSolution create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/meshQualityDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/probes create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/snappyHexMeshDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/surfaceFeatureExtractDict create mode 100755 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/topoSetDict.f1 create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/v_CPU/decomposeParDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/v_CPU/fvOptions create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/v_CPU/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/v_CPU/fvSolution create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/v_fins/decomposeParDict create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/v_fins/fvSchemes create mode 100644 tutorials/heatTransfer/chtMultiRegionSimpleFoam/cpuCabinet/system/v_fins/fvSolution create mode 100644 tutorials/resources/geometry/cpuCabinet/Cabinet_withMesh.obj.gz create mode 100644 tutorials/resources/geometry/cpuCabinet/MRF_region.obj.gz diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options index 0a16d78b2f..941407a03c 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/Make/options @@ -21,6 +21,7 @@ EXE_INC = \ -I$(LIB_SRC)/regionModels/regionModel/lnInclude \ -I$(LIB_SRC)/regionFaModels\lnInclude + EXE_LIBS = \ -lfiniteVolume \ -lfvOptions \ diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C index 299653602d..d2293d3624 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionFoam.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2017 OpenCFD Ltd. + Copyright (C) 2017-2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -54,6 +54,7 @@ Description #include "loopControl.H" #include "pressureControl.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) @@ -80,6 +81,8 @@ int main(int argc, char *argv[]) #include "solidRegionDiffusionNo.H" #include "setInitialMultiRegionDeltaT.H" + #include "createCoupledRegions.H" + while (runTime.run()) { #include "readTimeControls.H" @@ -109,8 +112,6 @@ int main(int argc, char *argv[]) forAll(fluidRegions, i) { - Info<< "\nSolving for fluid region " - << fluidRegions[i].name() << endl; #include "setRegionFluidFields.H" #include "readFluidMultiRegionPIMPLEControls.H" #include "solveFluid.H" @@ -118,13 +119,35 @@ int main(int argc, char *argv[]) forAll(solidRegions, i) { - Info<< "\nSolving for solid region " - << solidRegions[i].name() << endl; #include "setRegionSolidFields.H" #include "readSolidMultiRegionPIMPLEControls.H" #include "solveSolid.H" } + if (coupled) + { + Info<< "\nSolving energy coupled regions " << endl; + fvMatrixAssemblyPtr->solve(); + #include "correctThermos.H" + + forAll(fluidRegions, i) + { + #include "setRegionFluidFields.H" + #include "readFluidMultiRegionPIMPLEControls.H" + Info<< "\nSolving for fluid region " + << fluidRegions[i].name() << endl; + // --- PISO loop + for (int corr=0; corr 1) { @@ -152,10 +175,28 @@ int main(int argc, char *argv[]) #include "readSolidMultiRegionPIMPLEControls.H" #include "solveSolid.H" } + + if (coupled) + { + Info<< "\nSolving energy coupled regions " << endl; + fvMatrixAssemblyPtr->solve(); + #include "correctThermos.H" + + forAll(fluidRegions, i) + { + #include "setRegionFluidFields.H" + rho = thermo.rho(); + } + } } } } + if (coupled) + { + fvMatrixAssemblyPtr->clear(); + } + runTime.write(); runTime.printExecutionTime(Info); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options index 241a4ff1a6..02b07edfa5 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/Make/options @@ -3,6 +3,7 @@ EXE_INC = \ -I./fluid \ -I./solid \ -I../solid \ + -I./../include \ -I$(LIB_SRC)/finiteVolume/cfdTools \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ @@ -35,3 +36,4 @@ EXE_LIBS = \ -lregionModels \ -lsampling \ -lregionFaModels + diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C index 67dcd84f95..ab8f50c0a7 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2017 OpenCFD Ltd. + Copyright (C) 2017-2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -66,6 +66,7 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createMeshes.H" #include "createFields.H" + #include "createCoupledRegions.H" #include "initContinuityErrs.H" while (runTime.loop()) @@ -83,13 +84,27 @@ int main(int argc, char *argv[]) forAll(solidRegions, i) { - Info<< "\nSolving for solid region " - << solidRegions[i].name() << endl; #include "setRegionSolidFields.H" #include "readSolidMultiRegionSIMPLEControls.H" #include "solveSolid.H" } + + if (coupled) + { + Info<< "\nSolving energy coupled regions" << endl; + fvMatrixAssemblyPtr->solve(); + #include "correctThermos.H" + + forAll(fluidRegions, i) + { + #include "setRegionFluidFields.H" + #include "readSolidMultiRegionSIMPLEControls.H" + #include "pEqn.H" + turb.correct(); + } + } + // Additional loops for energy solution only { loopControl looping(runTime, "SIMPLE", "energyCoupling"); @@ -116,9 +131,27 @@ int main(int argc, char *argv[]) #include "readSolidMultiRegionSIMPLEControls.H" #include "solveSolid.H" } + + if (coupled) + { + Info<< "\nSolving energy coupled regions.. " << endl; + fvMatrixAssemblyPtr->solve(); + #include "correctThermos.H" + + forAll(fluidRegions, i) + { + #include "setRegionFluidFields.H" + turb.correct(); + } + } } } + if (coupled) + { + fvMatrixAssemblyPtr->clear(); + } + runTime.write(); runTime.printExecutionTime(Info); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H index daf3af8f2d..526e2b8757 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H @@ -20,13 +20,20 @@ fvOptions.constrain(EEqn); - EEqn.solve(); + if (coupled) + { + fvMatrixAssemblyPtr->addFvMatrix(EEqn); + } + else + { + EEqn.solve(); - fvOptions.correct(he); + fvOptions.correct(he); - thermo.correct(); - rad.correct(); + thermo.correct(); + rad.correct(); - Info<< "Min/max T:" << min(thermo.T()).value() << ' ' - << max(thermo.T()).value() << endl; + 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 index f9712b548e..c279edfe34 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H @@ -2,7 +2,7 @@ MRF.correctBoundaryVelocity(U); - tmp tUEqn + UEqn = ( fvm::div(phi, U) + MRF.DDt(rho, U) @@ -10,7 +10,6 @@ == fvOptions(rho, U) ); - fvVectorMatrix& UEqn = tUEqn.ref(); UEqn.relax(); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H index f414d0eab2..0047fb1606 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H @@ -21,6 +21,8 @@ PtrList rhoMin(fluidRegions.size()); PtrList MRFfluid(fluidRegions.size()); PtrList fluidFvOptions(fluidRegions.size()); +PtrList UEqFluid(fluidRegions.size()); + const uniformDimensionedVectorField& g = meshObjects::gravity::New(runTime); // Populate fluid field pointer lists @@ -222,5 +224,11 @@ forAll(fluidRegions, i) new fv::options(fluidRegions[i]) ); + UEqFluid.set + ( + i, + new fvVectorMatrix(UFluid[i], dimForce) + ); + turbulence[i].validate(); } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H index c4cc0d6c3c..fe3d742816 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H @@ -2,7 +2,7 @@ volScalarField rAU("rAU", 1.0/UEqn.A()); surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU)); volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p_rgh)); - tUEqn.clear(); + //tUEqn.clear(); surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf()); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H index 814c930275..28c4418da8 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H @@ -22,6 +22,8 @@ IOMRFZoneList& MRF = MRFfluid[i]; fv::options& fvOptions = fluidFvOptions[i]; + fvVectorMatrix& UEqn = UEqFluid[i]; + const dimensionedScalar initialMass ( "initialMass", diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/solveFluid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/solveFluid.H index b43a949043..c033bf0396 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/solveFluid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/solveFluid.H @@ -12,8 +12,10 @@ #include "UEqn.H" #include "EEqn.H" - #include "pEqn.H" - - turb.correct(); + if (!coupled) + { + #include "pEqn.H" + turb.correct(); + } } } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H index 2b6306e5c2..4c545e7a2d 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/solid/solveSolid.H @@ -16,13 +16,21 @@ fvOptions.constrain(hEqn); - hEqn.solve(); + if (coupled) + { + fvMatrixAssemblyPtr->addFvMatrix(hEqn); + } + else + { + Info<< "\nSolving for solid region " + << solidRegions[i].name() << endl; - fvOptions.correct(h); + hEqn.solve(); + fvOptions.correct(h); + thermo.correct(); + + Info<< "Min/max T:" << min(thermo.T()).value() << ' ' + << max(thermo.T()).value() << endl; + } } - - thermo.correct(); - - Info<< "Min/max T:" << min(thermo.T()).value() << ' ' - << max(thermo.T()).value() << endl; } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/Make/options b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/Make/options index 4662932e47..566ee29621 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/Make/options +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/Make/options @@ -7,6 +7,7 @@ EXE_INC = \ -I${phaseSystem}/twoPhaseCompressibleTurbulenceModels/lnInclude \ -I${phaseSystem}/multiphaseSystem/lnInclude \ -I./fluid \ + -I./solid \ -I../solid \ -I../fluid \ -I../include \ diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/solid/solveSolid.H new file mode 100644 index 0000000000..791e0d6405 --- /dev/null +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/solid/solveSolid.H @@ -0,0 +1,39 @@ +if (finalIter) +{ + mesh.data::add("finalIteration", true); +} + +{ + for (int nonOrth=0; nonOrth<=nNonOrthCorr; ++nonOrth) + { + fvScalarMatrix hEqn + ( + fvm::ddt(betav*rho, h) + - ( + thermo.isotropic() + ? fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)") + : fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)") + ) + == + fvOptions(rho, h) + ); + + hEqn.relax(); + + fvOptions.constrain(hEqn); + + hEqn.solve(mesh.solver(h.select(finalIter))); + + fvOptions.correct(h); + } + + thermo.correct(); + + Info<< "Min/max T:" << min(thermo.T()).value() << ' ' + << max(thermo.T()).value() << endl; +} + +if (finalIter) +{ + mesh.data::remove("finalIteration"); +} diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H index 8f30905c40..39d238abce 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H @@ -27,13 +27,19 @@ fvOptions.constrain(EEqn); - EEqn.solve(mesh.solver(he.select(finalIter))); + if (coupled) + { + fvMatrixAssemblyPtr->addFvMatrix(EEqn); + } + else + { + EEqn.solve(mesh.solver(he.select(finalIter))); + fvOptions.correct(he); - fvOptions.correct(he); + thermo.correct(); + rad.correct(); - thermo.correct(); - rad.correct(); - - Info<< "Min/max T:" << min(thermo.T()).value() << ' ' - << max(thermo.T()).value() << endl; + Info<< "Min/max T:" << min(thermo.T()).value() << ' ' + << max(thermo.T()).value() << endl; + } } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H index 9b5ce0e396..65654eeefe 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/UEqn.H @@ -2,7 +2,7 @@ MRF.correctBoundaryVelocity(U); - tmp tUEqn + UEqn = ( fvm::ddt(rho, U) + fvm::div(phi, U) + MRF.DDt(rho, U) @@ -10,7 +10,6 @@ == fvOptions(rho, U) ); - fvVectorMatrix& UEqn = tUEqn.ref(); UEqn.relax(); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H index 1c9db4f887..826e27720e 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/createFluidFields.H @@ -16,6 +16,8 @@ PtrList::fieldTable> fieldsFluid(fluidRegions.size()); PtrList QdotFluid(fluidRegions.size()); +PtrList UEqFluid(fluidRegions.size()); + List initialMassFluid(fluidRegions.size()); List frozenFlowFluid(fluidRegions.size(), false); @@ -293,6 +295,12 @@ forAll(fluidRegions, i) new fv::options(fluidRegions[i]) ); + UEqFluid.set + ( + i, + new fvVectorMatrix(UFluid[i], dimForce) + ); + turbulenceFluid[i].validate(); pRefCellFluid[i] = -1; diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H index d7710d085d..4b1ade67e8 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H @@ -49,6 +49,8 @@ IOMRFZoneList& MRF = MRFfluid[i]; fv::options& fvOptions = fluidFvOptions[i]; + fvVectorMatrix& UEqn = UEqFluid[i]; + const dimensionedScalar initialMass ( "initialMass", diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H index d4d18e9fdd..d111ffd366 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H @@ -18,15 +18,20 @@ else #include "YEqn.H" #include "EEqn.H" - // --- PISO loop - for (int corr=0; corr> fvMatrixAssemblyPtr; + +forAll(fluidRegions, i) +{ + const rhoThermo& thermo = refCast(thermoFluid[i]); + const auto& bpsi = thermo.T().boundaryField(); + + forAll (bpsi, patchI) + { + if (bpsi[patchI].useImplicit()) + { + coupled = true; + } + } +} + +forAll(solidRegions, i) +{ + solidThermo& thermo = thermos[i]; + const auto& bpsi = thermo.T().boundaryField(); + + forAll (bpsi, patchI) + { + if (bpsi[patchI].useImplicit()) + { + coupled = true; + } + } +} + +forAll(fluidRegions, i) +{ + const rhoThermo& thermo = refCast(thermoFluid[i]); + if (coupled) + { + Info << "Create fvMatrixAssembly." << endl; + fvMatrixAssemblyPtr.reset + ( + new fvMatrix + ( + thermo.he(), + dimEnergy/dimTime + ) + ); + break; + } +} diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H index 791e0d6405..913d20bce6 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H @@ -1,39 +1,45 @@ -if (finalIter) { - mesh.data::add("finalIteration", true); -} + fvScalarMatrix hEqn + ( + fvm::ddt(betav*rho, h) + - ( + thermo.isotropic() + ? fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)") + : fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)") + ) + == + fvOptions(rho, h) + ); -{ - for (int nonOrth=0; nonOrth<=nNonOrthCorr; ++nonOrth) + hEqn.relax(); + + fvOptions.constrain(hEqn); + + if (coupled) { - fvScalarMatrix hEqn - ( - fvm::ddt(betav*rho, h) - - ( - thermo.isotropic() - ? fvm::laplacian(betav*thermo.alpha(), h, "laplacian(alpha,h)") - : fvm::laplacian(betav*taniAlpha(), h, "laplacian(alpha,h)") - ) - == - fvOptions(rho, h) - ); + fvMatrixAssemblyPtr->addFvMatrix(hEqn); + } + else + { + Info<< "\nSolving for solid region "<< solidRegions[i].name() << endl; - hEqn.relax(); - - fvOptions.constrain(hEqn); + if (finalIter) + { + mesh.data::add("finalIteration", true); + } hEqn.solve(mesh.solver(h.select(finalIter))); fvOptions.correct(h); + + thermo.correct(); + + Info<< "Min/max T:" << min(thermo.T()).value() << ' ' + << max(thermo.T()).value() << endl; + + if (finalIter) + { + mesh.data::remove("finalIteration"); + } } - - thermo.correct(); - - Info<< "Min/max T:" << min(thermo.T()).value() << ' ' - << max(thermo.T()).value() << endl; -} - -if (finalIter) -{ - mesh.data::remove("finalIteration"); } diff --git a/applications/solvers/incompressible/pimpleFoam/pEqn.H b/applications/solvers/incompressible/pimpleFoam/pEqn.H index d1c090f7d1..35182c9415 100644 --- a/applications/solvers/incompressible/pimpleFoam/pEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/pEqn.H @@ -11,6 +11,7 @@ else phiHbyA += MRF.zeroFilter(fvc::interpolate(rAU)); } + MRF.makeRelative(phiHbyA); if (p.needReference()) diff --git a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/options b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/options index 98ce2f9477..b9fc8596f5 100644 --- a/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/options +++ b/applications/solvers/multiphase/interCondensatingEvaporatingFoam/temperaturePhaseChangeTwoPhaseMixtures/Make/options @@ -1,5 +1,6 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ @@ -9,6 +10,7 @@ EXE_INC = \ LIB_LIBS = \ -lfiniteVolume \ + -lmeshTools \ -lgeometricVoF \ -ltwoPhaseMixture \ -linterfaceProperties \ diff --git a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Make/options b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Make/options index 2e61e4ba77..6f70f673dc 100644 --- a/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Make/options +++ b/applications/solvers/multiphase/interPhaseChangeFoam/phaseChangeTwoPhaseMixtures/Make/options @@ -1,6 +1,7 @@ EXE_INC = \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude @@ -8,4 +9,5 @@ LIB_LIBS = \ -ltwoPhaseMixture \ -ltwoPhaseProperties \ -lincompressibleTransportModels \ - -lfiniteVolume + -lfiniteVolume \ + -lmeshTools diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index f37def5122..1af3509c2f 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -431,6 +431,7 @@ $(lduAddressing)/lduAddressing.C $(lduAddressing)/lduInterface/lduInterface.C $(lduAddressing)/lduInterface/processorLduInterface.C $(lduAddressing)/lduInterface/cyclicLduInterface.C +$(lduAddressing)/lduInterface/lduPrimitiveProcessorInterface.C lduInterfaceFields = $(lduAddressing)/lduInterfaceFields $(lduInterfaceFields)/lduInterfaceField/lduInterfaceField.C diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduInterfaceField/LduInterfaceField.H b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduInterfaceField/LduInterfaceField.H index c9d138baa5..404a5a34a5 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduInterfaceField/LduInterfaceField.H +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduInterfaceField/LduInterfaceField.H @@ -48,8 +48,7 @@ SourceFiles namespace Foam { -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - +// Forward declarations class lduMatrix; /*---------------------------------------------------------------------------*\ @@ -101,6 +100,8 @@ public: ( Field&, const bool add, + const lduAddressing&, + const label interfacei, const Field&, const scalarField&, const Pstream::commsTypes commsType @@ -115,6 +116,8 @@ public: ( Field&, const bool add, + const lduAddressing&, + const label interfacei, const Field&, const scalarField&, const Pstream::commsTypes commsType diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixUpdateMatrixInterfaces.C b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixUpdateMatrixInterfaces.C index 3d6aed4ca5..d549f2e73a 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixUpdateMatrixInterfaces.C +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/LduMatrixUpdateMatrixInterfaces.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation + Copyright (C) 2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -53,6 +54,8 @@ void Foam::LduMatrix::initMatrixInterfaces ( result, add, + lduMesh_.lduAddr(), + interfacei, psiif, interfaceCoeffs[interfacei], //Amultiplier(interfaceCoeffs[interfacei]), @@ -80,6 +83,8 @@ void Foam::LduMatrix::initMatrixInterfaces ( result, add, + lduMesh_.lduAddr(), + interfacei, psiif, interfaceCoeffs[interfacei], //Amultiplier(interfaceCoeffs[interfacei]), @@ -128,6 +133,8 @@ void Foam::LduMatrix::updateMatrixInterfaces ( result, add, + lduMesh_.lduAddr(), + interfacei, psiif, interfaceCoeffs[interfacei], //Amultiplier(interfaceCoeffs[interfacei]), @@ -153,6 +160,8 @@ void Foam::LduMatrix::updateMatrixInterfaces ( result, add, + lduMesh_.lduAddr(), + interfacei, psiif, interfaceCoeffs[interfacei], //Amultiplier(interfaceCoeffs[interfacei]), @@ -165,6 +174,8 @@ void Foam::LduMatrix::updateMatrixInterfaces ( result, add, + lduMesh_.lduAddr(), + interfacei, psiif, interfaceCoeffs[interfacei], //Amultiplier(interfaceCoeffs[interfacei]), @@ -189,6 +200,8 @@ void Foam::LduMatrix::updateMatrixInterfaces ( result, add, + lduMesh_.lduAddr(), + interfacei, psiif, interfaceCoeffs[interfacei], //Amultiplier(interfaceCoeffs[interfacei]), diff --git a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduInterface.H b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduInterface.H index 430322a993..25ea7c1dae 100644 --- a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduInterface.H +++ b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduInterface.H @@ -72,6 +72,7 @@ public: // Member Functions + // Access //- Return faceCell addressing @@ -87,6 +88,14 @@ public: const labelUList& internalData ) const = 0; + //- Return the values of the given internal data adjacent to + //- the interface as a field using faceCell mapping + virtual tmp interfaceInternalField + ( + const labelUList& internalData, + const labelUList& faceCells + ) const = 0; + //- Initialise transfer of internal field adjacent to the interface virtual void initInternalFieldTransfer ( @@ -95,12 +104,23 @@ public: ) const {} + //- Initialise transfer of internal field adjacent to the interface + //- using faceCells mapping + virtual void initInternalFieldTransfer + ( + const Pstream::commsTypes commsType, + const labelUList& iF, + const labelUList& faceCells + ) const + {} + //- Transfer and return internal field adjacent to the interface virtual tmp internalFieldTransfer ( const Pstream::commsTypes commsType, const labelUList& iF ) const = 0; + }; diff --git a/src/overset/lduPrimitiveProcessorInterface/lduPrimitiveProcessorInterface.C b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduPrimitiveProcessorInterface.C similarity index 78% rename from src/overset/lduPrimitiveProcessorInterface/lduPrimitiveProcessorInterface.C rename to src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduPrimitiveProcessorInterface.C index 13ca7bff6c..2df7eeec30 100644 --- a/src/overset/lduPrimitiveProcessorInterface/lduPrimitiveProcessorInterface.C +++ b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/lduPrimitiveProcessorInterface.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2016-2017 OpenCFD Ltd. + Copyright (C) 2016-2019 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -65,11 +65,23 @@ Foam::lduPrimitiveProcessorInterface::interfaceInternalField const labelUList& internalData ) const { - tmp tfld(new labelField(faceCells_.size())); - labelField& fld = tfld.ref(); - forAll(faceCells_, i) + return interfaceInternalField(internalData, faceCells_); +} + + +Foam::tmp +Foam::lduPrimitiveProcessorInterface::interfaceInternalField +( + const labelUList& internalData, + const labelUList& faceCells +) const +{ + auto tfld = tmp::New(faceCells.size()); + auto& fld = tfld.ref(); + + forAll(faceCells, i) { - fld[i] = internalData[faceCells_[i]]; + fld[i] = internalData[faceCells[i]]; } return tfld; } @@ -85,6 +97,21 @@ void Foam::lduPrimitiveProcessorInterface::initInternalFieldTransfer } +void Foam::lduPrimitiveProcessorInterface::initInternalFieldTransfer +( + const Pstream::commsTypes commsType, + const labelUList& iF, + const labelUList& faceCells +) const +{ + processorLduInterface::send + ( + commsType, + interfaceInternalField(iF, faceCells)() + ); +} + + Foam::tmp Foam::lduPrimitiveProcessorInterface::internalFieldTransfer ( @@ -95,5 +122,4 @@ Foam::lduPrimitiveProcessorInterface::internalFieldTransfer return processorLduInterface::receive