]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
CCAR: correction du noyau pour la prise en compte de position='global'
authoreficas <>
Mon, 11 Oct 2004 08:23:21 +0000 (08:23 +0000)
committereficas <>
Mon, 11 Oct 2004 08:23:21 +0000 (08:23 +0000)
      + Patch pour que EFICAS continue à marcher suite à la suppression de EVAL
       dans le Noyau : remis dans Ihm. Ceci devrait etre temporaire.

Accas/A_EVAL.py
Aster/Cata/Macro/lire_inte_spec_ops.py [new file with mode: 0644]
Ihm/I_EVAL.py [new file with mode: 0644]
Minicode/cata_saturne2.py
Minicode/editeur.ini
Minicode/eficas_mini.py
Minicode/homard_cata_V6n.py [new file with mode: 0755]
Noyau/N_MCCOMPO.py

index 9c9038238e94bd168e75043ca6b27a043f011c4d..ba34e2be467b878a311b21de4d47ff768a5e8fdb 100644 (file)
@@ -18,8 +18,8 @@
 #
 #
 # ======================================================================
-from Noyau import N_EVAL 
+from Ihm import I_EVAL 
 
-class EVAL(N_EVAL.EVAL):
+class EVAL(I_EVAL.EVAL):
    def __init__(self,str):
