Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / Aster / Cata / cataSTA8 / Macro / macro_miss_3d_ops.py
index 0d5d360b714aab0b738ee9601f9bfcc7bc3ef6a5..315f430770eff8d2b30010e287accf8aa4d759f6 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF macro_miss_3d_ops Macro  DATE 03/11/2004   AUTEUR ACBHHCD G.DEVES
+#@ MODIF macro_miss_3d_ops Macro  DATE 06/06/2007   AUTEUR SALMONA L.SALMON
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 
 def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS,
                            UNITE_MODELE_SOL,UNITE_RESU_IMPE,
-                           PROJET,REPERTOIRE,OPTION,VERSION,**args):
+                           PROJET,REPERTOIRE,OPTION,VERSION,
+                           UNITE_RESU_FORC,PARAMETRE,**args):
   """
      Ecriture de la macro MACRO_MISS_3D
   """
   import types
   from Accas import _F
+  from Utilitai.Utmess import UTMESS
+  from types import TupleType, ListType
 
   ier=0
   # On importe les definitions des commandes a utiliser dans la macro
@@ -35,16 +38,30 @@ def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS,
   DEFI_FICHIER  =self.get_cmd('DEFI_FICHIER')
   EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
   # La macro compte pour 1 dans la numerotation des commandes
-  #self.icmd=1
   self.set_icmd(1)
 
   DEFI_FICHIER(ACTION='LIBERER',UNITE=UNITE_IMPR_ASTER)
 
   import aster 
   loc_fic=aster.repout()
-  miss3d=loc_fic+'miss3d'
-  #miss3d='/home/acbhhcd/MISS3D/V6.4/miss3d.csh'
+  tv = aster.__version__.split('.')
+  if len(tv) < 3:
+      tv.extend(['x']*(3-len(tv)))
+  elif len(tv) > 3:
+      tv = tv[:3]
+  vers = '%2s.%2s.%2s' % tuple(tv)
 
+  # if vers > ' 8. 3.11':
+  #    miss3d='/aster/logiciels/MISS3D/NEW/miss3d.csh'
+  # else:
+  #    miss3d=loc_fic+'miss3d'
+     
+  miss3d=loc_fic+'miss3d'
+  
+  # if VERSION=='V1_2':
+  #   if PARAMETRE != None and PARAMETRE['TYPE']=='BINAIRE':
+  #      raise AsException("MACRO_MISS_3D/PARAMETRE : type incompatible avec version")
+        
   if OPTION['TOUT']!=None:
       MODUL2='COMPLET'
   elif OPTION['MODULE']=='MISS_IMPE':
@@ -60,17 +77,65 @@ def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS,
   popti = 'fort.'+str(UNITE_OPTI_MISS)
   pdsol = 'fort.'+str(UNITE_MODELE_SOL)
   primp = 'fort.'+str(UNITE_RESU_IMPE)
-
+  prfor = 'fort.'+str(UNITE_RESU_FORC)
+  
+  l_para = ['FREQ_MIN','FREQ_MAX','FREQ_PAS','Z0','RFIC','SURF',
+            'FICH_RESU_IMPE','FICH_RESU_FORC','TYPE','DREF','ALGO',
+            'OFFSET_MAX','OFFSET_NB','SPEC_MAX','SPEC_NB','ISSF',
+            'FICH_POST_TRAI','CONTR_NB','CONTR_LISTE','LFREQ_NB',
+            'LFREQ_LISTE']
+  if PARAMETRE != None and PARAMETRE['LFREQ_NB'] != None:
+    if len(PARAMETRE['LFREQ_LISTE']) != PARAMETRE['LFREQ_NB']:
+      UTMESS('F', 'MACRO_MISS3D', 'Longueur de LFREQ_LISTE incorrecte')
+  if PARAMETRE != None and PARAMETRE['CONTR_NB'] != None:
+    if len(PARAMETRE['CONTR_LISTE']) != 3*PARAMETRE['CONTR_NB']:
+      UTMESS('F', 'MACRO_MISS3D', 'Longueur de CONTR_LISTE incorrecte')
+  
+  dpara = {}
+  for cle in l_para:
+    if cle in ('SURF', 'ISSF', ):
+      dpara[cle] = 'NON'
+    else:
+      dpara[cle] = '0'
+    if PARAMETRE != None and PARAMETRE[cle] != None:
+      if type(PARAMETRE[cle]) in (TupleType, ListType):
+        dpara[cle] = repr(' '.join([str(s) for s in PARAMETRE[cle]]))
+      else:
+        dpara[cle] = str(PARAMETRE[cle])
+  
   EXEC_LOGICIEL(
                 LOGICIEL=miss3d,
-                ARGUMENT=(_F(NOM_PARA=MODUL2),
-                          _F(NOM_PARA=ETUDE),
-                          _F(NOM_PARA=BASE),
-                          _F(NOM_PARA=paste),
-                          _F(NOM_PARA=popti),
-                          _F(NOM_PARA=pdsol),
-                          _F(NOM_PARA=primp),
-                          _F(NOM_PARA=VERSION),  ),
+                ARGUMENT=(MODUL2,
+                          ETUDE,
+                          BASE,
+                          paste,
+                          popti,
+                          pdsol,
+                          primp,
+                          VERSION,
+                          dpara['FREQ_MIN'], 
+                          dpara['FREQ_MAX'],
+                          dpara['FREQ_PAS'],
+                          dpara['Z0'], 
+                          dpara['SURF'], 
+                          dpara['RFIC'],
+                          dpara['FICH_RESU_IMPE'],
+                          dpara['FICH_RESU_FORC'],
+                          dpara['DREF'], 
+                          dpara['ALGO'],
+                          dpara['OFFSET_MAX'],
+                          dpara['OFFSET_NB'],
+                          dpara['SPEC_MAX'],
+                          dpara['SPEC_NB'],
+                          dpara['ISSF'],
+                          dpara['FICH_POST_TRAI'],
+                          dpara['CONTR_NB'],
+                          dpara['CONTR_LISTE'],
+                          dpara['LFREQ_NB'],
+                          dpara['LFREQ_LISTE'],
+                          dpara['TYPE'], 
+                          prfor,
+                         ),
                 )
 
   return ier