]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
mise a niveau catalogue
authoreficas <>
Wed, 6 Nov 2002 16:27:44 +0000 (16:27 +0000)
committereficas <>
Wed, 6 Nov 2002 16:27:44 +0000 (16:27 +0000)
Minicode/cata_saturne.py
Minicode/editeur.ini
Minicode/eficas_mini.py
Minicode/ops.py

index 4c742a6a6d30900d7add31652f4334c729efdfd8..5f86f0a5bf153ba664592109b6da8ae283484209 100755 (executable)
@@ -7,7 +7,7 @@ from Accas import *
 
 import ops
 
-JdC = JDC_CATA(code='SATURNE',
+JdC = JDC_CATA(code='ASTER',
                execmodul=None,
                regles = (AU_MOINS_UN('DEBUT','POURSUITE'),
                          AU_MOINS_UN('FIN'),
@@ -27,6 +27,12 @@ class complexe(ASSD):pass
 class liste   (ASSD):pass
 class chaine  (ASSD):pass
 
+# Type geometriques
+class no  (GEOM):pass
+class grno(GEOM):pass
+class ma  (GEOM):pass
+class grma(GEOM):pass
+
 
 class sonde(ASSD):pass
 class varsca(ASSD):pass
@@ -62,6 +68,13 @@ class matr_elem_depl_c(matr_elem):pass
 class matr_elem_depl_r(matr_elem):pass
 class matr_elem_pres_c(matr_elem):pass
 class matr_elem_temp_r(matr_elem):pass
+class mater           (ASSD):pass
+
+
+# fonction :
+#--------------------------------
+class para_sensi(fonction):pass
+class fonction_c(fonction):pass
 
 # matr_asse :
 #--------------------------------
@@ -1502,6 +1515,50 @@ MACRO2 =MACRO(nom="MACRO2",op= -5 ,docu="U4.61.21-c",
          MODELE          =SIMP(statut='o',typ=modele),
 );
 
+def macro3_prod(self,MAILLAGE,MAIL2,**args):
+   self.type_sdprod(MAIL2,maillage)
+   if not MAILLAGE:return None
+   return maillage
+
+MACRO3 =MACRO(nom="MACRO3",op= -5 ,docu="U4.61.21-c",
+                      sd_prod=macro3_prod,
+                      fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
+         MAILLAGE          =SIMP(statut='f',typ=maillage),
+         MAIL2          =SIMP(statut='o',typ=(CO,maillage)),
+);
+
+def errmacro_prod(self,MAILLAGE,**args):
+   #Erreur de programmation
+   a=1/0
+   return maillage
+
+ERRMACRO =MACRO(nom="ERRMACRO",op= -5 ,docu="U4.61.21-c",
+                      sd_prod=errmacro_prod,
+                      fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
+         MAILLAGE          =SIMP(statut='o',typ=maillage),
+);
+
+def erroper_prod(self,MAILLAGE,**args):
+   #Erreur de programmation
+   a=1/0
+   return maillage
+
+ERROPER =OPER(nom="ERROPER",op= -5 ,docu="U4.61.21-c",
+                      sd_prod=erroper_prod,
+                      fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
+         MAILLAGE          =SIMP(statut='o',typ=maillage),
+);
+
+def errproc_init(self,MAILLAGE,**args):
+   #Erreur de programmation
+   a=1/0
+
+ERRPROC =PROC(nom="ERRPROC",op= -5 ,docu="U4.61.21-c",
+                      op_init=errproc_init,
+                      fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
+         MAILLAGE          =SIMP(statut='o',typ=maillage),
+);
+
 class concept(ASSD):pass
 
 def op1_prod(x,**args):
@@ -1549,3 +1606,149 @@ OP2 = MACRO(nom='OP2',op=1,sd_prod=op2_prod,reentrant='f',
                    ),
           );
 
+DETRUIRE=PROC(nom="DETRUIRE",op=-7,docu="U4.14.01-d",
+            UIinfo={"groupes":("Gestion du travail",)},
+              fr="Destruction d un concept utilisateur dans la base GLOBALE",
+             op_init=ops.detruire,
+            CONCEPT     =FACT(statut='o',min=01,
+            NOM         =SIMP(statut='o',typ=assd,max='**'),
+        ),
+);
+
+INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14,docu="U4.43.02-a",
+            UIinfo={"groupes":("Modélisation",)},
+                       fr=" ",
+         sd_prod=ops.INCLUDE_MATERIAU,op_init=ops.INCLUDE_context,fichier_ini=0,
+         NOM_AFNOR       =SIMP(statut='o',typ='TXM' ),
+         TYPE_MODELE     =SIMP(statut='o',typ='TXM',into=("REF","PAR") ),
+         VARIANTE        =SIMP(statut='o',typ='TXM',
+                               into=("A","B","C","D","E","F","G","H","I","J",
+                                     "K","L","M","N","O","P","Q","R","S","T","U","V",
+                                     "W","X","Y","Z",) ),
+         TYPE_VALE       =SIMP(statut='o',typ='TXM',into=("NOMI","MINI","MAXI") ),
+         NOM_MATER       =SIMP(statut='o',typ='TXM' ),
+         UNITE           =SIMP(statut='f',typ='I',defaut= 32 ),
+         EXTRACTION      =FACT(statut='f',min=1,max=99,
+           COMPOR          =SIMP(statut='o',typ='TXM' ),
+           TEMP_EVAL       =SIMP(statut='o',typ='R' ),
+         ),
+         INFO            =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+)  ;
+
+def defi_fonction_prod(VALE,VALE_PARA,VALE_C,NOEUD_PARA,**args):
+  if VALE != None  : return fonction
+  if VALE_C != None  : return fonction_c
+  if VALE_PARA != None  : return fonction
+  if NOEUD_PARA != None  : return fonction
+  raise AsException("type de concept resultat non prevu")
+
+DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod
+                    ,fr="Définition des valeurs réelles ou complexes d une fonction réelle",
+                     docu="U4.31.02-g3",reentrant='n',
+            UIinfo={"groupes":("Fonction",)},
+         regles=(UN_PARMI('VALE','VALE_C','VALE_PARA','NOEUD_PARA'),),
+         NOM_PARA        =SIMP(statut='o',typ='TXM',
+                               into=("DX","DY","DZ","DRX","DRY","DRZ","TEMP",
+                                     "INST","X","Y","Z","EPSI","META","FREQ","PULS",
+                                     "AMOR","ABSC","SIGM","HYDR","SECH","PORO","SAT",
+                                     "PGAZ","PCAP","VITE") ),
+         NOM_RESU        =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
+         VALE            =SIMP(statut='f',typ='R',min=2,max='**',
+                               fr ="Fonction réelle définie par une liste de couples (abscisse,ordonnée)"),
+         VALE_C          =SIMP(statut='f',typ='R',min=2,max='**',
+                               fr ="Fonction complexe définie par une liste de couples"),
+         VALE_PARA       =SIMP(statut='f',typ=listr8,
+                               fr ="Fonction réelle définie par deux concepts de type listr8" ),
+         b_vale_para     =BLOC(condition = "VALE_PARA != None",
+           VALE_FONC       =SIMP(statut='o',typ=listr8 ),
+         ),
+         NOEUD_PARA      =SIMP(statut='f',typ=no,max='**',
+                               fr ="Fonction réelle définie par une liste de noeuds et un maillage"),
+         b_noeud_para    =BLOC(condition = "NOEUD_PARA != None",
+           MAILLAGE        =SIMP(statut='o',typ=maillage ),
+           VALE_Y          =SIMP(statut='o',typ='R',max='**'),
+         ),
+
+         INTERPOL        =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
+         PROL_DROITE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+         PROL_GAUCHE     =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+         VERIF           =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ),
+         INFO            =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+         TITRE           =SIMP(statut='f',typ='TXM',max='**'),
+)  ;
+
+DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater,
+                   fr="Définition des paramètres décrivant le comportement d un matériau",
+                   docu="U4.43.01-g4",reentrant='n',
+            UIinfo={"groupes":("Modélisation",)},
+       regles=(EXCLUS('ELAS','ELAS_FO','ELAS_FLUI','ELAS_ISTR','ELAS_ISTR_FO','ELAS_ORTH',
+                      'ELAS_ORTH_FO','ELAS_COQUE','ELAS_COQUE_FO',
+                      'SURF_ETAT_SATU','CAM_CLAY_THM','SURF_ETAT_NSAT'),
+               EXCLUS('THER','THER_FO','THER_ORTH','THER_NL'),
+               ),
+#
+# comportement élastique
+#
+           ELAS            =FACT(statut='f',min=0,max=1,
+             E               =SIMP(statut='o',typ='R',val_min=0.E+0),
+             NU              =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=0.5E+0),
+             RHO             =SIMP(statut='f',typ='R'),
+             ALPHA           =SIMP(statut='f',typ='R'),
+             AMOR_ALPHA      =SIMP(statut='f',typ='R'),
+             AMOR_BETA       =SIMP(statut='f',typ='R'),
+             AMOR_HYST       =SIMP(statut='f',typ='R'),
+           ),
+           ELAS_FO         =FACT(statut='f',min=0,max=1,
+             regles=(PRESENT_PRESENT('ALPHA','TEMP_DEF_ALPHA'),),
+             E               =SIMP(statut='o',typ=fonction),
+             NU              =SIMP(statut='o',typ=fonction),
+             RHO             =SIMP(statut='f',typ='R'),
+             TEMP_DEF_ALPHA  =SIMP(statut='f',typ='R'),
+             PRECISION       =SIMP(statut='f',typ='R',defaut= 1.),
+             ALPHA           =SIMP(statut='f',typ=fonction),
+             AMOR_ALPHA      =SIMP(statut='f',typ=fonction),
+             AMOR_BETA       =SIMP(statut='f',typ=fonction),
+             AMOR_HYST       =SIMP(statut='f',typ=fonction),
+             K_DESSIC        =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+             B_ENDOGE        =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+             FONC_DESORP     =SIMP(statut='f',typ=fonction),
+             VERI_P1         =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP","INST",) ),
+             VERI_P2         =SIMP(statut='c',typ='TXM',defaut="INST",into=("TEMP","INST",) ),
+             VERI_P3         =SIMP(statut='c',typ='TXM',defaut="HYDR",into=("HYDR",) ),
+             VERI_P4         =SIMP(statut='c',typ='TXM',defaut="SECH",into=("SECH",) ),
+           ),
+#
+# comportement thermique
+#
+           THER_NL         =FACT(statut='f',min=0,max=1,
+             regles=(UN_PARMI('BETA','RHO_CP', ),),
+             LAMBDA          =SIMP(statut='o',typ=fonction),
+             BETA            =SIMP(statut='f',typ=fonction),
+             RHO_CP          =SIMP(statut='f',typ=fonction),
+             VERI_P1         =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("TEMP",) ),
+           ),
+           THER_HYDR       =FACT(statut='f',min=0,max=1,
+             LAMBDA          =SIMP(statut='o',typ=fonction),
+             BETA            =SIMP(statut='f',typ=fonction),
+             AFFINITE        =SIMP(statut='o',typ=fonction),
+             CHALHYDR        =SIMP(statut='o',typ='R'),
+             QSR_K           =SIMP(statut='o',typ='R'),
+             VERI_P1         =SIMP(statut='c',typ='TXM',defaut="TEMP",into=("HYDR",) ),
+             VERI_P2         =SIMP(statut='c',typ='TXM',defaut="HYDR",into=("HYDR",) ),
+           ),
+           THER            =FACT(statut='f',min=0,max=1,
+             LAMBDA          =SIMP(statut='o',typ='R'),
+             RHO_CP          =SIMP(statut='f',typ='R'),
+           ),
+           THER_FO         =FACT(statut='f',min=0,max=1,
+             LAMBDA          =SIMP(statut='o',typ=fonction),
+             RHO_CP          =SIMP(statut='f',typ=fonction),
+             VERI_P1         =SIMP(statut='c',typ='TXM',defaut="INST",into=("INST",) ),
+           ),
+)
+
+RETOUR=PROC(nom="RETOUR",op= -2,docu="U4.13.02-e",
+            UIinfo={"groupes":("Gestion du travail",)},
+            fr="Retour au fichier de commandes appelant",
+) ;
+
index 1cb03d643b7488982cd51974a87dad3d65213536..d225b5aad56b83af40fc95c1b114807c689793d5 100644 (file)
@@ -12,12 +12,15 @@ isdeveloppeur   =       "NON"
 path_cata_dev   =       "/tmp/cata"
 # Répertoire temporaire
 rep_travail     =   "/tmp"
