From c2b169c8dde4e090536f2072e54e4c9bba8b46d5 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Thu, 12 Apr 2018 13:31:08 +0100 Subject: [PATCH 1/3] vectorTensorTransform: Inverse and tensor field transforms --- .../vectorTensorTransform.H | 7 ++++++- .../vectorTensorTransformTemplates.C | 21 +++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.H b/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.H index c4db7aa53f..5627c4a9c5 100644 --- a/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.H +++ b/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,6 +42,7 @@ SourceFiles #include "word.H" #include "contiguous.H" #include "pointField.H" +#include "transformField.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -148,6 +149,10 @@ public: template tmp> transform(const Field&) const; + //- Inverse transform the given field + template + tmp> invTransform(const Field&) const; + // Member operators diff --git a/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransformTemplates.C b/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransformTemplates.C index 6878a6123c..6558cd19fb 100644 --- a/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransformTemplates.C +++ b/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransformTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,7 +33,24 @@ Foam::tmp> Foam::vectorTensorTransform::transform { if (hasR_) { - return R() & fld; + return Foam::transform(R(), fld); + } + else + { + return fld; + } +} + + +template +Foam::tmp> Foam::vectorTensorTransform::invTransform +( + const Field& fld +) const +{ + if (hasR_) + { + return Foam::transform(R().T(), fld); } else { From 8e453f3874ab5486818d28ecba18a17a1757a8c4 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Thu, 12 Apr 2018 14:06:38 +0100 Subject: [PATCH 2/3] AttouFerschneider: Correction to cube-root of volume fraction ratio --- .../dragModels/AttouFerschneider/AttouFerschneider.C | 10 ++++++++-- .../laminar/trickleBed/0/T.air | 9 +-------- .../laminar/trickleBed/0/T.solid | 2 +- .../laminar/trickleBed/0/T.water | 9 +-------- .../laminar/trickleBed/0/U.air | 8 +------- .../laminar/trickleBed/0/U.water | 8 +------- .../laminar/trickleBed/0/alpha.air.orig | 9 +-------- .../laminar/trickleBed/0/alpha.water.orig | 9 +-------- .../laminar/trickleBed/0/p_rgh | 11 +---------- 9 files changed, 16 insertions(+), 59 deletions(-) diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C index 364564aea6..4d85f64385 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C @@ -52,7 +52,10 @@ Foam::dragModels::AttouFerschneider::KGasLiquid const phaseModel& solid = gas.fluid().phases()[solidName_]; const volScalarField oneMinusGas(max(1 - gas, liquid.residualAlpha())); - const volScalarField cbrtR(solid/oneMinusGas); + const volScalarField cbrtR + ( + cbrt(max(solid, solid.residualAlpha())/oneMinusGas) + ); const volScalarField magURel(mag(gas.U() - liquid.U())); return @@ -70,7 +73,10 @@ Foam::dragModels::AttouFerschneider::KGasSolid ) const { const volScalarField oneMinusGas(max(1 - gas, solid.residualAlpha())); - const volScalarField cbrtR(solid/oneMinusGas); + const volScalarField cbrtR + ( + cbrt(max(solid, solid.residualAlpha())/oneMinusGas) + ); return E1_*gas.mu()*sqr(oneMinusGas/solid.d())*sqr(cbrtR) diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air index 35b1df7c60..77f13e270e 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air @@ -20,14 +20,7 @@ internalField uniform 300; boundaryField { - bottom - { - type inletOutlet; - phi phi.air; - inletValue $internalField; - value $internalField; - } - "(top|walls)" + "(bottom|top|walls)" { type zeroGradient; } diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid index b63896311b..ad72183d7d 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid @@ -10,7 +10,7 @@ FoamFile version 2.0; format ascii; class volScalarField; - object T.solid; + object T.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water index 646a9f67af..86e7f20818 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water @@ -20,14 +20,7 @@ internalField uniform 300; boundaryField { - bottom - { - type inletOutlet; - phi phi.water; - inletValue $internalField; - value $internalField; - } - "(top|walls)" + "(bottom|top|walls)" { type zeroGradient; } diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air index 88ed3c4815..7e419e9413 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air @@ -20,13 +20,7 @@ internalField uniform (0 0 0); boundaryField { - bottom - { - type pressureInletOutletVelocity; - phi phi.air; - value $internalField; - } - "(top|walls)" + "(bottom|top|walls)" { type noSlip; } diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water index b85ec10037..2bf5abf150 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water @@ -20,13 +20,7 @@ internalField uniform (0 0 0); boundaryField { - bottom - { - type pressureInletOutletVelocity; - phi phi.water; - value $internalField; - } - "(top|walls)" + "(bottom|top|walls)" { type noSlip; } diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig index 8768fe7efb..8e9abf899b 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig @@ -20,14 +20,7 @@ internalField uniform 0.5; boundaryField { - bottom - { - type inletOutlet; - phi phi.air; - inletValue $internalField; - value $internalField; - } - "(top|walls)" + "(bottom|top|walls)" { type zeroGradient; } diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig index 6bce9e8af4..ea380a7cfe 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig @@ -20,14 +20,7 @@ internalField uniform 0; boundaryField { - bottom - { - type inletOutlet; - phi phi.water; - inletValue $internalField; - value $internalField; - } - "(top|walls)" + "(bottom|top|walls)" { type zeroGradient; } diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh index 6701faf5e4..182d4ef480 100644 --- a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh @@ -20,16 +20,7 @@ internalField uniform 1e5; boundaryField { - bottom - { - type prghTotalPressure; - p0 $internalField; - U U.air; - phi phi.air; - rho thermo:rho.air; - value $internalField; - } - "(top|walls)" + "(bottom|top|walls)" { type fixedFluxPressure; value $internalField; From a1cc703bf8434b80f406d51cb157a97e188baf0c Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Fri, 13 Apr 2018 14:25:28 +0100 Subject: [PATCH 3/3] Cloud: Removed unused data --- src/lagrangian/basic/Cloud/Cloud.C | 5 ----- src/lagrangian/basic/Cloud/Cloud.H | 18 ++---------------- src/lagrangian/basic/Cloud/CloudIO.C | 5 ++--- 3 files changed, 4 insertions(+), 24 deletions(-) diff --git a/src/lagrangian/basic/Cloud/Cloud.C b/src/lagrangian/basic/Cloud/Cloud.C index f95a5d7cb6..4d9675169f 100644 --- a/src/lagrangian/basic/Cloud/Cloud.C +++ b/src/lagrangian/basic/Cloud/Cloud.C @@ -77,7 +77,6 @@ Foam::Cloud::Cloud cloud(pMesh, cloudName), IDLList(), polyMesh_(pMesh), - labels_(), globalPositionsPtr_() { checkPatches(); @@ -356,10 +355,6 @@ void Foam::Cloud::autoMap(const mapPolyMesh& mapper) << exit(FatalError); } - // Reset stored data that relies on the mesh - // polyMesh_.clearCellTree(); - cellWallFacesPtr_.clear(); - // Ask for the tetBasePtIs to trigger all processors to build // them, otherwise, if some processors have no particles then // there is a comms mismatch. diff --git a/src/lagrangian/basic/Cloud/Cloud.H b/src/lagrangian/basic/Cloud/Cloud.H index ec92e831fe..37ca44f016 100644 --- a/src/lagrangian/basic/Cloud/Cloud.H +++ b/src/lagrangian/basic/Cloud/Cloud.H @@ -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 @@ -75,14 +75,9 @@ class Cloud { // Private data + //- Reference to the mesh const polyMesh& polyMesh_; - //- Temporary storage for addressing. Used in findTris. - mutable DynamicList