From 6a03830b05189424ccf2b923386ba8d87f7026d8 Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Thu, 9 Jun 2016 16:28:30 +0100
Subject: [PATCH] R: utility replaced by functionObject used with the
 '-postProcess' option

---
 .../postProcessing/turbulence/R/Make/files    |   4 -
 .../postProcessing/turbulence/R/Make/options  |  23 ---
 .../utilities/postProcessing/turbulence/R/R.C | 169 ------------------
 ...KineticEnergyInletFvPatchSymmTensorField.C | 115 ------------
 ...KineticEnergyInletFvPatchSymmTensorField.H | 148 ---------------
 bin/R                                         |   1 +
 etc/caseDicts/postProcessing/fields/R         |  20 +++
 .../field/turbulenceFields/turbulenceFields.C |  17 +-
 .../field/turbulenceFields/turbulenceFields.H |   2 +-
 9 files changed, 28 insertions(+), 471 deletions(-)
 delete mode 100644 applications/utilities/postProcessing/turbulence/R/Make/files
 delete mode 100644 applications/utilities/postProcessing/turbulence/R/Make/options
 delete mode 100644 applications/utilities/postProcessing/turbulence/R/R.C
 delete mode 100644 applications/utilities/postProcessing/turbulence/R/compatibilityFvPatchFields/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.C
 delete mode 100644 applications/utilities/postProcessing/turbulence/R/compatibilityFvPatchFields/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.H
 create mode 120000 bin/R
 create mode 100644 etc/caseDicts/postProcessing/fields/R

