From 13cdbe3c45ca85c824b3cd70e0d79da58666960b Mon Sep 17 00:00:00 2001 From: william Date: Tue, 18 Mar 2014 15:03:41 +0000 Subject: [PATCH 1/8] BUG: twoPhaseEulerFoam: corrected the definintion of K in turbulence models and in the segregated drag model --- .../interfacialModels/dragModels/segregated/segregated.C | 6 +----- .../phaseIncompressible/LES/Niceno/NicenoKEqn.C | 2 +- .../phaseIncompressible/RAS/LaheyKEpsilon/LaheyKEpsilon.C | 3 ++- .../RAS/mixtureKEpsilon/mixtureKEpsilon.C | 8 ++++---- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C index 92b82e53..7ae380da 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C @@ -138,11 +138,7 @@ Foam::tmp Foam::dragModels::segregated::K() const ( pair_.rho() *pair_.magUr() - /( - magGradI - *max(alpha1*alpha2, sqr(residualAlpha_)) - *muI - ) + /(magGradI*muI) ); volScalarField lambda(m_*ReI + n_*muAlphaI/muI); diff --git a/src/TurbulenceModels/phaseIncompressible/LES/Niceno/NicenoKEqn.C b/src/TurbulenceModels/phaseIncompressible/LES/Niceno/NicenoKEqn.C index 07002a6a..30356990 100644 --- a/src/TurbulenceModels/phaseIncompressible/LES/Niceno/NicenoKEqn.C +++ b/src/TurbulenceModels/phaseIncompressible/LES/Niceno/NicenoKEqn.C @@ -182,7 +182,7 @@ tmp NicenoKEqn::bubbleG() const tmp bubbleG ( - Cp_*gas*sqr(magUr)*fluid.drag(gas).K()/liquid.rho() + Cp_*sqr(magUr)*fluid.drag(gas).K()/liquid.rho() ); return bubbleG; diff --git a/src/TurbulenceModels/phaseIncompressible/RAS/LaheyKEpsilon/LaheyKEpsilon.C b/src/TurbulenceModels/phaseIncompressible/RAS/LaheyKEpsilon/LaheyKEpsilon.C index 8454103e..83edf7de 100644 --- a/src/TurbulenceModels/phaseIncompressible/RAS/LaheyKEpsilon/LaheyKEpsilon.C +++ b/src/TurbulenceModels/phaseIncompressible/RAS/LaheyKEpsilon/LaheyKEpsilon.C @@ -194,9 +194,10 @@ tmp LaheyKEpsilon::bubbleG() const tmp bubbleG ( Cp_ + *liquid*liquid.rho() *( pow3(magUr) - + pow(fluid.drag(gas).K()*gas.d()/liquid.rho(), 4.0/3.0) + + pow(fluid.drag(gas).CdRe()*liquid.nu()/gas.d(), 4.0/3.0) *pow(magUr, 5.0/3.0) ) *gas diff --git a/src/TurbulenceModels/phaseIncompressible/RAS/mixtureKEpsilon/mixtureKEpsilon.C b/src/TurbulenceModels/phaseIncompressible/RAS/mixtureKEpsilon/mixtureKEpsilon.C index 23d69508..52cc2eca 100644 --- a/src/TurbulenceModels/phaseIncompressible/RAS/mixtureKEpsilon/mixtureKEpsilon.C +++ b/src/TurbulenceModels/phaseIncompressible/RAS/mixtureKEpsilon/mixtureKEpsilon.C @@ -380,7 +380,7 @@ tmp mixtureKEpsilon::Ct2() const volScalarField beta ( (6*this->Cmu_/(4*sqrt(3.0/2.0))) - *alphag*fluid.drag(gas).K()/liquid.rho() + *fluid.drag(gas).K()/liquid.rho() *(liquidTurbulence.k_/liquidTurbulence.epsilon_) ); volScalarField Ct0((3 + beta)/(1 + beta + 2*gas.rho()/liquid.rho())); @@ -488,10 +488,10 @@ tmp mixtureKEpsilon::bubbleG() const tmp bubbleG ( Cp_ - *sqr(liquid)*liquid.rho() + *liquid*liquid.rho() *( pow3(magUr) - + pow(fluid.drag(gas).K()*gas.d()/liquid.rho(), 4.0/3.0) + + pow(fluid.drag(gas).CdRe()*liquid.nu()/gas.d(), 4.0/3.0) *pow(magUr, 5.0/3.0) ) *gas @@ -501,7 +501,7 @@ tmp mixtureKEpsilon::bubbleG() const // Simple model // tmp bubbleG // ( - // Cp_*sqr(liquid)*gas*fluid.drag(gas).K()*sqr(magUr) + // Cp_*liquid*fluid.drag(gas).K()*sqr(magUr) // ); return bubbleG; From 8b9a35d3e261e086c5fa20b55bdd2ccf500140c8 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 20 Mar 2014 11:02:51 +0000 Subject: [PATCH 2/8] ENH: Updated ACMI to allow fully disconnected regions --- .../AMIInterpolation/AMIInterpolation.C | 53 ++++++++++++------- .../AMIInterpolation/AMIInterpolation.H | 6 +++ .../AMIMethod/AMIMethod/AMIMethod.C | 34 ++++++++---- .../AMIMethod/AMIMethod/AMIMethod.H | 25 +++++++-- .../AMIMethod/AMIMethod/AMIMethodNew.C | 9 ++-- .../AMIMethod/directAMI/directAMI.C | 8 +-- .../AMIMethod/directAMI/directAMI.H | 5 +- .../faceAreaWeightAMI/faceAreaWeightAMI.C | 4 +- .../faceAreaWeightAMI/faceAreaWeightAMI.H | 3 +- .../AMIMethod/mapNearestAMI/mapNearestAMI.C | 6 ++- .../AMIMethod/mapNearestAMI/mapNearestAMI.H | 5 +- .../partialFaceAreaWeightAMI.C | 8 +-- .../partialFaceAreaWeightAMI.H | 5 +- .../cyclicACMIPolyPatch/cyclicACMIPolyPatch.C | 12 ++++- .../cyclicAMIPolyPatch/cyclicAMIPolyPatch.C | 6 +++ .../cyclicAMIPolyPatch/cyclicAMIPolyPatch.H | 39 +++++++------- .../mappedPolyPatch/mappedPatchBase.C | 1 + .../regionCoupledBase.C | 1 + .../regionModel/regionModel/regionModel.C | 2 + .../meshToMesh/meshToMesh.C | 1 + 20 files changed, 162 insertions(+), 71 deletions(-) diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C index 3dd2863e..cd586639 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.C @@ -206,32 +206,40 @@ void Foam::AMIInterpolation::normaliseWeights ) { // Normalise the weights - wghtSum.setSize(wght.size()); + wghtSum.setSize(wght.size(), 0.0); label nLowWeight = 0; forAll(wght, faceI) { scalarList& w = wght[faceI]; - scalar denom = patchAreas[faceI]; - scalar s = sum(w); - scalar t = s/denom; - - if (conformal) + if (w.size()) { - denom = s; + scalar denom = patchAreas[faceI]; + + scalar s = sum(w); + scalar t = s/denom; + + if (conformal) + { + denom = s; + } + + forAll(w, i) + { + w[i] /= denom; + } + + wghtSum[faceI] = t; + + if (t < lowWeightTol) + { + nLowWeight++; + } } - - forAll(w, i) + else { - w[i] /= denom; - } - - wghtSum[faceI] = t; - - if (t < lowWeightTol) - { - nLowWeight++; + wghtSum[faceI] = 0; } } @@ -534,6 +542,7 @@ Foam::AMIInterpolation::AMIInterpolation const SourcePatch& srcPatch, const TargetPatch& tgtPatch, const faceAreaIntersect::triangulationMode& triMode, + const bool requireMatch, const interpolationMethod& method, const scalar lowWeightCorrection, const bool reverseTarget @@ -541,6 +550,7 @@ Foam::AMIInterpolation::AMIInterpolation : method_(method), reverseTarget_(reverseTarget), + requireMatch_(requireMatch), singlePatchProc_(-999), lowWeightCorrection_(lowWeightCorrection), srcAddress_(), @@ -564,6 +574,7 @@ Foam::AMIInterpolation::AMIInterpolation const TargetPatch& tgtPatch, const autoPtr& surfPtr, const faceAreaIntersect::triangulationMode& triMode, + const bool requireMatch, const interpolationMethod& method, const scalar lowWeightCorrection, const bool reverseTarget @@ -571,6 +582,7 @@ Foam::AMIInterpolation::AMIInterpolation : method_(method), reverseTarget_(reverseTarget), + requireMatch_(requireMatch), singlePatchProc_(-999), lowWeightCorrection_(lowWeightCorrection), srcAddress_(), @@ -654,6 +666,7 @@ Foam::AMIInterpolation::AMIInterpolation : method_(fineAMI.method_), reverseTarget_(fineAMI.reverseTarget_), + requireMatch_(fineAMI.requireMatch_), singlePatchProc_(fineAMI.singlePatchProc_), lowWeightCorrection_(-1.0), srcAddress_(), @@ -862,7 +875,8 @@ void Foam::AMIInterpolation::update srcMagSf_, tgtMagSf_, triMode_, - reverseTarget_ + reverseTarget_, + requireMatch_ ) ); @@ -978,7 +992,8 @@ void Foam::AMIInterpolation::update srcMagSf_, tgtMagSf_, triMode_, - reverseTarget_ + reverseTarget_, + requireMatch_ ) ); diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.H b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.H index a8193358..7dbacd9e 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.H +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIInterpolation.H @@ -116,6 +116,10 @@ private: // that the orientation of the target patch should be reversed const bool reverseTarget_; + //- Flag to indicate that the two patches must be matched/an overlap + // exists between them + const bool requireMatch_; + //- Index of processor that holds all of both sides. -1 in all other // cases label singlePatchProc_; @@ -276,6 +280,7 @@ public: const SourcePatch& srcPatch, const TargetPatch& tgtPatch, const faceAreaIntersect::triangulationMode& triMode, + const bool requireMatch = true, const interpolationMethod& method = imFaceAreaWeight, const scalar lowWeightCorrection = -1, const bool reverseTarget = false @@ -288,6 +293,7 @@ public: const TargetPatch& tgtPatch, const autoPtr& surf, const faceAreaIntersect::triangulationMode& triMode, + const bool requireMatch = true, const interpolationMethod& method = imFaceAreaWeight, const scalar lowWeightCorrection = -1, const bool reverseTarget = false diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethod.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethod.C index eb9406c5..292d8167 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethod.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethod.C @@ -98,6 +98,10 @@ bool Foam::AMIMethod::initialise ( "void Foam::AMIMethod::initialise" "(" + "labelListList&, " + "scalarListList&, " + "labelListList&, " + "scalarListList&, " "label&, " "label&" ")" @@ -129,14 +133,24 @@ bool Foam::AMIMethod::initialise if (!foundFace) { - FatalErrorIn - ( - "void Foam::AMIMethod::initialise" - "(" - "label&, " - "label&" - ")" - ) << "Unable to find initial target face" << abort(FatalError); + if (requireMatch_) + { + FatalErrorIn + ( + "void Foam::AMIMethod::initialise" + "(" + "labelListList&, " + "scalarListList&, " + "labelListList&, " + "scalarListList&, " + "label&, " + "label&" + ")" + ) << "Unable to find initial target face" + << abort(FatalError); + } + + return false; } } @@ -327,12 +341,14 @@ Foam::AMIMethod::AMIMethod const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget + const bool reverseTarget, + const bool requireMatch ) : srcPatch_(srcPatch), tgtPatch_(tgtPatch), reverseTarget_(reverseTarget), + requireMatch_(requireMatch), srcMagSf_(srcMagSf), tgtMagSf_(tgtMagSf), srcNonOverlap_(), diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethod.H b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethod.H index 673a695a..06afc1a2 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethod.H +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethod.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -85,6 +85,10 @@ protected: // that the orientation of the target patch should be reversed const bool reverseTarget_; + //- Flag to indicate that the two patches must be matched/an overlap + // exists between them + const bool requireMatch_; + //- Source face areas const scalarField& srcMagSf_; @@ -166,9 +170,18 @@ public: const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget + const bool reverseTarget, + const bool requireMatch ), - (srcPatch, tgtPatch, srcMagSf, tgtMagSf, triMode, reverseTarget) + ( + srcPatch, + tgtPatch, + srcMagSf, + tgtMagSf, + triMode, + reverseTarget, + requireMatch + ) ); //- Construct from components @@ -179,7 +192,8 @@ public: const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget + const bool reverseTarget, + const bool requireMatch ); //- Selector @@ -191,7 +205,8 @@ public: const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget + const bool reverseTarget, + const bool requireMatch ); diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethodNew.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethodNew.C index 39cc1d3f..d06294d5 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethodNew.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/AMIMethod/AMIMethodNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -35,7 +35,8 @@ Foam::AMIMethod::New const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget + const bool reverseTarget, + const bool requireMatch ) { if (debug) @@ -58,6 +59,7 @@ Foam::AMIMethod::New "const scalarField&, " "const scalarField&, " "const faceAreaIntersect::triangulationMode&, " + "const bool, " "const bool" ")" ) << "Unknown AMIMethod type " @@ -75,7 +77,8 @@ Foam::AMIMethod::New srcMagSf, tgtMagSf, triMode, - reverseTarget + reverseTarget, + requireMatch ) ); } diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/directAMI/directAMI.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/directAMI/directAMI.C index fa5d0b73..70673d31 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/directAMI/directAMI.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/directAMI/directAMI.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -106,7 +106,8 @@ Foam::directAMI::directAMI const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget + const bool reverseTarget, + const bool requireMatch ) : AMIMethod @@ -116,7 +117,8 @@ Foam::directAMI::directAMI srcMagSf, tgtMagSf, triMode, - reverseTarget + reverseTarget, + requireMatch ) {} diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/directAMI/directAMI.H b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/directAMI/directAMI.H index e7842ff9..dc273c79 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/directAMI/directAMI.H +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/directAMI/directAMI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -102,7 +102,8 @@ public: const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget = false + const bool reverseTarget = false, + const bool requireMatch = true ); diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.C index 05dcd1e2..d9cfb840 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.C @@ -482,6 +482,7 @@ Foam::faceAreaWeightAMI::faceAreaWeightAMI const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, const bool reverseTarget, + const bool requireMatch, const bool restartUncoveredSourceFace ) : @@ -492,7 +493,8 @@ Foam::faceAreaWeightAMI::faceAreaWeightAMI srcMagSf, tgtMagSf, triMode, - reverseTarget + reverseTarget, + requireMatch ), restartUncoveredSourceFace_(restartUncoveredSourceFace) {} diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.H b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.H index d1a48a54..2d1b5520 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.H +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/faceAreaWeightAMI/faceAreaWeightAMI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -144,6 +144,7 @@ public: const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, const bool reverseTarget = false, + const bool requireMatch = true, const bool restartUncoveredSourceFace = true ); diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/mapNearestAMI/mapNearestAMI.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/mapNearestAMI/mapNearestAMI.C index be6f590f..59d8c5cd 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/mapNearestAMI/mapNearestAMI.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/mapNearestAMI/mapNearestAMI.C @@ -183,7 +183,8 @@ Foam::mapNearestAMI::mapNearestAMI const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget + const bool reverseTarget, + const bool requireMatch ) : AMIMethod @@ -193,7 +194,8 @@ Foam::mapNearestAMI::mapNearestAMI srcMagSf, tgtMagSf, triMode, - reverseTarget + reverseTarget, + requireMatch ) {} diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/mapNearestAMI/mapNearestAMI.H b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/mapNearestAMI/mapNearestAMI.H index 0daf2666..86d8c615 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/mapNearestAMI/mapNearestAMI.H +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/mapNearestAMI/mapNearestAMI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -116,7 +116,8 @@ public: const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget = false + const bool reverseTarget = false, + const bool requireMatch = true ); diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/partialFaceAreaWeightAMI/partialFaceAreaWeightAMI.C b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/partialFaceAreaWeightAMI/partialFaceAreaWeightAMI.C index ad0f6376..4eddbe63 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/partialFaceAreaWeightAMI/partialFaceAreaWeightAMI.C +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/partialFaceAreaWeightAMI/partialFaceAreaWeightAMI.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,7 +63,8 @@ partialFaceAreaWeightAMI const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget + const bool reverseTarget, + const bool requireMatch ) : faceAreaWeightAMI @@ -73,7 +74,8 @@ partialFaceAreaWeightAMI srcMagSf, tgtMagSf, triMode, - reverseTarget + reverseTarget, + requireMatch ) {} diff --git a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/partialFaceAreaWeightAMI/partialFaceAreaWeightAMI.H b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/partialFaceAreaWeightAMI/partialFaceAreaWeightAMI.H index 4fd0ea24..de8afcf0 100644 --- a/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/partialFaceAreaWeightAMI/partialFaceAreaWeightAMI.H +++ b/src/meshTools/AMIInterpolation/AMIInterpolation/AMIMethod/partialFaceAreaWeightAMI/partialFaceAreaWeightAMI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -93,7 +93,8 @@ public: const scalarField& srcMagSf, const scalarField& tgtMagSf, const faceAreaIntersect::triangulationMode& triMode, - const bool reverseTarget = false + const bool reverseTarget = false, + const bool requireMatch = true ); diff --git a/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPolyPatch/cyclicACMIPolyPatch.C b/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPolyPatch/cyclicACMIPolyPatch.C index f8fdacbd..426eb5ce 100644 --- a/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPolyPatch/cyclicACMIPolyPatch.C +++ b/src/meshTools/AMIInterpolation/patches/cyclicACMI/cyclicACMIPolyPatch/cyclicACMIPolyPatch.C @@ -208,6 +208,8 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch tgtMask_(), updated_(false) { + AMIRequireMatch_ = false; + // Non-overlapping patch might not be valid yet so cannot determine // associated patchID } @@ -230,6 +232,8 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch tgtMask_(), updated_(false) { + AMIRequireMatch_ = false; + if (nonOverlapPatchName_ == name) { FatalIOErrorIn @@ -267,6 +271,8 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch tgtMask_(), updated_(false) { + AMIRequireMatch_ = false; + // Non-overlapping patch might not be valid yet so cannot determine // associated patchID } @@ -291,6 +297,8 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch tgtMask_(), updated_(false) { + AMIRequireMatch_ = false; + if (nonOverlapPatchName_ == name()) { FatalErrorIn @@ -328,7 +336,9 @@ Foam::cyclicACMIPolyPatch::cyclicACMIPolyPatch srcMask_(), tgtMask_(), updated_(false) -{} +{ + AMIRequireMatch_ = false; +} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // diff --git a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C index b8284d43..8c41bc6b 100644 --- a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C +++ b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C @@ -388,6 +388,7 @@ void Foam::cyclicAMIPolyPatch::resetAMI nbrPatch0, surfPtr(), faceAreaIntersect::tmMesh, + AMIRequireMatch_, AMIMethod, AMILowWeightCorrection_, AMIReverse_ @@ -501,6 +502,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch separationVector_(vector::zero), AMIPtr_(NULL), AMIReverse_(false), + AMIRequireMatch_(true), AMILowWeightCorrection_(-1.0), surfPtr_(NULL), surfDict_(fileName("surface")) @@ -530,6 +532,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch separationVector_(vector::zero), AMIPtr_(NULL), AMIReverse_(dict.lookupOrDefault("flipNormals", false)), + AMIRequireMatch_(true), AMILowWeightCorrection_(dict.lookupOrDefault("lowWeightCorrection", -1.0)), surfPtr_(NULL), surfDict_(dict.subOrEmptyDict("surface")) @@ -639,6 +642,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch separationVector_(pp.separationVector_), AMIPtr_(NULL), AMIReverse_(pp.AMIReverse_), + AMIRequireMatch_(pp.AMIRequireMatch_), AMILowWeightCorrection_(pp.AMILowWeightCorrection_), surfPtr_(NULL), surfDict_(pp.surfDict_) @@ -669,6 +673,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch separationVector_(pp.separationVector_), AMIPtr_(NULL), AMIReverse_(pp.AMIReverse_), + AMIRequireMatch_(pp.AMIRequireMatch_), AMILowWeightCorrection_(pp.AMILowWeightCorrection_), surfPtr_(NULL), surfDict_(pp.surfDict_) @@ -713,6 +718,7 @@ Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch separationVector_(pp.separationVector_), AMIPtr_(NULL), AMIReverse_(pp.AMIReverse_), + AMIRequireMatch_(pp.AMIRequireMatch_), AMILowWeightCorrection_(pp.AMILowWeightCorrection_), surfPtr_(NULL), surfDict_(pp.surfDict_) diff --git a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.H b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.H index c9c0055a..40cfc95e 100644 --- a/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.H +++ b/src/meshTools/AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.H @@ -56,7 +56,24 @@ class cyclicAMIPolyPatch private: - // Private data + // Private Member Functions + + //- Return normal of face at max distance from rotation axis + vector findFaceNormalMaxRadius(const pointField& faceCentres) const; + + void calcTransforms + ( + const primitivePatch& half0, + const pointField& half0Ctrs, + const vectorField& half0Areas, + const pointField& half1Ctrs, + const vectorField& half1Areas + ); + + +protected: + + // Protected data //- Name of other half mutable word nbrPatchName_; @@ -97,6 +114,9 @@ private: //- Flag to indicate that slave patch should be reversed for AMI const bool AMIReverse_; + //- Flag to indicate that patches should match/overlap + bool AMIRequireMatch_; + //- Low weight correction threshold for AMI const scalar AMILowWeightCorrection_; @@ -107,23 +127,6 @@ private: const dictionary surfDict_; - // Private Member Functions - - //- Return normal of face at max distance from rotation axis - vector findFaceNormalMaxRadius(const pointField& faceCentres) const; - - void calcTransforms - ( - const primitivePatch& half0, - const pointField& half0Ctrs, - const vectorField& half0Areas, - const pointField& half1Ctrs, - const vectorField& half1Areas - ); - - -protected: - // Protected Member Functions //- Reset the AMI interpolator diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C index d4e15763..6ab8930a 100644 --- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C +++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C @@ -836,6 +836,7 @@ void Foam::mappedPatchBase::calcAMI() const samplePolyPatch(), // nbrPatch0, surfPtr(), faceAreaIntersect::tmMesh, + true, AMIPatchToPatchInterpolation::imFaceAreaWeight, -1, AMIReverse_ diff --git a/src/meshTools/regionCoupled/patches/regionCoupledPolyPatch/regionCoupledBase.C b/src/meshTools/regionCoupled/patches/regionCoupledPolyPatch/regionCoupledBase.C index 224a104c..a18e83da 100644 --- a/src/meshTools/regionCoupled/patches/regionCoupledPolyPatch/regionCoupledBase.C +++ b/src/meshTools/regionCoupled/patches/regionCoupledPolyPatch/regionCoupledBase.C @@ -91,6 +91,7 @@ void Foam::regionCoupledBase::resetAMI() const nbrPatch0, surfPtr(), faceAreaIntersect::tmMesh, + true, AMIPatchToPatchInterpolation::imFaceAreaWeight, -1, AMIReverse_ diff --git a/src/regionModels/regionModel/regionModel/regionModel.C b/src/regionModels/regionModel/regionModel/regionModel.C index 5e147d22..46eae955 100644 --- a/src/regionModels/regionModel/regionModel/regionModel.C +++ b/src/regionModels/regionModel/regionModel/regionModel.C @@ -242,6 +242,7 @@ Foam::regionModels::regionModel::interRegionAMI p, nbrP, faceAreaIntersect::tmMesh, + true, AMIPatchToPatchInterpolation::imFaceAreaWeight, -1, flip @@ -284,6 +285,7 @@ Foam::regionModels::regionModel::interRegionAMI p, nbrP, faceAreaIntersect::tmMesh, + true, AMIPatchToPatchInterpolation::imFaceAreaWeight, -1, flip diff --git a/src/sampling/meshToMeshInterpolation/meshToMesh/meshToMesh.C b/src/sampling/meshToMeshInterpolation/meshToMesh/meshToMesh.C index eebb219a..2b2b7e97 100644 --- a/src/sampling/meshToMeshInterpolation/meshToMesh/meshToMesh.C +++ b/src/sampling/meshToMeshInterpolation/meshToMesh/meshToMesh.C @@ -419,6 +419,7 @@ Foam::meshToMesh::patchAMIs() const srcPP, tgtPP, faceAreaIntersect::tmMesh, + false, interpolationMethodAMI(method_), -1, true // flip target patch since patch normals are aligned From 45caaf4d106ad5abb951acc63225248b2791a6d2 Mon Sep 17 00:00:00 2001 From: sergio Date: Thu, 20 Mar 2014 11:26:39 +0000 Subject: [PATCH 3/8] ENh: Adding access to diffusion model and make constructor from mesh and dictionary make to read solver type from the dictionary instead of typeName --- .../SBRStress/displacementSBRStressFvMotionSolver.C | 4 ++-- .../SBRStress/displacementSBRStressFvMotionSolver.H | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C index 04edda45..fdef885a 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -57,7 +57,7 @@ Foam::displacementSBRStressFvMotionSolver::displacementSBRStressFvMotionSolver const IOdictionary& dict ) : - displacementMotionSolver(mesh, dict, typeName), + displacementMotionSolver(mesh, dict, dict.lookup("solver")), fvMotionSolverCore(mesh), cellDisplacement_ ( diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H index 6d31eec0..566a9868 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -111,6 +111,12 @@ public: return cellDisplacement_; } + //- Return diffusivity + motionDiffusivity& diffusivity() + { + return diffusivityPtr_(); + } + //- Return point location obtained from the current motion field virtual tmp curPoints() const; From ff060c23a3770e3348b6fb5434ca2b826499447b Mon Sep 17 00:00:00 2001 From: william Date: Thu, 20 Mar 2014 11:56:27 +0000 Subject: [PATCH 4/8] ENH: twoPhaseEulerFoam: cached some fields in the kinetic theory model for lookup elsewhere --- .../kineticTheoryModel/kineticTheoryModel.C | 61 +++++++++++++------ .../kineticTheoryModel/kineticTheoryModel.H | 6 ++ 2 files changed, 50 insertions(+), 17 deletions(-) diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C index 20428f9c..29baaf9c 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C @@ -132,6 +132,34 @@ Foam::RASModels::kineticTheoryModel::kineticTheoryModel ), U.mesh(), dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0) + ), + + gs0_ + ( + IOobject + ( + IOobject::groupName("gs0", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + U.mesh(), + dimensionedScalar("zero", dimensionSet(0, 0, 0, 0, 0), 0.0) + ), + + kappa_ + ( + IOobject + ( + IOobject::groupName("kappa", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + U.mesh(), + dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0) ) { if (type == typeName) @@ -371,17 +399,17 @@ void Foam::RASModels::kineticTheoryModel::correct() volSymmTensorField D(symm(gradU)); // Calculating the radial distribution function - volScalarField gs0(radialModel_->g0(alpha, alphaMinFriction_, alphaMax_)); + gs0_ = radialModel_->g0(alpha, alphaMinFriction_, alphaMax_); if (!equilibrium_) { // particle viscosity (Table 3.2, p.47) - nut_ = viscosityModel_->nu(alpha, Theta_, gs0, rho, da, e_); + nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_); volScalarField ThetaSqrt(sqrt(Theta_)); // Bulk viscosity p. 45 (Lun et al. 1984). - lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0*(1.0 + e_)*ThetaSqrt/sqrtPi; + lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi; // Stress tensor, Definitions, Table 3.1, p. 43 volSymmTensorField tau(2.0*nut_*D + (lambda_ - (2.0/3.0)*nut_)*tr(D)*I); @@ -391,7 +419,7 @@ void Foam::RASModels::kineticTheoryModel::correct() ( 12.0*(1.0 - sqr(e_)) *max(sqr(alpha), residualAlpha_) - *gs0*(1.0/da)*ThetaSqrt/sqrtPi + *gs0_*(1.0/da)*ThetaSqrt/sqrtPi ); // NB, drag = K*alpha*alpha2, @@ -426,17 +454,14 @@ void Foam::RASModels::kineticTheoryModel::correct() granularPressureModel_->granularPressureCoeff ( alpha, - gs0, + gs0_, rho, e_ )/rho ); // 'thermal' conductivity (Table 3.3, p. 49) - volScalarField kappa - ( - conductivityModel_->kappa(alpha, Theta_, gs0, rho, da, e_) - ); + kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_); // Construct the granular temperature equation (Eq. 3.20, p. 44) // NB. note that there are two typos in Eq. 3.20: @@ -450,7 +475,7 @@ void Foam::RASModels::kineticTheoryModel::correct() + fvm::div(alphaPhi, Theta_) - fvc::Sp(fvc::ddt(alpha) + fvc::div(alphaPhi), Theta_) ) - - fvm::laplacian(kappa, Theta_, "laplacian(kappa, Theta)") + - fvm::laplacian(kappa_, Theta_, "laplacian(kappa, Theta)") == fvm::SuSp(-((PsCoeff*I) && gradU), Theta_) + (tau && gradU) @@ -466,23 +491,23 @@ void Foam::RASModels::kineticTheoryModel::correct() { // Equilibrium => dissipation == production // Eq. 4.14, p.82 - volScalarField K1(2.0*(1.0 + e_)*rho*gs0); + volScalarField K1(2.0*(1.0 + e_)*rho*gs0_); volScalarField K3 ( 0.5*da*rho* ( (sqrtPi/(3.0*(3.0-e_))) - *(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha*gs0) - +1.6*alpha*gs0*(1.0 + e_)/sqrtPi + *(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha*gs0_) + +1.6*alpha*gs0_*(1.0 + e_)/sqrtPi ) ); volScalarField K2 ( - 4.0*da*rho*(1.0 + e_)*alpha*gs0/(3.0*sqrtPi) - 2.0*K3/3.0 + 4.0*da*rho*(1.0 + e_)*alpha*gs0_/(3.0*sqrtPi) - 2.0*K3/3.0 ); - volScalarField K4(12.0*(1.0 - sqr(e_))*rho*gs0/(da*sqrtPi)); + volScalarField K4(12.0*(1.0 - sqr(e_))*rho*gs0_/(da*sqrtPi)); volScalarField trD ( @@ -508,6 +533,8 @@ void Foam::RASModels::kineticTheoryModel::correct() (l1 + sqrt(l2 + l3)) /(2.0*max(alpha, residualAlpha_)*K4) ); + + kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_); } Theta_.max(0); @@ -515,12 +542,12 @@ void Foam::RASModels::kineticTheoryModel::correct() { // particle viscosity (Table 3.2, p.47) - nut_ = viscosityModel_->nu(alpha, Theta_, gs0, rho, da, e_); + nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_); volScalarField ThetaSqrt(sqrt(Theta_)); // Bulk viscosity p. 45 (Lun et al. 1984). - lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0*(1.0 + e_)*ThetaSqrt/sqrtPi; + lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi; // Frictional pressure volScalarField pf diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H index a24b5aaa..28386be1 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H @@ -128,6 +128,12 @@ class kineticTheoryModel //- The granular bulk viscosity volScalarField lambda_; + //- The granular radial distribution + volScalarField gs0_; + + //- The granular "thermal" conductivity + volScalarField kappa_; + // Private Member Functions From 283f1c2981ac3f1f34b4e7919303ff0a66f77256 Mon Sep 17 00:00:00 2001 From: sergio Date: Thu, 20 Mar 2014 15:32:31 +0000 Subject: [PATCH 5/8] BUG: Correct addIntensity function for radiativeIntensityRay for grey and wide band absorption model --- .../radiativeIntensityRay/radiativeIntensityRay.C | 4 ++-- .../absorptionEmissionModel.C | 13 +------------ .../absorptionEmissionModel.H | 9 +-------- .../wideBandAbsorptionEmission.C | 12 +----------- .../wideBandAbsorptionEmission.H | 11 ++--------- 5 files changed, 7 insertions(+), 42 deletions(-) diff --git a/src/thermophysicalModels/radiationModels/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C b/src/thermophysicalModels/radiationModels/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C index 28644026..f2bcf8a4 100644 --- a/src/thermophysicalModels/radiationModels/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C +++ b/src/thermophysicalModels/radiationModels/radiationModel/fvDOM/radiativeIntensityRay/radiativeIntensityRay.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -270,7 +270,7 @@ void Foam::radiation::radiativeIntensityRay::addIntensity() forAll(ILambda_, lambdaI) { - I_ += absorptionEmission_.addIntensity(lambdaI, ILambda_[lambdaI]); + I_ += ILambda_[lambdaI]; } } diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.C b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.C index 563b4672..602bd3e9 100644 --- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.C +++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -235,17 +235,6 @@ bool Foam::radiation::absorptionEmissionModel::isGrey() const } -Foam::tmp -Foam::radiation::absorptionEmissionModel::addIntensity -( - const label rayI, - const volScalarField& ILambda -) const -{ - return ILambda; -} - - void Foam::radiation::absorptionEmissionModel::correct ( volScalarField& a, diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.H b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.H index dc6c3777..902ebc18 100644 --- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.H +++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -170,13 +170,6 @@ public: //- Flag for whether the absorption/emission is for a grey gas virtual bool isGrey() const; - //- Add radiative intensity for ray i - virtual tmp addIntensity - ( - const label rayI, - const volScalarField& ILambda - ) const; - //- Correct absorption coefficients virtual void correct ( diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C index 230fb033..a1bf1cc0 100644 --- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C +++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -293,16 +293,6 @@ Foam::radiation::wideBandAbsorptionEmission::ECont(const label bandI) const return E; } -Foam::tmp -Foam::radiation::wideBandAbsorptionEmission::addIntensity -( - const label i, - const volScalarField& ILambda -) const -{ - return ILambda*(iBands_[i][1] - iBands_[i][0])/totalWaveLength_; -} - void Foam::radiation::wideBandAbsorptionEmission::correct ( diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H index 1fe02beb..629fa173 100644 --- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H +++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -227,14 +227,7 @@ public: return iBands_[i]; } - //- Add contribution of ILambda to the total radiative intensity in - // direction i - tmp addIntensity - ( - const label i, - const volScalarField& ILambda - ) const; - + //- Correct rays void correct ( volScalarField& a_, From 06a64fa8cd07edfe7e3d7565f0b444b69bf7cb03 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 20 Mar 2014 16:33:27 +0000 Subject: [PATCH 6/8] New BC to approximate the motion of a patch by setting the equivalent inflow/outflow --- ...malInletOutletVelocityFvPatchVectorField.C | 218 +++++++++++++++ ...malInletOutletVelocityFvPatchVectorField.H | 248 ++++++++++++++++++ 2 files changed, 466 insertions(+) create mode 100644 src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.C create mode 100644 src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.H diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.C new file mode 100644 index 00000000..f45f9893 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.C @@ -0,0 +1,218 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "fixedNormalInletOutletVelocityFvPatchVectorField.H" +#include "addToRunTimeSelectionTable.H" +#include "volFields.H" +#include "surfaceFields.H" + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::fixedNormalInletOutletVelocityFvPatchVectorField:: +fixedNormalInletOutletVelocityFvPatchVectorField +( + const fvPatch& p, + const DimensionedField& iF +) +: + directionMixedFvPatchVectorField(p, iF), + phiName_("phi"), + fixTangentialInflow_(true), + normalVelocity_ + ( + fvPatchVectorField::New("fixedValue", p, iF) + ) +{ + refValue() = vector::zero; + refGrad() = vector::zero; + valueFraction() = symmTensor::zero; +} + + +Foam::fixedNormalInletOutletVelocityFvPatchVectorField:: +fixedNormalInletOutletVelocityFvPatchVectorField +( + const fixedNormalInletOutletVelocityFvPatchVectorField& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + directionMixedFvPatchVectorField(ptf, p, iF, mapper), + phiName_(ptf.phiName_), + fixTangentialInflow_(ptf.fixTangentialInflow_), + normalVelocity_ + ( + fvPatchVectorField::New(ptf.normalVelocity(), p, iF, mapper) + ) +{} + + +Foam::fixedNormalInletOutletVelocityFvPatchVectorField:: +fixedNormalInletOutletVelocityFvPatchVectorField +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + directionMixedFvPatchVectorField(p, iF), + phiName_(dict.lookupOrDefault("phi", "phi")), + fixTangentialInflow_(dict.lookup("fixTangentialInflow")), + normalVelocity_ + ( + fvPatchVectorField::New(p, iF, dict.subDict("normalVelocity")) + ) +{ + fvPatchVectorField::operator=(vectorField("value", dict, p.size())); + refValue() = normalVelocity(); + refGrad() = vector::zero; + valueFraction() = symmTensor::zero; +} + + +Foam::fixedNormalInletOutletVelocityFvPatchVectorField:: +fixedNormalInletOutletVelocityFvPatchVectorField +( + const fixedNormalInletOutletVelocityFvPatchVectorField& pivpvf +) +: + directionMixedFvPatchVectorField(pivpvf), + phiName_(pivpvf.phiName_), + fixTangentialInflow_(pivpvf.fixTangentialInflow_), + normalVelocity_(pivpvf.normalVelocity().clone()) +{} + + +Foam::fixedNormalInletOutletVelocityFvPatchVectorField:: +fixedNormalInletOutletVelocityFvPatchVectorField +( + const fixedNormalInletOutletVelocityFvPatchVectorField& pivpvf, + const DimensionedField& iF +) +: + directionMixedFvPatchVectorField(pivpvf, iF), + phiName_(pivpvf.phiName_), + fixTangentialInflow_(pivpvf.fixTangentialInflow_), + normalVelocity_(pivpvf.normalVelocity().clone()) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::fixedNormalInletOutletVelocityFvPatchVectorField::autoMap +( + const fvPatchFieldMapper& m +) +{ + directionMixedFvPatchVectorField::autoMap(m); + normalVelocity_->autoMap(m); +} + + +void Foam::fixedNormalInletOutletVelocityFvPatchVectorField::rmap +( + const fvPatchVectorField& ptf, + const labelList& addr +) +{ + directionMixedFvPatchVectorField::rmap(ptf, addr); + + const fixedNormalInletOutletVelocityFvPatchVectorField& fniovptf = + refCast(ptf); + + normalVelocity_->rmap(fniovptf.normalVelocity(), addr); +} + + +void Foam::fixedNormalInletOutletVelocityFvPatchVectorField::updateCoeffs() +{ + if (updated()) + { + return; + } + + normalVelocity_->evaluate(); + refValue() = normalVelocity(); + + valueFraction() = sqr(patch().nf()); + + if (fixTangentialInflow_) + { + const fvsPatchField& phip = + patch().lookupPatchField(phiName_); + + valueFraction() += neg(phip)*(I - valueFraction()); + } + + directionMixedFvPatchVectorField::updateCoeffs(); + directionMixedFvPatchVectorField::evaluate(); +} + + +void Foam::fixedNormalInletOutletVelocityFvPatchVectorField::write +( + Ostream& os +) +const +{ + fvPatchVectorField::write(os); + writeEntryIfDifferent(os, "phi", "phi", phiName_); + os.writeKeyword("fixTangentialInflow") + << fixTangentialInflow_ << token::END_STATEMENT << nl; + os.writeKeyword("normalVelocity") + << nl << indent << token::BEGIN_BLOCK << nl << incrIndent; + normalVelocity_->write(os); + os << decrIndent << indent << token::END_BLOCK << endl; + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // + +void Foam::fixedNormalInletOutletVelocityFvPatchVectorField::operator= +( + const fvPatchField& pvf +) +{ + tmp normalValue = transform(valueFraction(), refValue()); + tmp transformGradValue = transform(I - valueFraction(), pvf); + fvPatchField::operator=(normalValue + transformGradValue); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchVectorField, + fixedNormalInletOutletVelocityFvPatchVectorField + ); +} + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.H new file mode 100644 index 00000000..6d6bb2e7 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.H @@ -0,0 +1,248 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + Foam::fixedNormalInletOutletVelocityFvPatchVectorField + +Group + grpInletletBoundaryConditions grpOutletBoundaryConditions + +Description + + This velocity inlet/outlet boundary condition combines a fixed normal + component obtained from the "normalVelocity" patchField supplied with a + fixed or zero-gradiented tangential component depending on the direction + of the flow and the setting of "fixTangentialInflow": + - Outflow: apply zero-gradient condition to tangential components + - Inflow: + - fixTangentialInflow is true + apply value provided by the normalVelocity patchField to the + tangential components + - fixTangentialInflow is false + apply zero-gradient condition to tangential components. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + fixTangentialInflow | If true fix the tangential component for inflow | yes | + normalVelocity | patchField providing the normal velocity field | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fixedNormalInletOutletVelocity; + + fixTangentialInflow false; + normalVelocity + { + type oscillatingFixedValue; + refValue uniform (0 1 0); + offset (0 -1 0); + amplitude table + ( + ( 0 0) + ( 2 0.088) + ( 8 0.088) + ); + frequency constant 1; + } + + value uniform (0 0 0); + } + \endverbatim + +SourceFiles + fixedNormalInletOutletVelocityFvPatchVectorField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef fixedNormalInletOutletVelocityFvPatchVectorField_H +#define fixedNormalInletOutletVelocityFvPatchVectorField_H + +#include "fvPatchFields.H" +#include "directionMixedFvPatchFields.H" +#include "Switch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class fixedNormalInletOutletVelocityFvPatchVectorField Declaration +\*---------------------------------------------------------------------------*/ + +class fixedNormalInletOutletVelocityFvPatchVectorField +: + public directionMixedFvPatchVectorField +{ + // Private data + + //- Flux field name + word phiName_; + + //- Set true to fix the tangential component for inflow + Switch fixTangentialInflow_; + + //- BC which provided the normal component of the velocity + tmp normalVelocity_; + + +public: + + //- Runtime type information + TypeName("fixedNormalInletOutletVelocity"); + + + // Constructors + + //- Construct from patch and internal field + fixedNormalInletOutletVelocityFvPatchVectorField + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + fixedNormalInletOutletVelocityFvPatchVectorField + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given + // fixedNormalInletOutletVelocityFvPatchVectorField onto a new patch + fixedNormalInletOutletVelocityFvPatchVectorField + ( + const fixedNormalInletOutletVelocityFvPatchVectorField&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + fixedNormalInletOutletVelocityFvPatchVectorField + ( + const fixedNormalInletOutletVelocityFvPatchVectorField& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new fixedNormalInletOutletVelocityFvPatchVectorField(*this) + ); + } + + //- Construct as copy setting internal field reference + fixedNormalInletOutletVelocityFvPatchVectorField + ( + const fixedNormalInletOutletVelocityFvPatchVectorField&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new fixedNormalInletOutletVelocityFvPatchVectorField(*this, iF) + ); + } + + + // Member functions + + // Access + + //- Return the name of phi + const word& phiName() const + { + return phiName_; + } + + //- Return reference to the name of phi to allow adjustment + word& phiName() + { + return phiName_; + } + + Switch fixTangentialInflow() const + { + return fixTangentialInflow_; + } + + //- Return the BC which provides the normal component of velocity + const fvPatchVectorField& normalVelocity() const + { + return normalVelocity_(); + } + + + // Mapping functions + + //- Map (and resize as needed) from self given a mapping object + virtual void autoMap + ( + const fvPatchFieldMapper& + ); + + //- Reverse map the given fvPatchField onto this fvPatchField + virtual void rmap + ( + const fvPatchVectorField&, + const labelList& + ); + + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + //- Write + virtual void write(Ostream&) const; + + + // Member operators + + virtual void operator=(const fvPatchField& pvf); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // From a53c5bead7d938373a17bdcffdf6c179f4de430e Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 20 Mar 2014 16:34:17 +0000 Subject: [PATCH 7/8] Removed unnecessary include --- .../fixedFluxPressure/fixedFluxPressureFvPatchScalarField.H | 1 - 1 file changed, 1 deletion(-) diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.H index 2f43c694..b10b932b 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.H @@ -53,7 +53,6 @@ SourceFiles #include "fvPatchFields.H" #include "fixedGradientFvPatchFields.H" -#include "Switch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // From e2343fa4d4e38bafc48d2f4ef246e787db50c95a Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 20 Mar 2014 16:34:31 +0000 Subject: [PATCH 8/8] pimpleFoam: Added support for fixedFluxPressure BC --- applications/solvers/incompressible/pimpleFoam/pEqn.H | 10 ++++++++++ .../solvers/incompressible/pimpleFoam/pimpleFoam.C | 1 + src/finiteVolume/Make/files | 1 + 3 files changed, 12 insertions(+) diff --git a/applications/solvers/incompressible/pimpleFoam/pEqn.H b/applications/solvers/incompressible/pimpleFoam/pEqn.H index 4799df09..83265f23 100644 --- a/applications/solvers/incompressible/pimpleFoam/pEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/pEqn.H @@ -19,6 +19,16 @@ fvOptions.makeRelative(phiHbyA); adjustPhi(phiHbyA, U, p); +// Update the fixedFluxPressure BCs to ensure flux consistency +setSnGrad +( + p.boundaryField(), + ( + phiHbyA.boundaryField() + - fvOptions.relative(mesh.Sf().boundaryField() & U.boundaryField()) + )/(mesh.magSf().boundaryField()*rAUf.boundaryField()) +); + // Non-orthogonal pressure corrector loop while (pimple.correctNonOrthogonal()) { diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C index de963fe3..61873f23 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C +++ b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C @@ -41,6 +41,7 @@ Description #include "fvIOoptionList.H" #include "IOporosityModelList.H" #include "IOMRFZoneList.H" +#include "fixedFluxPressureFvPatchScalarField.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index d7ea0f00..95f6101f 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -168,6 +168,7 @@ $(derivedFvPatchFields)/pressureInletOutletVelocity/pressureInletOutletVelocityF $(derivedFvPatchFields)/pressureInletUniformVelocity/pressureInletUniformVelocityFvPatchVectorField.C $(derivedFvPatchFields)/pressureInletVelocity/pressureInletVelocityFvPatchVectorField.C $(derivedFvPatchFields)/pressureNormalInletOutletVelocity/pressureNormalInletOutletVelocityFvPatchVectorField.C +$(derivedFvPatchFields)/fixedNormalInletOutletVelocity/fixedNormalInletOutletVelocityFvPatchVectorField.C $(derivedFvPatchFields)/rotatingPressureInletOutletVelocity/rotatingPressureInletOutletVelocityFvPatchVectorField.C $(derivedFvPatchFields)/rotatingTotalPressure/rotatingTotalPressureFvPatchScalarField.C $(derivedFvPatchFields)/rotatingWallVelocity/rotatingWallVelocityFvPatchVectorField.C