Commit 6cb7e80d authored by kuti's avatar kuti Committed by Andrew Heather
Browse files

ENH: FO: Lamb vector

  - If applied:
      This commit allows the user to compute:
        - the Lamb vector (https://en.wikipedia.org/wiki/Lamb_vector),
        - on-the-fly or via postProcess utility
        - for a given volVectorField (one per functionObject entry)

  - Why:
      The motivation is the literature-reported quantitative connection
      between the Lamb vector (divergence) and the spatially localised
      instantaneous fluid motions, e.g. high- and low-momentum fluid
      parcels, which possess considerable level of capacity to affect
      the rate of change of momentum, and to generate forces such as drag.

  - Verification:
      - Smooth-wall plane channel flow case (Moser et al. 1999) by
          # Curtis et al. (2008) On the Lamb vector divergence
            in Navier–Stokes flows, doi:10.1017/S0022112008002760

  - What's next:
      - The verification-show case
      - Extended code guide entry titled "Lamb vector"
parent d2826752
......@@ -60,6 +60,7 @@ ddt/ddt.C
mag/mag.C
magSqr/magSqr.C
vorticity/vorticity.C
lambVector/lambVector.C
enstrophy/enstrophy.C
Q/Q.C
Lambda2/Lambda2.C
......
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2019 OpenCFD Ltd.
\\/ 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 <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "lambVector.H"
#include "fvcCurl.H"
#include "fvcDiv.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
namespace functionObjects
{
defineTypeNameAndDebug(lambVector, 0);
addToRunTimeSelectionTable(functionObject, lambVector, dictionary);
}
}
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
bool Foam::functionObjects::lambVector::calc()
{
if (foundObject<volVectorField>(fieldName_))
{
const volVectorField& U = lookupObject<volVectorField>(fieldName_);
return store(resultName_, fvc::curl(U)^U);
}
return false;
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::functionObjects::lambVector::lambVector
(
const word& name,
const Time& runTime,
const dictionary& dict
)
:
fieldExpression(name, runTime, dict, "U")
{
setResultName(typeName, fieldName_);
}
// ************************************************************************* //
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2019 OpenCFD Ltd.
\\/ 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 <http://www.gnu.org/licenses/>.
Class
Foam::functionObjects::lambVector
Group
grpFieldFunctionObjects
Description
Calculates Lamb vector, i.e. the cross product of vorticity and velocity.
Calculation of the divergence of the Lamb vector can be performed by using
'div' functionObject on this 'lambVector' functionObject.
The field is stored on the mesh database so that it can be retrieved
and used for other applications.
Usage
\verbatim
lambVector1
{
type lambVector;
libs ("libfieldFunctionObjects.so");
field UMean;
... Base options of fieldExpression ...
}
\endverbatim
Where the entries comprise:
\table
Property | Description | Required | Default value
type | Type name: lambVector | yes |
field | Name of volVectorField | no | U
\endtable
See also
Foam::functionObjects::fieldExpression
SourceFiles
lambVector.C
\*---------------------------------------------------------------------------*/
#ifndef functionObjects_lambVector_H
#define functionObjects_lambVector_H
#include "fieldExpression.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace functionObjects
{
/*---------------------------------------------------------------------------*\
Class lambVector Declaration
\*---------------------------------------------------------------------------*/
class lambVector
:
public fieldExpression
{
// Private Member Functions
//- Calculate the lambVector field and return true if successful
virtual bool calc();
public:
//- Runtime type information
TypeName("lambVector");
// Constructors
//- Construct from Time and dictionary
lambVector
(
const word& name,
const Time& runTime,
const dictionary& dict
);
//- Destructor
virtual ~lambVector() = default;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace functionObjects
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment