From ae9522f01751a307da78842b87b7bb59a28b195d Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Sun, 12 Feb 2017 17:19:27 +0000
Subject: [PATCH] functionObjects::scalarTransport: Added support for optional
 laminar and turbulent diffusion coefficients

Description
    Evolves a passive scalar transport equation.

    - To specify the field name set the \c field entry
    - To employ the same numerical schemes as another field set
      the \c schemesField entry,
    - A constant diffusivity may be specified with the \c D entry,

    - Alternatively if a turbulence model is available a turbulent diffusivity
      may be constructed from the laminar and turbulent viscosities using the
      optional diffusivity coefficients \c alphaD and \c alphaDt (which default
      to 1):
      \verbatim
          D = alphaD*nu + alphaDt*nut
      \endverbatim

Resolves feature request https://bugs.openfoam.org/view.php?id=2453
---
 .../solvers/scalarTransport/scalarTransport.C | 12 ++++------
 .../solvers/scalarTransport/scalarTransport.H | 23 +++++++++++++++----
 2 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/src/functionObjects/solvers/scalarTransport/scalarTransport.C b/src/functionObjects/solvers/scalarTransport/scalarTransport.C
index 954a5d6e4de..bcb02d7ec4b 100644
--- a/src/functionObjects/solvers/scalarTransport/scalarTransport.C
+++ b/src/functionObjects/solvers/scalarTransport/scalarTransport.C
@@ -89,7 +89,7 @@ Foam::tmp<Foam::volScalarField> Foam::functionObjects::scalarTransport::D
             turbulenceModel::propertiesName
         );
 
-        return model.nuEff();
+        return alphaD_*model.nu() + alphaDt_*model.nut();
     }
     else if (mesh_.foundObject<cmpModel>(turbulenceModel::propertiesName))
     {
@@ -98,7 +98,7 @@ Foam::tmp<Foam::volScalarField> Foam::functionObjects::scalarTransport::D
             turbulenceModel::propertiesName
         );
 
-        return model.muEff();
+        return alphaD_*model.mu() + alphaDt_*model.mut();
     }
     else
     {
@@ -169,11 +169,9 @@ bool Foam::functionObjects::scalarTransport::read(const dictionary& dict)
     rhoName_ = dict.lookupOrDefault<word>("rho", "rho");
     schemesField_ = dict.lookupOrDefault<word>("schemesField", fieldName_);
 
-    constantD_ = false;
-    if (dict.readIfPresent("D", D_))
-    {
-        constantD_ = true;
-    }
+    constantD_ = dict.readIfPresent("D", D_);
+    alphaD_ = dict.lookupOrDefault("alphat", 1.0);
+    alphaDt_ = dict.lookupOrDefault("alphaDt", 1.0);
 
     dict.readIfPresent("nCorr", nCorr_);
 
diff --git a/src/functionObjects/solvers/scalarTransport/scalarTransport.H b/src/functionObjects/solvers/scalarTransport/scalarTransport.H
index 86c92bdee77..8d056cbe3a9 100644
--- a/src/functionObjects/solvers/scalarTransport/scalarTransport.H
+++ b/src/functionObjects/solvers/scalarTransport/scalarTransport.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -30,11 +30,18 @@ Group
 Description
     Evolves a passive scalar transport equation.
 
-    - To specify the field name set the 'field' entry
+    - To specify the field name set the \c field entry
     - To employ the same numerical schemes as another field set
-      the 'schemesField' entry,
-    - The diffusivity can be set manually using the 'D' entry, or retrieved
-      from the turbulence model (if applicable).
+      the \c schemesField entry,
+    - A constant diffusivity may be specified with the \c D entry,
+
+    - Alternatively if a turbulence model is available a turbulent diffusivity
+      may be constructed from the laminar and turbulent viscosities using the
+      optional diffusivity coefficients \c alphaD and \c alphaDt (which default
+      to 1):
+      \verbatim
+          D = alphaD*nu + alphaDt*nut
+      \endverbatim
 
 See also
     Foam::functionObjects::fvMeshFunctionObject
@@ -83,6 +90,12 @@ class scalarTransport
         //- Flag to indicate whether a constant, uniform D_ is specified
         bool constantD_;
 
+        //- Laminar diffusion coefficient (optional)
+        scalar alphaD_;
+
+        //- Turbulent diffusion coefficient (optional)
+        scalar alphaDt_;
+
         //- Number of corrector iterations (optional)
         label nCorr_;
 
-- 
GitLab