From 6c86384ac7d8d37db4dd5a1ea81d31f7b64faa75 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Mon, 14 Jun 2010 13:52:39 +0200
Subject: [PATCH] ENH: use UList instead of Field for fvMatrix::setValues()

---
 .../fvMatrices/fvMatrix/fvMatrix.C            | 23 +++++++++----------
 .../fvMatrices/fvMatrix/fvMatrix.H            | 10 ++++----
 2 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C
index ea181f77619..c8bab409504 100644
--- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C
+++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C
@@ -393,13 +393,11 @@ Foam::fvMatrix<Type>::~fvMatrix()
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-// Set solution in given cells and eliminate corresponding
-// equations from the matrix
 template<class Type>
 void Foam::fvMatrix<Type>::setValues
 (
-    const labelList& cellLabels,
-    const Field<Type>& values
+    const unallocLabelList& cellLabels,
+    const UList<Type>& values
 )
 {
     const fvMesh& mesh = psi_.mesh();
@@ -417,10 +415,11 @@ void Foam::fvMatrix<Type>::setValues
 
     forAll(cellLabels, i)
     {
-        label celli = cellLabels[i];
+        const label celli = cellLabels[i];
+        const Type& value = values[i];
 
-        psi[celli] = values[i];
-        source_[celli] = values[i]*Diag[celli];
+        psi[celli] = value;
+        source_[celli] = value*Diag[celli];
 
         if (symmetric() || asymmetric())
         {
@@ -428,7 +427,7 @@ void Foam::fvMatrix<Type>::setValues
 
             forAll(c, j)
             {
-                label facei = c[j];
+                const label facei = c[j];
 
                 if (mesh.isInternalFace(facei))
                 {
@@ -436,11 +435,11 @@ void Foam::fvMatrix<Type>::setValues
                     {
                         if (celli == own[facei])
                         {
-                            source_[nei[facei]] -= upper()[facei]*values[i];
+                            source_[nei[facei]] -= upper()[facei]*value;
                         }
                         else
                         {
-                            source_[own[facei]] -= upper()[facei]*values[i];
+                            source_[own[facei]] -= upper()[facei]*value;
                         }
 
                         upper()[facei] = 0.0;
@@ -449,11 +448,11 @@ void Foam::fvMatrix<Type>::setValues
                     {
                         if (celli == own[facei])
                         {
-                            source_[nei[facei]] -= lower()[facei]*values[i];
+                            source_[nei[facei]] -= lower()[facei]*value;
                         }
                         else
                         {
-                            source_[own[facei]] -= upper()[facei]*values[i];
+                            source_[own[facei]] -= upper()[facei]*value;
                         }
 
                         upper()[facei] = 0.0;
diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.H b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.H
index 748d713a354..bda7b7feffa 100644
--- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.H
+++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -309,12 +309,12 @@ public:
 
         // Operations
 
-            //- Set solution in given cells and eliminate corresponding
-            //  equations from the matrix
+            //- Set solution in given cells to the specified values
+            //  and eliminate the corresponding equations from the matrix.
             void setValues
             (
-                const labelList& cells,
-                const Field<Type>& values
+                const unallocLabelList& cells,
+                const UList<Type>& values
             );
 
             //- Set reference level for solution
-- 
GitLab