From 5b10d3c3fa3fbd696607ce941a2bb1dd17b493bb Mon Sep 17 00:00:00 2001
From: andy <andy>
Date: Thu, 17 Mar 2011 09:58:33 +0000
Subject: [PATCH] ENH: Added relaxation factor to cloud explicit calcs

---
 .../KinematicCloud/cloudSolution/cloudSolution.C    | 13 +++++++++----
 .../KinematicCloud/cloudSolution/cloudSolution.H    |  4 ++--
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.C
index 2d726f45e8a..165a7be0b6c 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.C
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.C
@@ -127,17 +127,19 @@ void Foam::cloudSolution::read()
     schemes_.setSize(vars.size());
     forAll(vars, i)
     {
+        // read solution variable name
         schemes_[i].first() = vars[i];
 
+        // set semi-implicit (1) explicit (0) flag
         Istream& is = schemesDict.lookup(vars[i]);
         const word scheme(is);
         if (scheme == "semiImplicit")
         {
-            is >> schemes_[i].second();
+            schemes_[i].second().first() = true;
         }
         else if (scheme == "explicit")
         {
-            schemes_[i].second() = -1;
+            schemes_[i].second().first() = false;
         }
         else
         {
@@ -145,6 +147,9 @@ void Foam::cloudSolution::read()
                 << "Invalid scheme " << scheme << ". Valid schemes are "
                 << "explicit and semiImplicit" << exit(FatalError);
         }
+
+        // read under-relaxation factor
+        is  >> schemes_[i].second().second();
     }
 }
 
@@ -155,7 +160,7 @@ Foam::scalar Foam::cloudSolution::relaxCoeff(const word& fieldName) const
     {
         if (fieldName == schemes_[i].first())
         {
-            return schemes_[i].second();
+            return schemes_[i].second().second();
         }
     }
 
@@ -173,7 +178,7 @@ bool Foam::cloudSolution::semiImplicit(const word& fieldName) const
     {
         if (fieldName == schemes_[i].first())
         {
-            return schemes_[i].second() >= 0;
+            return schemes_[i].second().first();
         }
     }
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H
index 6c2430e4089..5f0fdb1cee0 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/cloudSolution/cloudSolution.H
@@ -25,7 +25,7 @@ Class
     Foam::cloudSolution
 
 Description
-    - Stores all relevant solution info
+    Stores all relevant solution info for cloud
 
 SourceFiles
     cloudSolutionI.H
@@ -100,7 +100,7 @@ class cloudSolution
             Switch resetSourcesOnStartup_;
 
             //- List schemes, e.g. U semiImplicit 1
-            List<Tuple2<word, scalar> > schemes_;
+            List<Tuple2<word, Tuple2<bool, scalar> > > schemes_;
 
 
     // Private Member Functions
-- 
GitLab