+# Répertoire initial
+initialdir=os.curdir
 
 # Choix des catalogues
 rep_mat="bidon"
+rep_mat="/home01/chris/ASTER/projet_Eficas/Devel/SUPER6_3/TestsAster/materiau"
 
 catalogues = (
-  ('SATURNE','v1',os.path.join(rep_cata,'cata_saturne2.py'),'asterv5'),
-  ('SATURNE','v2',os.path.join(rep_cata,'cata_saturne.py'),'python','defaut'),
+  ('ASTER','v1',os.path.join(rep_cata,'cata_saturne2.py'),'asterv5'),
+  ('ASTER','v2',os.path.join(rep_cata,'cata_saturne.py'),'python','defaut'),
              )
 
index 281ccc8ef1b5c3ae9e328d667e0ce3b8c1047336..66a953cecea94f0c6d69ab65e373d57ea5c8bbc4 100755 (executable)
@@ -14,16 +14,19 @@ for a in args:
    if a == "-display":
       os.environ['DISPLAY']=args[args.index("-display")+1]
 
+import Misc.Trace
 import Editeur
 from Editeur import eficas_go
 
 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='SATURNE',fichier = sys.argv[1])
+       eficas_go.lance_eficas(code='ASTER',fichier = sys.argv[1])
    else:
        # on veut ouvrir Eficas 'vide'
