From eb713633a5028b461aad61eb820742bc8f481023 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Fri, 31 Dec 2004 17:50:06 +0000
Subject: [PATCH] fixed computation of Min/Max when the view contains different
 element types

---
 Plugin/Evaluate.cpp | 92 ++++++++++++++++++++++-----------------------
 1 file changed, 46 insertions(+), 46 deletions(-)

diff --git a/Plugin/Evaluate.cpp b/Plugin/Evaluate.cpp
index 062c0fd70e..78f19882ce 100644
--- a/Plugin/Evaluate.cpp
+++ b/Plugin/Evaluate.cpp
@@ -1,4 +1,4 @@
-// $Id: Evaluate.cpp,v 1.10 2004-12-28 03:55:48 geuzaine Exp $
+// $Id: Evaluate.cpp,v 1.11 2004-12-31 17:50:06 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -110,7 +110,7 @@ void GMSH_EvaluatePlugin::catchErrorMessage(char *errorMessage) const
 
 static void evaluate(Post_View * v, List_T * list, int nbElm,
 		     int nbNod, int nbComp, int comp, int timeStep,
-		     char *expression)
+		     char *expression, double *min, double *max)
 {
 #if !defined(HAVE_MATH_EVAL)
 
@@ -140,9 +140,6 @@ static void evaluate(Post_View * v, List_T * list, int nbElm,
 
   v->Changed = 1;
 
-  double min = VAL_INF;
-  double max = -VAL_INF;
-
   int nb = List_Nbr(list) / nbElm;
   for(int i = 0; i < List_Nbr(list); i += nb) {
     double *x = (double *)List_Pointer_Fast(list, i);
@@ -167,21 +164,12 @@ static void evaluate(Post_View * v, List_T * list, int nbElm,
 	res = sqrt(DSQR(val[0]) + DSQR(val[1]) + DSQR(val[2]));
       else if(nbComp == 9)
 	res = ComputeVonMises(val);
-      if(res < min) min = res;
-      if(res > max) max = res;
+      if(res < *min) *min = res;
+      if(res > *max) *max = res;
     }
   }
 
   evaluator_destroy(f);
-  
-  v->TimeStepMin[timeStep] = min;
-  v->TimeStepMax[timeStep] = max;
-  v->Min = v->TimeStepMin[0];
-  v->Max = v->TimeStepMax[0];
-  for(int i = 1; i < v->NbTimeStep; i++){
-    if(v->TimeStepMin[i] < v->Min) v->Min = v->TimeStepMin[i];
-    if(v->TimeStepMax[i] > v->Max) v->Max = v->TimeStepMax[i];
-  }
 
 #endif
 }
@@ -203,37 +191,49 @@ Post_View *GMSH_EvaluatePlugin::execute(Post_View * v)
 
   Post_View *v1 = *(Post_View **)List_Pointer(CTX.post.list, iView);
 
-  evaluate(v1, v1->SP, v1->NbSP, 1, 1, comp, timeStep, expr);
-  evaluate(v1, v1->VP, v1->NbVP, 1, 3, comp, timeStep, expr);
-  evaluate(v1, v1->TP, v1->NbTP, 1, 9, comp, timeStep, expr);
-
-  evaluate(v1, v1->SL, v1->NbSL, 2, 1, comp, timeStep, expr);
-  evaluate(v1, v1->VL, v1->NbVL, 2, 3, comp, timeStep, expr);
-  evaluate(v1, v1->TL, v1->NbTL, 2, 9, comp, timeStep, expr);
-
-  evaluate(v1, v1->ST, v1->NbST, 3, 1, comp, timeStep, expr);
-  evaluate(v1, v1->VT, v1->NbVT, 3, 3, comp, timeStep, expr);
-  evaluate(v1, v1->TT, v1->NbTT, 3, 9, comp, timeStep, expr);
-
-  evaluate(v1, v1->SQ, v1->NbSQ, 4, 1, comp, timeStep, expr);
-  evaluate(v1, v1->VQ, v1->NbVQ, 4, 3, comp, timeStep, expr);
-  evaluate(v1, v1->TQ, v1->NbTQ, 4, 9, comp, timeStep, expr);
-
-  evaluate(v1, v1->SS, v1->NbSS, 4, 1, comp, timeStep, expr);
-  evaluate(v1, v1->VS, v1->NbVS, 4, 3, comp, timeStep, expr);
-  evaluate(v1, v1->TS, v1->NbTS, 4, 9, comp, timeStep, expr);
-
-  evaluate(v1, v1->SH, v1->NbSH, 8, 1, comp, timeStep, expr);
-  evaluate(v1, v1->VH, v1->NbVH, 8, 3, comp, timeStep, expr);
-  evaluate(v1, v1->TH, v1->NbTH, 8, 9, comp, timeStep, expr);
-
-  evaluate(v1, v1->SI, v1->NbSI, 6, 1, comp, timeStep, expr);
-  evaluate(v1, v1->VI, v1->NbVI, 6, 3, comp, timeStep, expr);
-  evaluate(v1, v1->TI, v1->NbTI, 6, 9, comp, timeStep, expr);
+  double min = VAL_INF;
+  double max = -VAL_INF;
 
-  evaluate(v1, v1->SY, v1->NbSY, 5, 1, comp, timeStep, expr);
-  evaluate(v1, v1->VY, v1->NbVY, 5, 3, comp, timeStep, expr);
-  evaluate(v1, v1->TY, v1->NbTY, 5, 9, comp, timeStep, expr);
+  evaluate(v1, v1->SP, v1->NbSP, 1, 1, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->VP, v1->NbVP, 1, 3, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->TP, v1->NbTP, 1, 9, comp, timeStep, expr, &min, &max);
+
+  evaluate(v1, v1->SL, v1->NbSL, 2, 1, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->VL, v1->NbVL, 2, 3, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->TL, v1->NbTL, 2, 9, comp, timeStep, expr, &min, &max);
+
+  evaluate(v1, v1->ST, v1->NbST, 3, 1, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->VT, v1->NbVT, 3, 3, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->TT, v1->NbTT, 3, 9, comp, timeStep, expr, &min, &max);
+
+  evaluate(v1, v1->SQ, v1->NbSQ, 4, 1, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->VQ, v1->NbVQ, 4, 3, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->TQ, v1->NbTQ, 4, 9, comp, timeStep, expr, &min, &max);
+
+  evaluate(v1, v1->SS, v1->NbSS, 4, 1, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->VS, v1->NbVS, 4, 3, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->TS, v1->NbTS, 4, 9, comp, timeStep, expr, &min, &max);
+
+  evaluate(v1, v1->SH, v1->NbSH, 8, 1, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->VH, v1->NbVH, 8, 3, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->TH, v1->NbTH, 8, 9, comp, timeStep, expr, &min, &max);
+
+  evaluate(v1, v1->SI, v1->NbSI, 6, 1, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->VI, v1->NbVI, 6, 3, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->TI, v1->NbTI, 6, 9, comp, timeStep, expr, &min, &max);
+
+  evaluate(v1, v1->SY, v1->NbSY, 5, 1, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->VY, v1->NbVY, 5, 3, comp, timeStep, expr, &min, &max);
+  evaluate(v1, v1->TY, v1->NbTY, 5, 9, comp, timeStep, expr, &min, &max);
+
+  v1->TimeStepMin[timeStep] = min;
+  v1->TimeStepMax[timeStep] = max;
+  v1->Min = v1->TimeStepMin[0];
+  v1->Max = v1->TimeStepMax[0];
+  for(int i = 1; i < v1->NbTimeStep; i++){
+    if(v1->TimeStepMin[i] < v1->Min) v1->Min = v1->TimeStepMin[i];
+    if(v1->TimeStepMax[i] > v1->Max) v1->Max = v1->TimeStepMax[i];
+  }
 
   return v1;
 }
-- 
GitLab