From 1dba0d878905a31399f441e433b9c489bd04c8b4 Mon Sep 17 00:00:00 2001
From: Simon Praetorius <simon.praetorius@tu-dresden.de>
Date: Thu, 10 May 2012 13:03:16 +0000
Subject: [PATCH] Vector_FOT with factor

---
 AMDiS/src/FirstOrderTerm.h | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/AMDiS/src/FirstOrderTerm.h b/AMDiS/src/FirstOrderTerm.h
index a1ee0a70..51bf445a 100644
--- a/AMDiS/src/FirstOrderTerm.h
+++ b/AMDiS/src/FirstOrderTerm.h
@@ -203,13 +203,13 @@ namespace AMDiS {
   {
   public:
     /// Constructor.
-    Vector_FOT(WorldVector<double> *wv) 
-      : FirstOrderTerm(0), b(wv) 
+    Vector_FOT(WorldVector<double> *wv, double fac_ = 1.0) 
+      : FirstOrderTerm(0), b(wv), fac(fac_)
     {}
 
     /// Constructor.
-    Vector_FOT(int bIdx) 
-      : FirstOrderTerm(0) 
+    Vector_FOT(int bIdx, double fac_ = 1.0) 
+      : FirstOrderTerm(0), fac(fac_)
     {
       bOne = bIdx;
     }
@@ -223,10 +223,10 @@ namespace AMDiS {
 
       if (bOne > -1) {
 	for (int iq = 0; iq < nPoints; iq++)
-	  lb_one(grdLambda, Lb[iq], 1.0);
+	  lb_one(grdLambda, Lb[iq], fac);
       } else {
 	for (int iq = 0; iq < nPoints; iq++)
-	  lb(grdLambda, *b, Lb[iq], 1.0);
+	  lb(grdLambda, *b, Lb[iq], fac);
       }
     }
 
@@ -238,14 +238,17 @@ namespace AMDiS {
 	      mtl::dense_vector<double>& result,
 	      double factor)
     {
-      if (num_rows(grdUhAtQP) > 0)
+      if (num_rows(grdUhAtQP) > 0) {
+	double factor_ = factor * fac;
 	for (int iq = 0; iq < nPoints; iq++)
-	  result[iq] += *b * grdUhAtQP[iq] * factor; 
+	  result[iq] += *b * grdUhAtQP[iq] * factor_;
+      }
     }
 
   protected:
     /// Vector which is multiplied with \f$ \nabla u(\vec{x}) \f$
     WorldVector<double> *b;
+    double fac;
   };
 
   /**
-- 
GitLab