-       eficas_go.lance_eficas(code='SATURNE')
+       eficas_go.lance_eficas(code='ASTER')
+   Misc.Trace.end_trace()
 
 def hidez():
    from Misc import Cyclops
index 560e898071f3b7bd051e55ff527b4c4e77ee91cb..eecdc4427de74cb3ad6726ea5c971542fb3780f1 100644 (file)
@@ -1,7 +1,21 @@
+#@ MODIF ops Cata  DATE 23/10/2002   AUTEUR DURAND C.DURAND 
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001  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.                                 
 #
-__version__="$Name: FR_28_06_10_00 $"
-__Id__="$Id: ops.py,v 1.12.18.3 2001/06/19 12:24:51 iliade Exp $"
+# 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.      
+# ======================================================================
 
 # Modules Python
 import types
@@ -11,6 +25,15 @@ import string,linecache,os,traceback,re
 import Accas
 from Accas import ASSD
 
+try:
+   import aster
+   # Si le module aster est présent, on le connecte
+   # au JDC
+   import Build.B_CODE
+   Build.B_CODE.CODE.codex=aster
+except:
+   pass
+
 def DEBUT(self,PAR_LOT,**args):
    """
        Fonction sdprod de la macro DEBUT
@@ -23,35 +46,35 @@ def POURSUITE(self,PAR_LOT,**args):
    """
    self.jdc.set_par_lot(PAR_LOT)
    if self.codex and os.path.isfile("glob.1"):