diff --git a/applications/utilities/postProcessing/turbulence/R/Make/files b/applications/utilities/postProcessing/turbulence/R/Make/files
deleted file mode 100644
index 2190c62f464..00000000000
--- a/applications/utilities/postProcessing/turbulence/R/Make/files
+++ /dev/null
@@ -1,4 +0,0 @@
-R.C
-compatibilityFvPatchFields/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.C
-
-EXE = $(FOAM_APPBIN)/R
diff --git a/applications/utilities/postProcessing/turbulence/R/Make/options b/applications/utilities/postProcessing/turbulence/R/Make/options
deleted file mode 100644
index accfb3afd5b..00000000000
--- a/applications/utilities/postProcessing/turbulence/R/Make/options
+++ /dev/null
@@ -1,23 +0,0 @@
-EXE_INC = \
-    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-    -I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
-    -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-    -I$(LIB_SRC)/transportModels \
-    -I$(LIB_SRC)/transportModels/compressible/lnInclude \
-    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-    -I$(LIB_SRC)/finiteVolume/lnInclude \
-    -I$(LIB_SRC)/meshTools/lnInclude
-
-EXE_LIBS = \
-    -lturbulenceModels \
-    -lincompressibleTurbulenceModels \
-    -lcompressibleTurbulenceModels \
-    -lincompressibleTransportModels \
-    -lcompressibleTransportModels \
-    -lfluidThermophysicalModels \
-    -lspecie \
-    -lfiniteVolume \
-    -lfvOptions \
-    -lgenericPatchFields \
-    -lmeshTools \
-    -lsampling
diff --git a/applications/utilities/postProcessing/turbulence/R/R.C b/applications/utilities/postProcessing/turbulence/R/R.C
deleted file mode 100644
index 490ae2eeb9b..00000000000
--- a/applications/utilities/postProcessing/turbulence/R/R.C
+++ /dev/null
@@ -1,169 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>.
-
-Application
-    R
-
-Description
-    Calculates and writes the Reynolds stress R for the current time step.
-
-    Compressible modes is automatically selected based on the existence of the
-    "thermophysicalProperties" dictionary required to construct the
-    thermodynamics package.
-
-\*---------------------------------------------------------------------------*/
-
-#include "fvCFD.H"
-#include "turbulentTransportModel.H"
-#include "turbulentFluidThermoModel.H"
-#include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-void calcIncompressibleR
-(
-    const fvMesh& mesh,
-    const Time& runTime,
-    const volVectorField& U
-)
-{
-    #include "createPhi.H"
-
-    singlePhaseTransportModel laminarTransport(U, phi);
-
-    autoPtr<incompressible::turbulenceModel> model
-    (
-        incompressible::turbulenceModel::New(U, phi, laminarTransport)
-    );
-
-    Info<< "Writing R field" << nl << endl;
-
-    model->R()().write();
-}
-
-
-void calcCompressibleR
-(
-    const fvMesh& mesh,
-    const Time& runTime,
-    const volVectorField& U
-)
-{
-    IOobject rhoHeader
-    (
-        "rho",
-        runTime.timeName(),
-        mesh,
-        IOobject::MUST_READ,
-        IOobject::NO_WRITE
-    );
-
-    if (!rhoHeader.headerOk())
-    {
-        Info<< "    no " << rhoHeader.name() <<" field" << endl;
-        return;
-    }
-
-    Info<< "Reading field rho\n" << endl;
-    volScalarField rho(rhoHeader, mesh);
-
-    #include "compressibleCreatePhi.H"
-
-    autoPtr<fluidThermo> pThermo(fluidThermo::New(mesh));
-    fluidThermo& thermo = pThermo();
-
-    autoPtr<compressible::turbulenceModel> model
-    (
-        compressible::turbulenceModel::New
-        (
-            rho,
-            U,
-            phi,
-            thermo
-        )
-    );
-
-    Info<< "Writing R field" << nl << endl;
-
-    model->R()().write();
-}
-
-
-int main(int argc, char *argv[])
-{
-    timeSelector::addOptions();
-    #include "addRegionOption.H"
-    #include "setRootCase.H"
-    #include "createTime.H"
-    instantList timeDirs = timeSelector::select0(runTime, args);
-    #include "createNamedMesh.H"
-
-    forAll(timeDirs, timeI)
-    {
-        runTime.setTime(timeDirs[timeI], timeI);
-        Info<< "Time = " << runTime.timeName() << endl;
-
-        IOobject UHeader
-        (
-            "U",
-            runTime.timeName(),
-            mesh,
-            IOobject::MUST_READ,
-            IOobject::NO_WRITE
-        );
-
-        if (UHeader.headerOk())
-        {
-            Info<< "Reading field " << UHeader.name() << nl << endl;
-            volVectorField U(UHeader, mesh);
-
-            if
-            (
-                IOobject
-                (
-                    basicThermo::dictName,
-                    runTime.constant(),
-                    mesh
-                ).headerOk()
-            )
-            {
-                calcCompressibleR(mesh, runTime, U);
-            }
-            else
-            {
-                calcIncompressibleR(mesh, runTime, U);
-            }
-        }
-        else
-        {
-            Info<< "    no " << UHeader.name() << " field" << endl;
-        }
-    }
-
-    Info<< "End\n" << endl;
-
-    return 0;
-}
-
-
-// ************************************************************************* //
diff --git a/applications/utilities/postProcessing/turbulence/R/compatibilityFvPatchFields/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.C b/applications/utilities/postProcessing/turbulence/R/compatibilityFvPatchFields/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.C
deleted file mode 100644
index 37dce5e2894..00000000000
--- a/applications/utilities/postProcessing/turbulence/R/compatibilityFvPatchFields/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.C
+++ /dev/null
@@ -1,115 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 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 <http://www.gnu.org/licenses/>.
-
-\*---------------------------------------------------------------------------*/
-
-#include "turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.H"
-#include "addToRunTimeSelectionTable.H"
-#include "volFields.H"
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-Foam::turbulentIntensityKineticEnergyInletFvPatchSymmTensorField::
-turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-(
-    const fvPatch& p,
-    const DimensionedField<symmTensor, volMesh>& iF
-)
-:
-    fixedValueFvPatchSymmTensorField(p, iF)
-{}
-
-
-Foam::turbulentIntensityKineticEnergyInletFvPatchSymmTensorField::
-turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-(
-    const turbulentIntensityKineticEnergyInletFvPatchSymmTensorField& ptf,
-    const fvPatch& p,
-    const DimensionedField<symmTensor, volMesh>& iF,
-    const fvPatchFieldMapper& mapper
-)
-:
-    fixedValueFvPatchSymmTensorField(ptf, p, iF, mapper)
-{}
-
-
-Foam::turbulentIntensityKineticEnergyInletFvPatchSymmTensorField::
-turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-(
-    const fvPatch& p,
-    const DimensionedField<symmTensor, volMesh>& iF,
-    const dictionary& dict
-)
-:
-    fixedValueFvPatchSymmTensorField(p, iF)
-{
-
-    fvPatchSymmTensorField::operator=(symmTensorField("value", dict, p.size()));
-}
-
-
-Foam::turbulentIntensityKineticEnergyInletFvPatchSymmTensorField::
-turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-(
-    const turbulentIntensityKineticEnergyInletFvPatchSymmTensorField& ptf
-)
-:
-    fixedValueFvPatchSymmTensorField(ptf)
-{}
-
-
-Foam::turbulentIntensityKineticEnergyInletFvPatchSymmTensorField::
-turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-(
-    const turbulentIntensityKineticEnergyInletFvPatchSymmTensorField& ptf,
-    const DimensionedField<symmTensor, volMesh>& iF
-)
-:
-    fixedValueFvPatchSymmTensorField(ptf, iF)
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-void Foam::turbulentIntensityKineticEnergyInletFvPatchSymmTensorField::write
-(
-    Ostream& os
-) const
-{
-    fvPatchSymmTensorField::write(os);
-    writeEntry("value", os);
-}
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    makePatchTypeField
-    (
-        fvPatchSymmTensorField,
-        turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-    );
-}
-
-// ************************************************************************* //
diff --git a/applications/utilities/postProcessing/turbulence/R/compatibilityFvPatchFields/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.H b/applications/utilities/postProcessing/turbulence/R/compatibilityFvPatchFields/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.H
deleted file mode 100644
index 4f3fc8046fb..00000000000
--- a/applications/utilities/postProcessing/turbulence/R/compatibilityFvPatchFields/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.H
+++ /dev/null
@@ -1,148 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 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 <http://www.gnu.org/licenses/>.
-
-Class
-    Foam::turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-
-Description
-    Dummy version of turbulentIntensityKineticEnergyInlet patch type for
-    symmetric tensors provided for compatibility with R utility.
-
-    Value is given by a fixed-value condition.
-
-
-SourceFiles
-    turbulentIntensityKineticEnergyInletFvPatchSymmTensorField.C
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef turbulentIntensityKineticEnergyInletFvPatchSymmTensorField_H
-#define turbulentIntensityKineticEnergyInletFvPatchSymmTensorField_H
-
-#include "fixedValueFvPatchFields.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-/*---------------------------------------------------------------------------*\
- Class turbulentIntensityKineticEnergyInletFvPatchSymmTensorField Declaration
-\*---------------------------------------------------------------------------*/
-
-class turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-:
-    public fixedValueFvPatchSymmTensorField
-{
-public:
-
-    //- Runtime type information
-    TypeName("turbulentIntensityKineticEnergyInlet");
-
-
-    // Constructors
-
-        //- Construct from patch and internal field
-        turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-        (
-            const fvPatch&,
-            const DimensionedField<symmTensor, volMesh>&
-        );
-
-        //- Construct from patch, internal field and dictionary
-        turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-        (
-            const fvPatch&,
-            const DimensionedField<symmTensor, volMesh>&,
-            const dictionary&
-        );
-
-        //- Construct by mapping given
-        //  turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-        //  onto a new patch
-        turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-        (
-            const turbulentIntensityKineticEnergyInletFvPatchSymmTensorField&,
-            const fvPatch&,
-            const DimensionedField<symmTensor, volMesh>&,
-            const fvPatchFieldMapper&
-        );
-
-        //- Construct as copy
-        turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-        (
-            const turbulentIntensityKineticEnergyInletFvPatchSymmTensorField&
-        );
-
-        //- Construct and return a clone
-        virtual tmp<fvPatchSymmTensorField> clone() const
-        {
-            return tmp<fvPatchSymmTensorField>
-            (
-                new turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-                (
-                    *this
-                )
-            );
-        }
-
-        //- Construct as copy setting internal field reference
-        turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-        (
-            const turbulentIntensityKineticEnergyInletFvPatchSymmTensorField&,
-            const DimensionedField<symmTensor, volMesh>&
-        );
-
-        //- Construct and return a clone setting internal field reference
-        virtual tmp<fvPatchSymmTensorField> clone
-        (
-            const DimensionedField<symmTensor, volMesh>& iF
-        ) const
-        {
-            return tmp<fvPatchSymmTensorField>
-            (
-                new turbulentIntensityKineticEnergyInletFvPatchSymmTensorField
-                (
-                    *this,
-                    iF
-                )
-            );
-        }
-
-
-    // Member functions
-
-        //- Write
-        virtual void write(Ostream&) const;
-};
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/bin/R b/bin/R
new file mode 120000
index 00000000000..ff6b4704c67
--- /dev/null
+++ b/bin/R
@@ -0,0 +1 @@
+supercededByPostProcessOption
\ No newline at end of file
diff --git a/etc/caseDicts/postProcessing/fields/R b/etc/caseDicts/postProcessing/fields/R
new file mode 100644
index 00000000000..e7c63b3dec6
--- /dev/null
+++ b/etc/caseDicts/postProcessing/fields/R
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+R
+{
+    type            turbulenceFields;
+    libs            ("libfieldFunctionObjects.so");
+
+    fields          (R);
+
+    executeControl  writeTime;
+    writeControl    writeTime;
+}
+
+// ************************************************************************* //
diff --git a/src/functionObjects/field/turbulenceFields/turbulenceFields.C b/src/functionObjects/field/turbulenceFields/turbulenceFields.C
index 15671440ed7..20733ba273f 100644
--- a/src/functionObjects/field/turbulenceFields/turbulenceFields.C
+++ b/src/functionObjects/field/turbulenceFields/turbulenceFields.C
@@ -130,17 +130,6 @@ Foam::functionObjects::turbulenceFields::turbulenceFields
     fvMeshFunctionObject(name, runTime, dict),
     fieldSet_()
 {
-    if
-    (
-       !obr_.foundObject<compressible::turbulenceModel>(modelName)
-    && !obr_.foundObject<incompressible::turbulenceModel>(modelName)
-    )
-    {
-        FatalErrorInFunction
-            << "Cannot find turbulenceModel in objectRegistry"
-            << exit(FatalError);
-    }
-
     read(dict);
 }
 
@@ -293,6 +282,12 @@ bool Foam::functionObjects::turbulenceFields::execute(const bool postProcess)
 
 bool Foam::functionObjects::turbulenceFields::write(const bool postProcess)
 {
+    forAllConstIter(wordHashSet, fieldSet_, iter)
+    {
+        const word fieldName = modelName + ':' + iter.key();
+        writeObject(fieldName);
+    }
+
     return true;
 }
 
diff --git a/src/functionObjects/field/turbulenceFields/turbulenceFields.H b/src/functionObjects/field/turbulenceFields/turbulenceFields.H
index 5ea80124eca..064664a17e2 100644
--- a/src/functionObjects/field/turbulenceFields/turbulenceFields.H
+++ b/src/functionObjects/field/turbulenceFields/turbulenceFields.H
@@ -43,7 +43,7 @@ Description
     turbulenceFields1
     {
         type        turbulenceFields;
-        libs ("libutilityFunctionObjects.so");
+        libs ("libfieldFunctionObjects.so");
         ...
         fields
         (
-- 
GitLab