-      N_EVAL.EVAL.__init__(self,str)
+      I_EVAL.EVAL.__init__(self,str)
diff --git a/Aster/Cata/Macro/lire_inte_spec_ops.py b/Aster/Cata/Macro/lire_inte_spec_ops.py
new file mode 100644 (file)
index 0000000..d3ae6d6
--- /dev/null
@@ -0,0 +1,122 @@
+#@ MODIF lire_inte_spec_ops Macro  DATE 20/09/2004   AUTEUR DURAND C.DURAND 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
+# (AT YOUR OPTION) ANY LATER VERSION.                                                  
+#                                                                       
+# THIS PROGRAM 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      
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
+#                                                                       
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
+# ======================================================================
+
+def lire_inte_spec_ops(self,UNITE,FORMAT,NOM_PARA,NOM_RESU,INTERPOL,
+                            PROL_DROITE,PROL_GAUCHE,TITRE,INFO,**args):
+  ier=0
+
+  from Accas import _F
+  import os
+  from math import cos,sin
+  # On importe les definitions des commandes a utiliser dans la macro
+  DEFI_FONCTION  =self.get_cmd('DEFI_FONCTION')
+  CREA_TABLE     =self.get_cmd('CREA_TABLE')
+
+  # La macro compte pour 1 dans la numerotation des commandes
+  self.set_icmd(1)
+
+  # Lecture de la fonction dans un fichier d unité logique UNITE
+  
+  file="./fort."+str(UNITE)
+  if not os.path.isfile(file) :
+     ier=ier+1
+     self.cr.fatal("<F> <LIRE_INTE_SPEC> le fichier d unité logique "+str(UNITE)+" est introuvable")
+     return ier
+  file=open(file,'r')
+  texte=file.read()
+  file.close()
+  
+  list_fonc=texte.split('FONCTION_C')
+  entete=list_fonc.pop(0)
+  try : 
+    entete=entete[entete.index('DIM'):]
+    dim=int(entete[entete.index('=')+1:entete.index('\n')])
+  except ValueError : 
+    ier=ier+1
+    self.cr.fatal("<F> <LIRE_INTE_SPEC> la dimension DIM n est pas précisée dans le fichier lu")
+    return ier
+
+  if len(list_fonc)!=(dim*(dim+1)/2):
+    ier=ier+1
+    self.cr.fatal("<F> <LIRE_INTE_SPEC> nombre de fonctions incorrect")
+    return ier
+
+  nume_i=[]
+  nume_j=[]
+  l_fonc=[]
+  for i in range(dim*(dim+1)/2):
+    numi=list_fonc[i][list_fonc[i].index('I =')+3:]
+    numi=numi[:numi.index('\n')]
+    nume_i.append(int(numi))
+    numj=list_fonc[i][list_fonc[i].index('J =')+3:]
+    numj=numj[:numj.index('\n')]
+    nume_j.append(int(numj))
+    try : 
+      vale_fonc=list_fonc[i][list_fonc[i].index('VALEUR =\n')+9:list_fonc[i].index('FINSF\n')]
+      vale_fonc=vale_fonc.replace('\n',' ')
+      vale_fonc=map(float,vale_fonc.split())
+    except ValueError : 
+      ier=ier+1
+      self.cr.fatal("<F> <LIRE_INTE_SPEC> erreur dans les données de fonctions")
+      return ier
+
+    liste=[]
+    if   FORMAT=='REEL_IMAG':
+      liste=vale_fonc
+    elif FORMAT=='MODULE_PHASE':
+      for i in range(len(vale_fonc)/3) :
+        module=vale_fonc[3*i+1]
+        phase =vale_fonc[3*i+2]
+        liste=liste+[vale_fonc[3*i],module*cos(phase),module*sin(phase)]
+
+    # création de la fonction ASTER :
+    _fonc=DEFI_FONCTION( NOM_PARA   =NOM_PARA,
+                         NOM_RESU   =NOM_RESU,
+                         PROL_DROITE=PROL_DROITE,
+                         PROL_GAUCHE=PROL_GAUCHE,
+                         INTERPOL   =INTERPOL,
+                         INFO       =INFO,
+                         TITRE      =TITRE,
+                         VALE_C     =liste,)
+    l_fonc.append(_fonc.nom)
+
+  nume_ib=[]
+  nume_jb=[]
+  for i in range(dim):
+    for j in range(i,dim):
+      nume_ib.append(i+1)
+      nume_jb.append(j+1)
+  if nume_i!=nume_ib or nume_j!=nume_jb : 
+      ier=ier+1
+      self.cr.fatal("<F> <LIRE_INTE_SPEC> erreur dans les indices")
+      return ier
+  mcfact=[]
+  mcfact.append(_F(PARA='NOM_CHAM'    ,LISTE_K=(NOM_RESU),NUME_LIGN=(1,)))
+  mcfact.append(_F(PARA='OPTION'      ,LISTE_K=('TOUT',) ,NUME_LIGN=(1,)))
+  mcfact.append(_F(PARA='DIMENSION'   ,LISTE_I=(dim,)    ,NUME_LIGN=(1,)))
+  mcfact.append(_F(PARA='NUME_ORDRE_I',LISTE_I=nume_i    ,NUME_LIGN=range(2,len(nume_i)+2)))
+  mcfact.append(_F(PARA='NUME_ORDRE_J',LISTE_I=nume_j    ,NUME_LIGN=range(2,len(nume_j)+2)))
+  mcfact.append(_F(PARA='FONCTION'    ,LISTE_K=l_fonc    ,NUME_LIGN=range(2,len(list_fonc)+2)))
+  self.DeclareOut('tab_inte',self.sd)
+  tab_inte=CREA_TABLE(TYPE_TABLE='TABL_INTE_SPEC',
+                      LISTE=mcfact,
+                      TITRE=TITRE,)
+
+  return ier
diff --git a/Ihm/I_EVAL.py b/Ihm/I_EVAL.py
new file mode 100644 (file)
index 0000000..6398dd8
--- /dev/null
@@ -0,0 +1,43 @@
+#@ MODIF N_EVAL Noyau  DATE 27/03/2002   AUTEUR DURAND C.DURAND 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
+# (AT YOUR OPTION) ANY LATER VERSION.                                 
+#
+# THIS PROGRAM 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    
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+#                                                                       
+#                                                                       
+# ======================================================================
+"""
+"""
+
+class EVAL :
+   """
+   """
+   def __init__(self,str):
+      """
+         L'objet EVAL est initialise avec une chaine de caracteres (str)
+      """
+      self.valeur = str
+      self.val=None
+
+   def __repr__(self):
+      return 'EVAL("""'+self.valeur+'""")'
+
+   def accept(self,visitor):
+      """
+         Cette methode permet de parcourir l'arborescence des objets
+         en utilisant le pattern VISITEUR
+      """
+      visitor.visitEVAL(self)
+
index 8691c82140f47ec3fb61b6cd4aa9f59060bd7ee9..611b9936b12dcd4cee03800867bc3ed784eaa03e 100755 (executable)
@@ -6,11 +6,10 @@ from Accas import ENSEMBLE,PRESENT_ABSENT
 from Accas import JDC_CATA,NIVEAU
 from Accas import OPER,PROC,MACRO,FORM
 from Accas import SIMP,FACT,BLOC