-      # Le module d'execution est accessible et glob.1 est present
-      if hasattr(self,'fichier_init'):return
-      self.fichier_init='glob.1'
-      self.jdc.initexec()
-      lot,ier,lonuti,concepts=self.codex.poursu(self,1)
-      self.icmd=lonuti
-      #print "Fin de debut",ier,lot,lonuti
-      pos=0
-      d={}
-      while pos+80 < len(concepts)+1:
-        nomres=concepts[pos:pos+8]
-        concep=concepts[pos+8:pos+24]
-        nomcmd=concepts[pos+24:pos+40]
-        statut=concepts[pos+40:pos+48]
-        if nomres[0] not in (' ','.','&') and statut != '&DETRUIT':
-           exec nomres+'='+string.lower(concep)+'()' in self.parent.g_context,d
-        pos=pos+80
-      for k,v in d.items():
-        self.parent.NommerSdprod(v,k)
-      self.g_context=d
-      return
+     # Le module d'execution est accessible et glob.1 est present
+     if hasattr(self,'fichier_init'):return
+     self.fichier_init='glob.1'
+     self.jdc.initexec()
+     lot,ier,lonuti,concepts=self.codex.poursu(self,1)
+     self.icmd=lonuti
+     #print "Fin de debut",ier,lot,lonuti
+     pos=0
+     d={}
+     while pos+80 < len(concepts)+1:
+       nomres=concepts[pos:pos+8]
+       concep=concepts[pos+8:pos+24]
+       nomcmd=concepts[pos+24:pos+40]
+       statut=concepts[pos+40:pos+48]
+       if nomres[0] not in (' ','.','&') and statut != '&DETRUIT':
+          exec nomres+'='+string.lower(concep)+'()' in self.parent.g_context,d
+       pos=pos+80
+     for k,v in d.items():
+       self.parent.NommerSdprod(v,k)
+     self.g_context=d
+     return
    else:
