Salome HOME
dernieres modifs
[tools/eficas.git] / generator / OpenturnsXML.py
index 7972a4bf3d90426f883084cffdde1c1ec6bcbe05..860508deb46026004d06f07e2c3c680ceb3dabd4 100644 (file)
@@ -1,12 +1,28 @@
-#@ AJOUT OpenturnsSolver Macro
-# -*- coding: iso-8859-1 -*-
-# RESPONSABLE
-
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
 """
 Ce module contient le generateur XML pour Openturns
 """
 import sys
 print sys.path
+from Extensions.i18n import tr
 import openturns
 
 # Dictionnaires de conversion des valeurs lues dans EFICAS
@@ -49,7 +65,7 @@ WrapperDataTransferByName = {
   "pipe"      : openturns.WrapperDataTransfer.PIPE,
   "arguments" : openturns.WrapperDataTransfer.ARGUMENTS,
   "socket"    : openturns.WrapperDataTransfer.SOCKET,
-  "CORBA"     : openturns.WrapperDataTransfer.CORBA,
+  "corba"     : openturns.WrapperDataTransfer.CORBA,
   None        : openturns.WrapperDataTransfer.FILES,
   }
 
@@ -79,6 +95,7 @@ class XMLGenerateur :
     data.setHessianDescription(  self.HessianDefinition()  )
     data.setFileList( self.FileList() )
     data.setParameters( self.Parameters() )
+    #data.setFrameworkData( self.FrameworkData() )
     
     wrapper=openturns.WrapperFile()
     wrapper.setWrapperData( data )
@@ -86,12 +103,19 @@ class XMLGenerateur :
     return wrapper
 
 
+  class __variable_ordering:
+    def __init__ (self, dictVar) :
+      self.dictVar = dictVar
+      
+    def __call__(self, a, b):
+      return self.dictVar[a]['numOrdre'] - self.dictVar[b]['numOrdre']
+  
   def VariableList (self) :
     '''
     Ecrit la liste des variables
     '''
-    varList = openturns.WrapperDataVariableList()
-    for var in self.DictVariables.keys() :
+    varList = openturns.WrapperDataVariableCollection()
+    for var in sorted( self.DictVariables.keys(), self.__variable_ordering( self.DictVariables ) ) :
       varList.add( self.Variable( var, self.DictVariables[var] ) )
     return varList
 
@@ -142,7 +166,7 @@ class XMLGenerateur :
     '''
     Ecrit la liste des fichiers
     '''
-    fileList = openturns.WrapperDataFileList()
+    fileList = openturns.WrapperDataFileCollection()
     for dictFile in self.GetMCVal('Files', []) :
       fileList.add( self.File( dictFile ) )
     return fileList
@@ -168,12 +192,26 @@ class XMLGenerateur :
     '''
     parameters = openturns.WrapperParameter()
     parameters.mode_  = WrapperModeByName[ self.GetMCVal('WrapCouplingMode') ]
+    if (parameters.mode_ == openturns.WrapperMode.FORK ):
+      parameters.command_ = self.GetMCVal('Command')
+      userPrefix = self.GetMCVal('UserPrefix', None)
+      if userPrefix != None : parameters.userPrefix_ = userPrefix
     parameters.state_ = WrapperStateByName[ self.GetMCVal('State') ]
     parameters.in_    = WrapperDataTransferByName[ self.GetMCVal('InDataTransfer') ]
     parameters.out_   = WrapperDataTransferByName[ self.GetMCVal('OutDataTransfer') ]
     return parameters
   
-
+  def FrameworkData (self) :
+    '''
+    Ecrit les donnees liees a l utilisation d un framework englobant
+    '''
+    framework = openturns.WrapperFrameworkData()
+#   framework.studycase_ = "12:23:34"
+#   framework.componentname_ = self.GetMCVal('SolverComponentName', 'UNDEFINED')
+    CN = self.GetMCVal('SolverComponentName', 'UNDEFINED')
+    print 'CN = %s', CN
+    framework.componentname_ = CN
+    return framework
 
 
   # ---------------------------------------------------------------------------------
@@ -187,7 +225,7 @@ class XMLGenerateur :
     if ( dictTagsXML.has_key(tag) ) :
       return dictTagsXML[tag]
     else :
-      raise KeyError, "Tag '%s' is undefined. This is an internal bug. Report bug to developers" % tag 
+      raise KeyError, tr("Tag %s non-defini. Ceci est un bogue interne. en informer les developpeurs.", tag)
     pass
   
   def GetMCVal (self, MC, default = None, mandatory = False) :
@@ -199,7 +237,7 @@ class XMLGenerateur :
       return self.DictMCVal[MC]
     else :
       if ( mandatory ) :
-        raise KeyError, "Keyword '%s' is mandatory" % MC
+        raise KeyError, tr(" Le mot-cle %s est obligatoire.", MC)
       else :
         return default
     pass