adding scalarIOList
[OpenFOAM-1.5.x.git] / applications / utilities / postProcessing / velocityField / flowType / flowType.C
blobfe31d71188f09918ca3a8d8d0752ec32cf4ddfc8
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software; you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation; either version 2 of the License, or (at your
14     option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Application
26     flowType
28 Description
29     Calculates and writes the flowType of velocity field U.
30     The -noWrite option has no meaning.
32     The flow type parameter is obtained according to the following equation:
33     @verbatim
34                  |D| - |Omega|
35         lambda = -------------
36                  |D| + |Omega|
38         -1 = rotational flow
39          0 = simple shear flow
40          1 = planar extensional flow
41     @endverbatim
43 \*---------------------------------------------------------------------------*/
45 #include "calc.H"
46 #include "fvc.H"
48 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50 void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh)
52     IOobject Uheader
53     (
54         "U",
55         runTime.timeName(),
56         mesh,
57         IOobject::MUST_READ
58     );
60     if (Uheader.headerOk())
61     {
62         Info<< "    Reading U" << endl;
63         volVectorField U(Uheader, mesh);
65         volTensorField gradU = fvc::grad(U);
66         volScalarField magD = mag(symm(gradU));
67         volScalarField magOmega = mag(skew(gradU));
68         dimensionedScalar smallMagD("smallMagD", magD.dimensions(), SMALL);
70         Info<< "    Calculating flowType" << endl;
72         volScalarField flowType
73         (
74             IOobject
75             (
76                 "flowType",
77                 runTime.timeName(),
78                 mesh,
79                 IOobject::NO_READ
80             ),
81             (magD - magOmega)/(magD + magOmega + smallMagD)
82         );
84         flowType.write();
85     }
86     else
87     {
88         Info<< "    No U" << endl;
89     }
93 // ************************************************************************* //