-from Accas import EVAL,PARAMETRE,COMMENTAIRE,PARAMETRE_EVAL,COMMANDE_COMM
 from Accas import ASSD,CO,GEOM,fonction,geom,assd
 #
 __version__="$Name:  $"
-__Id__="$Id: cata_saturne2.py,v 1.2 2003/10/16 14:31:22 eficas Exp $"
+__Id__="$Id: cata_saturne2.py,v 1.3 2004/09/10 15:52:03 eficas Exp $"
 #
 
 import ops
index d225b5aad56b83af40fc95c1b114807c689793d5..daae371b47d7208e0978644c7abce098abf90d73 100644 (file)
@@ -17,10 +17,10 @@ initialdir=os.curdir
 
 # Choix des catalogues
 rep_mat="bidon"
-rep_mat="/home01/chris/ASTER/projet_Eficas/Devel/SUPER6_3/TestsAster/materiau"
 
 catalogues = (
-  ('ASTER','v1',os.path.join(rep_cata,'cata_saturne2.py'),'asterv5'),
-  ('ASTER','v2',os.path.join(rep_cata,'cata_saturne.py'),'python','defaut'),
+  ('MINICODE','v1',os.path.join(rep_cata,'cata_saturne2.py'),'python'),
+  ('MINICODE','v2',os.path.join(rep_cata,'cata_saturne.py'),'python'),
+  ('MINICODE','v3',os.path.join(rep_cata,'homard_cata_V6n.py'),'python','defaut'),
              )
 
index 75ef37ddbb758dd04cf90a8f5812f4a14bd857d1..41789389be0cca748ae56bb1bda9a7f5e0b384a9 100755 (executable)
@@ -1,5 +1,5 @@
-# -*- coding: utf-8 -*-
 #!/usr/bin/env python
+# -*- coding: utf-8 -*-
 """
     Ce module sert à lancer EFICAS configuré pour Code_Mini
 """
@@ -23,10 +23,10 @@ def main():
    #Misc.Trace.begin_trace()
    if len(sys.argv) > 1 :
        # on veut ouvrir un fichier directement au lancement d'Eficas
-       eficas_go.lance_eficas(code='ASTER',fichier = sys.argv[1])
+       eficas_go.lance_eficas(code='MINICODE',fichier = sys.argv[1])
    else:
        # on veut ouvrir Eficas 'vide'
-       eficas_go.lance_eficas(code='ASTER')
+       eficas_go.lance_eficas(code='MINICODE')
    Misc.Trace.end_trace()
 
 def hidez():
