]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
CCAR: correction probleme parametre avec Numeric.array
authorChristian Caremoli <>
Wed, 31 May 2006 12:07:08 +0000 (12:07 +0000)
committerChristian Caremoli <>
Wed, 31 May 2006 12:07:08 +0000 (12:07 +0000)
Extensions/param2.py

index 23dd105c6b2a786d8a2c95c8613d9f3de90e9c63..ad49373ba61075894a3faf7ece8df06381840fcd 100644 (file)
@@ -1,6 +1,8 @@
+# -*- coding: utf-8 -*-
 from __future__ import division
 import math
 import Numeric
+import types
 
 def mkf(value):
     if type(value) in (type(1), type(1L), type(1.5), type(1j),type("hh")) :
@@ -71,21 +73,9 @@ class Binop(Formula):
     def __adapt__(self,validator):
         return validator.adapt(self.eval())
 
-original_sqrt=math.sqrt
-original_ceil=math.ceil
-original_cos=math.cos
-original_sin=math.sin
-original_ncos=Numeric.cos
-original_nsin=Numeric.sin
 
 class Unop(Formula):
     opmap = { '-': lambda x: -x,
-              'sqrt': lambda x: original_sqrt(x),
-              'ceil': lambda x: original_ceil(x),
-              'sin': lambda x: original_sin(x),
-              'cos': lambda x: original_cos(x) ,
-              'ncos': lambda x: original_ncos(x),
-              'nsin': lambda x: original_nsin(x),
              }
     def __init__(self, op, arg):
         self._op = op
@@ -141,15 +131,57 @@ class Variable(Formula):
     def __adapt__(self,validator):
         return validator.adapt(self._value)
 
+def Eval(f):
+    if isinstance(f,Formula):
+        f=f.eval()
+    elif type(f) in (types.ListType, ):
+        f=[Eval(i) for i in f]
+    elif type(f) in (types.TupleType,):
+        f=tuple([Eval(i) for i in f])
+    return f
+
+
+#surcharge de la fonction cos de Numeric pour les parametres
+original_ncos=Numeric.cos
 def cos(f): return Unop('ncos', f)
-def sin(f): return Unop('nsin', f)
+Unop.opmap['ncos']=lambda x: original_ncos(x)
 Numeric.cos=cos
+
+#surcharge de la fonction sin de Numeric pour les parametres
+original_nsin=Numeric.sin
+def sin(f): return Unop('nsin', f)
+Unop.opmap['nsin']=lambda x: original_nsin(x)
 Numeric.sin=sin
-def sqrt(f): return Unop('sqrt', f)
-def ceil(f): return Unop('ceil', f)
-def cos(f): return Unop('cos', f)
+
+#surcharge de la fonction array de Numeric pour les parametres
+original_narray=Numeric.array
+def array(f,*tup,**args): 
+    """array de Numeric met en défaut la mécanique des parametres
+       on la supprime dans ce cas. Il faut que la valeur du parametre soit bien définie
+    """
+    return original_narray(Eval(f),*tup,**args)
+Numeric.array=array
+
+#surcharge de la fonction sin de math pour les parametres
+original_sin=math.sin
 def sin(f): return Unop('sin', f)
-math.cos=cos
+Unop.opmap['sin']=lambda x: original_sin(x)
 math.sin=sin
+
+#surcharge de la fonction cos de math pour les parametres
+original_cos=math.cos
+Unop.opmap['cos']=lambda x: original_cos(x)
+def cos(f): return Unop('cos', f)
+math.cos=cos
+
+#surcharge de la fonction sqrt de math pour les parametres
+original_sqrt=math.sqrt
+def sqrt(f): return Unop('sqrt', f)
+Unop.opmap['sqrt']=lambda x: original_sqrt(x)
 math.sqrt=sqrt
+
+#surcharge de la fonction ceil de math pour les parametres
+original_ceil=math.ceil
+Unop.opmap['ceil']=lambda x: original_ceil(x)
+def ceil(f): return Unop('ceil', f)
 math.ceil=ceil