-      # Si le module d'execution n est pas accessible ou glob.1 absent on 
-      # demande un fichier (EFICAS)
-      # Il faut éviter de réinterpréter le fichier à chaque appel de
-      # POURSUITE
-      if hasattr(self,'fichier_init'):
-         return
-      self.make_poursuite()
+     # Si le module d'execution n est pas accessible ou glob.1 absent on 
+     # demande un fichier (EFICAS)
+     # Il faut éviter de réinterpréter le fichier à chaque appel de
+     # POURSUITE
+     if hasattr(self,'fichier_init'):
+        return
+     self.make_poursuite()
 
 def POURSUITE_context(self,d):
    """
@@ -69,6 +92,7 @@ def INCLUDE(self,UNITE,**args):
    """ 
        Fonction sd_prod pour la macro INCLUDE
    """
+   if not UNITE : return
    if hasattr(self,'unite'):return
    self.unite=UNITE
 
@@ -102,11 +126,13 @@ def detruire(self,d):
            sd.append(e)
            e=e.nom
          if d.has_key(e):del d[e]
+         if self.jdc.sds_dict.has_key(e):del self.jdc.sds_dict[e]
      else:
        if isinstance(mcs,ASSD):
          sd.append(mcs)
          mcs=mcs.nom
        if d.has_key(mcs):del d[mcs]
+       if self.jdc.sds_dict.has_key(mcs):del self.jdc.sds_dict[mcs]
    for s in sd:
      # On signale au parent que le concept s n'existe plus apres l'étape self
      self.parent.delete_concept_after_etape(self,s)
@@ -151,9 +177,9 @@ def subst_materiau(text,NOM_MATER,EXTRACTION):
              if m.group(3) == "EVAL":
                ll.append("  "+m.group(1)+' = EVAL("'+m.group(4)+"("+str(TEMP)+')"),')
              elif m.group(3) == "SUPPR":
-              pass
+               pass
              else:
-              ll.append(l)
+               ll.append(l)
            else: # On cherche la fin du mot cle facteur en cours de substitution
              m=regfin.match(l)
              if m: # On l a trouve. On le supprime de la liste
@@ -179,13 +205,16 @@ def INCLUDE_MATERIAU(self,NOM_AFNOR,TYPE_MODELE,VARIANTE,TYPE_VALE,NOM_MATER,
       Fonction sd_prod pour la macro INCLUDE_MATERIAU
   """
   mat=string.join((NOM_AFNOR,'_',TYPE_MODELE,'_',VARIANTE,'.',TYPE_VALE),'')
-  if not hasattr(self,'mat') or self.mat != mat:
-    self.mat=mat
+  if not hasattr(self,'mat') or self.mat != mat or self.nom_mater != NOM_MATER :
     # On récupère le répertoire des matériaux dans les arguments 
     # supplémentaires du JDC
-    rep_mat=self.jdc.args["rep_mat"]
+    rep_mat=self.jdc.args.get("rep_mat","NOrep_mat")
     f=os.path.join(rep_mat,mat)
+    self.mat=mat
+    self.nom_mater=NOM_MATER
     if not os.path.isfile(f):
+       del self.mat
+       self.make_contexte(f,"#Texte sans effet pour reinitialiser le contexte a vide\n")
        raise "Erreur sur le fichier materiau: "+f
     # Les materiaux sont uniquement disponibles en syntaxe Python
     # On lit le fichier et on supprime les éventuels \r
@@ -201,7 +230,6 @@ def INCLUDE_MATERIAU(self,NOM_AFNOR,TYPE_MODELE,VARIANTE,TYPE_VALE,NOM_MATER,
     # et le contexte de l etape (local au sens Python)
     # Il faut auparavant l'enregistrer aupres du module linecache (utile pour nommage.py)
     linecache.cache[f]=0,0,string.split(self.text,'\n'),f
-    code=compile(self.text,f,'exec')
     if self.jdc.par_lot == 'NON':
       # On est en mode commande par commande
       # On teste la validite de la commande avec interruption eventuelle
@@ -213,7 +241,5 @@ def INCLUDE_MATERIAU(self,NOM_AFNOR,TYPE_MODELE,VARIANTE,TYPE_VALE,NOM_MATER,
       # commandes car le prefixe PRFXCO doit etre initialise dans le Fortran
       self.codex.opsexe(self,0,-1,-self.definition.op)  
 
-    d={}
-    self.g_context = d
-    self.contexte_fichier_init = d
-    exec code in self.parent.g_context,d
+    self.make_contexte(f,self.text)
+