diff --git a/Minicode/homard_cata_V6n.py b/Minicode/homard_cata_V6n.py
new file mode 100755 (executable)
index 0000000..72e1b54
--- /dev/null
@@ -0,0 +1,169 @@
+
+# --------------------------------------------------
+# debut entete
+# --------------------------------------------------
+
+import Accas
+from Accas import *
+
+#CONTEXT.debug=1
+
+JdC = JDC_CATA(code='HOMARD',
+               execmodul=None,
+               regles = (AU_MOINS_UN('DONNEES_HOMARD'),),
+                       )
+
+# Type le plus general
+#class entier  (ASSD):pass
+#class reel    (ASSD):pass
+#class complexe(ASSD):pass
+#class liste   (ASSD):pass
+#class chaine  (ASSD):pass
+
+# Types geometriques
+#class no  (GEOM):pass
+#class grno(GEOM):pass
+#class ma  (GEOM):pass
+#class grma(GEOM):pass
+
+# --------------------------------------------------
+# fin entete
+# --------------------------------------------------
+
+def bloc_maj_champ():
+    return BLOC(condition = "( RAFFINEMENT != None ) or ( DERAFFINEMENT != None ) ",
+                fr="Nom MED du maillage en sortie, numero d'iteration et mise à jour de champs",
+                ang="MED name of the out-mesh, iteration rank and field updating",
+                NITER =SIMP(statut='o',typ='I',
+                           fr="Numéro d'itération avant l'adaptation.",
+                           ang="Iteration number before adaptation." ),
+                NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
+                           fr="Nom MED du maillage en sortie",
+                           ang="MED name of the out-mesh" ),
+                FICHIER_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
+                           fr="Nom du fichier MED du maillage en sortie",
+                           ang="MED file name of the out-mesh" ),
+           ) 
+
+def critere_de_deraffinement():
+   return BLOC(condition = "( DERAFFINEMENT == 'LIBRE' ) ",
+               fr="Critère de déraffinement.",
+               ang="Unrefinement threshold.",
+               regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
+               CRIT_DERA_ABS =SIMP(statut='f',typ='R' ,
+                                   fr="Critère absolu",
+                                   ang="Absolute threshold" ),
+               CRIT_DERA_REL   =SIMP(statut='f',typ='R',
+                                     fr="Critère relatif",
+                                     ang="Relative threshold" ),
+               CRIT_DERA_PE    =SIMP(statut='f',typ='R',
+                                     fr="Pourcentage d'éléments",
+                                     ang="Percentage of elements" ),
+          )
+
+TEST=PROC(nom="TEST",op= 189, docu="U7.04.01-b",
+          fr="Imprime le fichier de configuration de HOMARD.",
+       TRAITEMENT      =FACT(statut='o',
+          regles=( UN_PARMI('TYPE_RAFFINEMENT_LIBRE','TYPE_RAFFINEMENT_UNIFORME'),),
+          TYPE_RAFFINEMENT_LIBRE = FACT(statut='f',
+                                   RAFFINEMENT   = SIMP(statut='o',typ='TXM',
+                                                    fr="Choix du mode de raffinement.",
+                                                    ang="Choice of refinement mode.",
+                                                    into=("LIBRE","UNIFORME",),
+                                                   ),
+                                   DERAFFINEMENT = SIMP(statut='o',typ='TXM',
+                                                    fr="Choix du mode de deraffinement.",
+                                                    ang="Choice of unrefinement mode.",
+                                                    into=("LIBRE",), 
+                                                   ),
+                                   b_iteration_maj_champ =bloc_maj_champ(),
+                                   b_critere_de_deraffinement =critere_de_deraffinement(),
+                                   ),
+
+           TYPE_RAFFINEMENT_UNIFORME = FACT(statut='f',
+                                       RAFFINEMENT   = SIMP(statut='o',typ='TXM',
+                                                       fr="Choix du mode de raffinement.",
+                                                       ang="Choice of refinement mode.",
+                                                       into=("NON","NON-CONFORME","NON-CONFORME-INDICATEUR"),
+                                                       ),
+                                       DERAFFINEMENT = SIMP(statut='o',typ='TXM',
+                                                       fr="Choix du mode de deraffinement.",
+                                                       ang="Choice of unrefinement mode.",
+                                                       into=("UNIFORME","NON",),
+                                                       ),
+                                       b_iteration_maj_champ =bloc_maj_champ(),
+                                       b_critere_de_deraffinement =critere_de_deraffinement(),
+                                       ),
+       ),
+);
+
+DONNEES_HOMARD=PROC(nom="DONNEES_HOMARD",op= 189, docu="U7.04.01-b",
+            UIinfo={"groupes":("Fonction",)},
+                    fr="Imprime le fichier de configuration de HOMARD.",
+                    ang="Writes the configuration file for HOMARD.",
+# 3. Le type de traitement :
+#
+       TRAITEMENT      =FACT(statut='o',
+#
+# 3.1. DEUX CHOIX EXCLUSIFS :
+#
+#      A. ADAPTATION AVEC DES VARIANTES SUR LE MODE DE RAFFINEMENT/DERAFFINEMENT
+#         . RAFFINEMENT ET DERAFFINEMENT
+#         . RAFFINEMENT SEUL
+#         . DERAFFINEMENT SEUL
+#
+         regles=( AU_MOINS_UN('TYPE_RAFFINEMENT_LIBRE','TYPE_RAFFINEMENT_UNIFORME'),
+                  EXCLUS('TYPE_RAFFINEMENT_LIBRE','TYPE_RAFFINEMENT_UNIFORME'),),
+          TYPE_RAFFINEMENT_LIBRE = FACT(statut='f',
+               RAFFINEMENT      = SIMP(statut='o',typ='TXM',     
+                                 position='global',
+                                 fr="Choix du mode de raffinement.",
+                                 ang="Choice of refinement mode.",
+                                 into=("LIBRE","UNIFORME",) ),
+               DERAFFINEMENT = SIMP(statut='o',typ='TXM',     
+                                 position='global',
+                                 fr="Choix du mode de deraffinement.",
+                                 ang="Choice of unrefinement mode.",
+                                 into=("LIBRE",), ),),
+          TYPE_RAFFINEMENT_UNIFORME = FACT(statut='f',
+               RAFFINEMENT      = SIMP(statut='o',typ='TXM',     
+                                 fr="Choix du mode de raffinement.",
+                                 ang="Choice of refinement mode.",
+                                 into=("NON","NON-CONFORME","NON-CONFORME-INDICATEUR") ),
+               DERAFFINEMENT = SIMP(statut='o',typ='TXM',     
+                                 fr="Choix du mode de deraffinement.",
+                                 ang="Choice of unrefinement mode.",
+                                 into=("UNIFORME","NON",), ),),
+#
+           b_iteration_maj_champ =BLOC(condition = "( RAFFINEMENT != None ) or ( DERAFFINEMENT != None ) ",
+           #b_iteration_maj_champ =BLOC(condition = "(TYPE_RAFFINEMENT_UNIFORME != None) or (TYPE_RAFFINEMENT_LIBRE != None)",
+                           fr="Nom MED du maillage en sortie, numero d'iteration et mise à jour de champs",
+                           ang="MED name of the out-mesh, iteration rank and field updating",
+                           NITER                =SIMP(statut='o',typ='I',
+                           fr="Numéro d'itération avant l'adaptation.",
+                           ang="Iteration number before adaptation." ),
+                           NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
+                           fr="Nom MED du maillage en sortie",
+                           ang="MED name of the out-mesh" ),
+                           FICHIER_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
+                           fr="Nom du fichier MED du maillage en sortie",
+                           ang="MED file name of the out-mesh" ),
+                           ) ,
+#
+           b_critere_de_deraffinement =BLOC ( condition = "( DERAFFINEMENT == 'LIBRE' ) ",
+                           fr="Critère de déraffinement.",
+                           ang="Unrefinement threshold.",
+                           regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
+                           CRIT_DERA_ABS   =SIMP(statut='f',typ='R' ,
+                                                 fr="Critère absolu",
+                                                 ang="Absolute threshold" ),
+                           CRIT_DERA_REL   =SIMP(statut='f',typ='R',
+                                                 fr="Critère relatif",
+                                                 ang="Relative threshold" ),
+                           CRIT_DERA_PE    =SIMP(statut='f',typ='R',
+                                                 fr="Pourcentage d'éléments",
+                                                 ang="Percentage of elements" ),
+                           ) ,
+#
+     ),
+);
index 739b73048ea2d4a4cef5550cb986d79481b61371..dfc371ed8e5a706c49d5d23b590de4877a7a8d37 100644 (file)
@@ -206,8 +206,11 @@ class MCCOMPO(N_OBJECT.OBJECT):
       etape = self.get_etape()
       if etape :
         dict_mc_globaux_fac = self.recherche_mc_globaux_facultatifs()
-        dict_mc_globaux_fac.update(etape.mc_globaux)
-        if self.jdc : dict_mc_globaux_fac.update(self.jdc.mc_globaux)
+        for k,v in etape.mc_globaux.items():
+           dict_mc_globaux_fac[k]=v.get_valeur()
+        if self.jdc : 
+           for k,v in self.jdc.mc_globaux.items():
+              dict_mc_globaux_fac[k]=v.get_valeur()
         return dict_mc_globaux_fac
       else :
         return {}
@@ -225,7 +228,7 @@ class MCCOMPO(N_OBJECT.OBJECT):
          if v.position != 'global' : continue
          if v.statut == 'o':continue
          obj = v(val=None,nom=k,parent=etape)
-         dico[k]=obj
+         dico[k]=obj.get_valeur()
       return dico
 
    def supprime(self):