From 383ae13a29159a7501fe949a598eb63f19c28f58 Mon Sep 17 00:00:00 2001 From: andy Date: Wed, 21 May 2008 14:34:58 +0100 Subject: [PATCH] added Uabs function to SRF model --- .../general/SRF/SRFModel/SRFModel/SRFModel.C | 51 +++++++++++++++++++ .../general/SRF/SRFModel/SRFModel/SRFModel.H | 3 ++ .../SRFVelocityFvPatchVectorField.H | 9 ++++ 3 files changed, 63 insertions(+) diff --git a/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.C b/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.C index 77255818e3..86a14f5c7d 100644 --- a/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.C +++ b/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.C @@ -29,6 +29,7 @@ Description \*---------------------------------------------------------------------------*/ #include "SRFModel.H" +#include "SRFVelocityFvPatchVectorField.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -190,4 +191,54 @@ Foam::tmp Foam::SRF::SRFModel::U() const } +Foam::tmp Foam::SRF::SRFModel::Uabs() const +{ + const volVectorField Usrf = U(); + + tmp tUabs + ( + new volVectorField + ( + IOobject + ( + "Uabs", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + Usrf + ) + ); + + // Add SRF contribution to internal field + tUabs().internalField() += Urel_.internalField(); + + // Add Urel boundary contributions + const volVectorField::GeometricBoundaryField& bvf = Urel_.boundaryField(); + + forAll(bvf, i) + { + if (isA(bvf[i])) + { + // Only include relative contributions from + // SRFVelocityFvPatchVectorField's + const SRFVelocityFvPatchVectorField& UrelPatch = + refCast(bvf[i]); + if (UrelPatch.relative()) + { + tUabs().boundaryField()[i] += Urel_.boundaryField()[i]; + } + } + else + { + tUabs().boundaryField()[i] += Urel_.boundaryField()[i]; + } + } + + return tUabs; +} + + // ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.H b/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.H index 4a680efa5d..df55287a12 100644 --- a/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.H +++ b/src/finiteVolume/cfdTools/general/SRF/SRFModel/SRFModel/SRFModel.H @@ -171,6 +171,9 @@ public: //- Return velocity of SRF for complete mesh tmp U() const; + + //- Return absolute velocity for complete mesh + tmp Uabs() const; }; diff --git a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.H b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.H index 9383887bcd..cd44e6baa0 100644 --- a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.H +++ b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.H @@ -132,6 +132,15 @@ public: // Member functions + // Access + + //- Return const access to the relative flag + const Switch& relative() const + { + return relative_; + } + + // Mapping functions //- Map (and resize as needed) from self given a mapping object