]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
Mise en coherence avec 10.1.27
authorPascale Noyret <pascale.noyret@edf.fr>
Thu, 3 Jun 2010 09:16:27 +0000 (09:16 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Thu, 3 Jun 2010 09:16:27 +0000 (09:16 +0000)
18 files changed:
Aster/Cata/cataSTA10/SD/co_cham_elem.py
Aster/Cata/cataSTA10/SD/co_cham_no.py
Aster/Cata/cataSTA10/SD/co_char_meca.py
Aster/Cata/cataSTA10/SD/co_contact.py [new file with mode: 0644]
Aster/Cata/cataSTA10/SD/co_fonction.py
Aster/Cata/cataSTA10/SD/co_macr_elem_dyna.py
Aster/Cata/cataSTA10/SD/co_matr_asse_gene.py
Aster/Cata/cataSTA10/SD/co_resultat.py
Aster/Cata/cataSTA10/SD/co_vect_asse_gene.py
Aster/Cata/cataSTA10/SD/sd_char_contact.py [deleted file]
Aster/Cata/cataSTA10/SD/sd_char_meca.py
Aster/Cata/cataSTA10/SD/sd_compor.py
Aster/Cata/cataSTA10/SD/sd_contact.py [new file with mode: 0644]
Aster/Cata/cataSTA10/SD/sd_corresp_2_mailla.py [new file with mode: 0644]
Aster/Cata/cataSTA10/SD/sd_resultat.py
Aster/Cata/cataSTA10/SD/sd_stoc_morse.py
Aster/Cata/cataSTA10/SD/sd_util.py
Aster/Cata/cataSTA10/SD/sd_xfem.py

index 2b30e094780fac4e90a834cdbfce89c6c472ebe4..ad96f6ef6553598e6801827e516d52be9c607d39 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF co_cham_elem SD  DATE 30/06/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF co_cham_elem SD  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -23,7 +23,7 @@ from SD import *
 from sd_cham_elem import sd_cham_elem
 from co_champ     import cham_gd_sdaster
 
-import Numeric
+import numpy
 
 # -----------------------------------------------------------------------------
 # post-traitement :
@@ -42,7 +42,7 @@ class cham_elem(cham_gd_sdaster, sd_cham_elem):
         topologie si topo>0. Si lgma est une liste vide, c'est equivalent
         a un TOUT='OUI' dans les commandes aster
         Attributs retourne
-          - self.valeurs : Numeric.array contenant les valeurs
+          - self.valeurs : numpy.array contenant les valeurs
         Si on a demande la topo  :
           - self.maille  : numero de mailles
           - self.point   : numero du point dans la maille
@@ -57,7 +57,7 @@ class cham_elem(cham_gd_sdaster, sd_cham_elem):
 
       aster.prepcompcham(ncham,nchams,ncmp,"EL      ",topo,lgma)
 
-      valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
+      valeurs=numpy.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
 
       if (topo>0) :
          maille=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.M'))
index 43071cd97c614bc1c366f9a80c917da9a2d7b10d..764968155504f61b1f86a479dd85aed0f08bc180 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF co_cham_no SD  DATE 16/11/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF co_cham_no SD  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -23,7 +23,7 @@ from SD import *
 from sd_cham_no import sd_cham_no
 from co_champ   import cham_gd_sdaster
 
-import Numeric
+import numpy
 
 # -----------------------------------------------------------------------------
 # post-traitement :
@@ -40,7 +40,7 @@ class cham_no_sdaster(cham_gd_sdaster, sd_cham_no):
         topologie si topo>0. Si lgno est une liste vide, c'est equivalent
         a un TOUT='OUI' dans les commandes aster
         Attributs retourne
-          - self.valeurs : Numeric.array contenant les valeurs
+          - self.valeurs : numpy.array contenant les valeurs
         Si on a demande la topo (i.e. self.topo = 1) :
           - self.noeud  : numero de noeud """
       if not self.accessible() :
@@ -53,7 +53,7 @@ class cham_no_sdaster(cham_gd_sdaster, sd_cham_no):
 
       aster.prepcompcham(ncham,nchams,ncmp,"NO      ",topo,lgno)
 
-      valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
+      valeurs=numpy.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
 
       if (topo>0) :
          noeud=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.N'))
index fbfc2ee98ac411d2b2d7c0c43abd49a36b86b238..6b34768976a1cfe4f8f0a28dd488f84e18259031 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF co_char_meca SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF co_char_meca SD  DATE 22/12/2009   AUTEUR ABBAS M.ABBAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
diff --git a/Aster/Cata/cataSTA10/SD/co_contact.py b/Aster/Cata/cataSTA10/SD/co_contact.py
new file mode 100644 (file)
index 0000000..a5f4f49
--- /dev/null
@@ -0,0 +1,26 @@
+#@ MODIF co_contact SD  DATE 22/12/2009   AUTEUR ABBAS M.ABBAS 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2009  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.        
+# ======================================================================
+
+from SD import *
+from sd_contact import sd_contact
+
+# -----------------------------------------------------------------------------
+class char_contact(ASSD, sd_contact):
+   pass
index 256a3a0c293053e2dd8a24fe5f6515da128242ba..5f6f8ebe8e2f053ff6fe3569ad42207bf0ecf0cd 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF co_fonction SD  DATE 16/11/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF co_fonction SD  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -23,7 +23,7 @@ from SD import *
 from sd_fonction import sd_fonction_aster
 
 import os
-import Numeric
+import numpy
 from math import pi
 
 # -----------------------------------------------------------------------------
@@ -112,18 +112,25 @@ class fonction_sdaster(fonction_class, sd_fonction_aster):
         lx = lbl[0:dim]
         ly = lbl[dim:2*dim]
       elif hasattr(self, 'etape') and self.etape.nom == 'DEFI_FONCTION' :
-         if self.etape['VALE'] != None:
+         if self.etape['VALE'] is not None:
             lbl = list(self.etape['VALE'])
             dim = len(lbl)
             lx = [lbl[i] for i in range(0,dim,2)]
             ly = [lbl[i] for i in range(1,dim,2)]
-         elif self.etape['VALE_PARA']!=None:
+         elif self.etape['VALE_PARA'] is not None:
             lx = self.etape['VALE_PARA'].Valeurs()
             ly = self.etape['VALE_FONC'].Valeurs()
+         elif self.etape['ABSCISSE'] is not None:
+            lx = self.etape['ABSCISSE']
+            ly = self.etape['ORDONNEE']
+         else:
+            raise Accas.AsException("Erreur (fonction.Valeurs) : ne fonctionne en " \
+               "PAR_LOT='OUI' que sur des fonctions produites par DEFI_FONCTION " \
+               "dans le fichier de commandes courant.")
       else:
          raise Accas.AsException("Erreur (fonction.Valeurs) : ne fonctionne en " \
                "PAR_LOT='OUI' que sur des fonctions produites par DEFI_FONCTION " \
-               "dans le jdc courant.")
+               "dans le fichier de commandes courant.")
       return [lx, ly]
    def Absc(self):
       """Retourne la liste des abscisses"""
@@ -163,13 +170,13 @@ class fonction_c(fonction_class, sd_fonction_aster):
                           self.Parametres(),
                           nom=self.nom)
       elif arg=='modul' :
-        modul=Numeric.sqrt(Numeric.array(self.Ordo())**2+Numeric.array(self.OrdoImg())**2)
+        modul=numpy.sqrt(numpy.array(self.Ordo())**2+numpy.array(self.OrdoImg())**2)
         return t_fonction(self.Absc(),
                           modul,
                           self.Parametres(),
                           nom=self.nom)
       elif arg=='phase' :
-        phase=Numeric.arctan2(Numeric.array(self.OrdoImg()),Numeric.array(self.Ordo()))
+        phase=numpy.arctan2(numpy.array(self.OrdoImg()),numpy.array(self.Ordo()))
         phase=phase*180./pi
         return t_fonction(self.Absc(),
                           phase,
@@ -198,7 +205,8 @@ class fonction_c(fonction_class, sd_fonction_aster):
          for i in range(dim):
             lr.append(lbl[dim+2*i])
             li.append(lbl[dim+2*i+1])
-      elif hasattr(self, 'etape') and self.etape.nom == 'DEFI_FONCTION':
+      elif hasattr(self, 'etape') and self.etape.nom == 'DEFI_FONCTION' \
+            and self.etape['VALE_C'] is not None:
          lbl=list(self.etape['VALE_C'])
          dim=len(lbl)
          lx=[lbl[i] for i in range(0,dim,3)]
index 01fc194e401428193a0c612d540edbd5f810069c..80b3dc0566d0fc33210ef3ac87f4707fb01f5b8a 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF co_macr_elem_dyna SD  DATE 30/06/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF co_macr_elem_dyna SD  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -22,22 +22,22 @@ import Accas
 from SD import *
 from sd_macr_elem_dyna import sd_macr_elem_dyna
 
-import Numeric
+import numpy
 
-def VALE_triang2array(vect_VALE, dim, typ):
+def VALE_triang2array(vect_VALE, dim, dtype=None):
    """Conversion (par recopie) de l'objet .VALE decrivant une matrice pleine
-   par sa triangulaire sup en Numeric.array plein.
+   par sa triangulaire sup en numpy.array plein.
    """
-   triang_sup = Numeric.array(vect_VALE)
+   triang_sup = numpy.array(vect_VALE)
    assert dim*(dim+1)/2 == len(triang_sup), \
          'Matrice non pleine : %d*(%d+1)/2 != %d' % (dim, dim, len(triang_sup))
 
-   valeur = Numeric.zeros([dim, dim], typ)
+   valeur = numpy.zeros([dim, dim], dtype=dtype)
    for i in range(1, dim+1):
      for j in range(1, i+1):
        k = i*(i-1)/2 + j
        valeur[j-1, i-1]=triang_sup[k-1]
-   valeur = valeur + Numeric.transpose(valeur)
+   valeur = valeur + numpy.transpose(valeur)
    for i in range(dim):
       valeur[i, i] = 0.5 * valeur[i, i]
 
@@ -48,12 +48,12 @@ class macr_elem_dyna(ASSD, sd_macr_elem_dyna):
 
    def EXTR_MATR_GENE(self,typmat) :
       """ retourne les valeurs des matrices generalisees reelles
-      dans un format Numerical Array
+      dans un format numpy
          typmat='MASS_GENE' pour obtenir la matrice de masse generalisee
          typmat='RIGI_GENE' pour obtenir la matrice de raideur generalisee
          typmat='AMOR_GENE' pour obtenir la matrice d'amortissement generalisee
          Attributs retourne
-            - self.valeurs : Numeric.array contenant les valeurs """
+            - self.valeurs : numpy.array contenant les valeurs """
       if not self.accessible():
          raise Accas.AsException("Erreur dans macr_elem_dyna.EXTR_MATR_GENE en PAR_LOT='OUI'")
 
@@ -66,16 +66,16 @@ class macr_elem_dyna(ASSD, sd_macr_elem_dyna):
       else:
          raise Accas.AsException("Le type de la matrice est incorrect")
 
-      desc=Numeric.array(macr_elem.DESC.get())
+      desc=numpy.array(macr_elem.DESC.get())
       # On teste si le DESC du vecteur existe
       if (desc==None):
          raise Accas.AsException("L'objet matrice n'existe pas ou est mal cree par Code Aster")
 
-      matrice = VALE_triang2array(macr_elem.VALE.get(), desc[1], Numeric.Float)
+      matrice = VALE_triang2array(macr_elem.VALE.get(), desc[1])
       return matrice
 
    def RECU_MATR_GENE(self,typmat,matrice) :
-      """ envoie les valeurs d'un Numerical Array dans des matrices generalisees
+      """ envoie les valeurs d'un tableau numpy dans des matrices generalisees
       reelles definies dans jeveux
          typmat='MASS_GENE' pour obtenir la matrice de masse generalisee
          typmat='RIGI_GENE' pour obtenir la matrice de raideur generalisee
@@ -94,22 +94,22 @@ class macr_elem_dyna(ASSD, sd_macr_elem_dyna):
       else:
          raise Accas.AsException("Le type de la matrice est incorrect")
       nom_vale = macr_elem.VALE.nomj()
-      desc=Numeric.array(macr_elem.DESC.get())
+      desc=numpy.array(macr_elem.DESC.get())
 
       # On teste si le DESC de la matrice jeveux existe
       if (desc==None):
          raise Accas.AsException("L'objet matrice n'existe pas ou est mal cree par Code Aster")
-      Numeric.asarray(matrice)
+      numpy.asarray(matrice)
 
       # On teste si la matrice python est de dimension 2
-      if (len(Numeric.shape(matrice))<>2):
+      if (len(numpy.shape(matrice))<>2):
          raise Accas.AsException("La dimension de la matrice est incorrecte")
 
       # On teste si les tailles de la matrice jeveux et python sont identiques
-      if (tuple([desc[1],desc[1]])<>Numeric.shape(matrice)) :
+      if (tuple([desc[1],desc[1]])<>numpy.shape(matrice)) :
          raise Accas.AsException("La dimension de la matrice est incorrecte")
       taille=desc[1]*desc[1]/2.0+desc[1]/2.0
-      tmp=Numeric.zeros([int(taille)],Numeric.Float)
+      tmp=numpy.zeros([int(taille)])
       for j in range(desc[1]+1):
          for i in range(j):
             k=j*(j-1)/2+i
index 70f611b183f6ec8e5998d70949d3e8c8447ed865..459859ab61508ef842d52ad2133e6c5ff3d586c0 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF co_matr_asse_gene SD  DATE 30/06/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF co_matr_asse_gene SD  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -22,23 +22,23 @@ import Accas
 from SD import *
 from sd_matr_asse_gene import sd_matr_asse_gene
 
-import Numeric
+import numpy
 import math
 
-def VALM_triang2array(dict_VALM, dim, typ):
+def VALM_triang2array(dict_VALM, dim, dtype=None):
    """Conversion (par recopie) de l'objet .VALM decrivant une matrice pleine
-   par sa triangulaire inf (et parfois triang sup) en Numeric.array plein.
+   par sa triangulaire inf (et parfois triang sup) en numpy.array plein.
    """
    # stockage symetrique ou non (triang inf+sup)
    sym = len(dict_VALM) == 1
-   triang_sup = Numeric.array(dict_VALM[1])
+   triang_sup = numpy.array(dict_VALM[1])
    assert dim*(dim+1)/2 == len(triang_sup), \
          'Matrice non pleine : %d*(%d+1)/2 != %d' % (dim, dim, len(triang_sup))
    if sym:
       triang_inf = triang_sup
    else:
-      triang_inf = Numeric.array(dict_VALM[2])
-   valeur=Numeric.zeros([dim, dim], typ)
+      triang_inf = numpy.array(dict_VALM[2])
+   valeur=numpy.zeros([dim, dim], dtype=dtype)
    for i in range(1, dim+1):
      for j in range(1, i+1):
        k = i*(i-1)/2 + j
@@ -46,13 +46,13 @@ def VALM_triang2array(dict_VALM, dim, typ):
        valeur[j-1, i-1]=triang_sup[k-1]
    return valeur
 
-def VALM_diag2array(dict_VALM, dim, typ):
+def VALM_diag2array(dict_VALM, dim, dtype=None):
    """Conversion (par recopie) de l'objet .VALM decrivant une matrice
-   diagonale en Numeric.array plein.
+   diagonale en numpy.array plein.
    """
-   diag = Numeric.array(dict_VALM[1])
+   diag = numpy.array(dict_VALM[1])
    assert dim == len(diag), 'Dimension incorrecte : %d != %d' % (dim, len(diag))
-   valeur=Numeric.zeros([dim, dim], typ)
+   valeur=numpy.zeros([dim, dim], dtype=dtype)
    for i in range(dim):
       valeur[i,i] =  diag[i]
    return valeur
@@ -65,23 +65,23 @@ class matr_asse_gene(ASSD, sd_matr_asse_gene):
 class matr_asse_gene_r(matr_asse_gene):
   def EXTR_MATR_GENE(self) :
     """ retourne les valeurs de la matrice generalisee reelle
-    dans un format Numerical Array
+    dans un format numpyal Array
         Attributs retourne
-          - self.valeurs : Numeric.array contenant les valeurs """
+          - self.valeurs : numpy.array contenant les valeurs """
     if not self.accessible():
        raise Accas.AsException("Erreur dans matr_asse_gene.EXTR_MATR_GENE en PAR_LOT='OUI'")
 
-    desc=Numeric.array(self.DESC.get())
+    desc=numpy.array(self.DESC.get())
     # On teste si le DESC de la matrice existe
     if (desc==None):
        raise Accas.AsException("L'objet matrice n'existe pas ou est mal cree par Code Aster")
     # Si le stockage est plein
     if desc[2]==2 :
-       valeur = VALM_triang2array(self.VALM.get(), desc[1], Numeric.Float)
+       valeur = VALM_triang2array(self.VALM.get(), desc[1])
 
     # Si le stockage est diagonal
     elif desc[2]==1 :
-       valeur = VALM_diag2array(self.VALM.get(), desc[1], Numeric.Float)
+       valeur = VALM_diag2array(self.VALM.get(), desc[1])
 
     # Sinon on arrete tout
     else:
@@ -89,32 +89,32 @@ class matr_asse_gene_r(matr_asse_gene):
     return valeur
 
   def RECU_MATR_GENE(self,matrice) :
-    """ envoie les valeurs d'un Numerical Array dans des matrices
+    """ envoie les valeurs d'un tableau numpy dans des matrices
     generalisees reelles definies dans jeveux
         Attributs ne retourne rien """
     if not self.accessible():
        raise Accas.AsException("Erreur dans matr_asse_gene.RECU_MATR_GENE en PAR_LOT='OUI'")
 
     ncham=self.get_name()
-    desc=Numeric.array(self.DESC.get())
+    desc=numpy.array(self.DESC.get())
 
     # On teste si le DESC de la matrice existe
     if (desc==None):
        raise Accas.AsException("L'objet matrice n'existe pas ou est mal cree par Code Aster")
-    Numeric.asarray(matrice)
+    numpy.asarray(matrice)
 
     # On teste si la dimension de la matrice python est 2
-    if (len(Numeric.shape(matrice))<>2) :
+    if (len(numpy.shape(matrice))<>2) :
        raise Accas.AsException("La dimension de la matrice est incorrecte ")
 
     # On teste si les tailles des matrices jeveux et python sont identiques
-    if (tuple([desc[1],desc[1]])<>Numeric.shape(matrice)) :
+    if (tuple([desc[1],desc[1]])<>numpy.shape(matrice)) :
        raise Accas.AsException("La taille de la matrice est incorrecte ")
 
     # Si le stockage est plein
     if desc[2]==2 :
       taille=desc[1]*desc[1]/2.0+desc[1]/2.0
-      tmp=Numeric.zeros([int(taille)],Numeric.Float)
+      tmp=numpy.zeros([int(taille)])
       for j in range(desc[1]+1):
         for i in range(j):
           k=j*(j-1)/2+i
@@ -123,7 +123,7 @@ class matr_asse_gene_r(matr_asse_gene):
       range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1)
     # Si le stockage est diagonal
     elif desc[2]==1 :
-      tmp=Numeric.zeros(desc[1],Numeric.Float)
+      tmp=numpy.zeros(desc[1])
       for j in range(desc[1]):
           tmp[j]=matrice[j,j]
       aster.putcolljev('%-19s.VALM' % ncham,len(tmp),tuple((\
@@ -137,22 +137,22 @@ class matr_asse_gene_r(matr_asse_gene):
 class matr_asse_gene_c(matr_asse_gene):
   def EXTR_MATR_GENE(self) :
     """ retourne les valeurs de la matrice generalisee complexe
-    dans un format Numerical Array
+    dans un format numpy
         Attributs retourne
-          - self.valeurs : Numeric.array contenant les valeurs """
+          - self.valeurs : numpy.array contenant les valeurs """
     if not self.accessible():
        raise Accas.AsException("Erreur dans matr_asse_gene_c.EXTR_MATR_GENE en PAR_LOT='OUI'")
 
-    desc = Numeric.array(self.DESC.get())
+    desc = numpy.array(self.DESC.get())
     if desc == None:
        raise Accas.AsException("L'objet matrice n'existe pas ou est mal cree par Code Aster ")
     # Si le stockage est plein
     if desc[2] == 2 :
-       valeur = VALM_triang2array(self.VALM.get(), desc[1], Numeric.Complex)
+       valeur = VALM_triang2array(self.VALM.get(), desc[1], complex)
 
     # Si le stockage est diagonal
     elif desc[2]==1 :
-       valeur = VALM_diag2array(self.VALM.get(), desc[1], Numeric.Complex)
+       valeur = VALM_diag2array(self.VALM.get(), desc[1], complex)
 
     # Sinon on arrete tout
     else:
@@ -160,34 +160,34 @@ class matr_asse_gene_c(matr_asse_gene):
     return valeur
 
   def RECU_MATR_GENE(self,matrice) :
-    """ envoie les valeurs d'un Numerical Array dans des matrices
+    """ envoie les valeurs d'un tableau numpy dans des matrices
     generalisees reelles definies dans jeveux
         Attributs ne retourne rien """
     if not self.accessible():
        raise Accas.AsException("Erreur dans matr_asse_gene_c.RECU_MATR_GENE en PAR_LOT='OUI'")
 
-    Numeric.asarray(matrice)
+    numpy.asarray(matrice)
     ncham=self.get_name()
-    desc=Numeric.array(self.DESC.get())
+    desc=numpy.array(self.DESC.get())
 
     # On teste si le DESC de la matrice existe
     if (desc==None):
        raise Accas.AsException("L'objet matrice n'existe pas ou est mal cree par Code Aster")
-    Numeric.asarray(matrice)
+    numpy.asarray(matrice)
 
     # On teste si la dimension de la matrice python est 2
-    if (len(Numeric.shape(matrice))<>2) :
+    if (len(numpy.shape(matrice))<>2) :
        raise Accas.AsException("La dimension de la matrice est incorrecte ")
 
     # On teste si la taille de la matrice jeveux et python est identique
-    if (tuple([desc[1],desc[1]])<>Numeric.shape(matrice)) :
+    if (tuple([desc[1],desc[1]])<>numpy.shape(matrice)) :
        raise Accas.AsException("La taille de la matrice est incorrecte ")
 
     # Si le stockage est plein
     if desc[2]==2 :
       taille=desc[1]*desc[1]/2.0+desc[1]/2.0
-      tmpr=Numeric.zeros([int(taille)],Numeric.Float)
-      tmpc=Numeric.zeros([int(taille)],Numeric.Float)
+      tmpr=numpy.zeros([int(taille)])
+      tmpc=numpy.zeros([int(taille)])
       for j in range(desc[1]+1):
         for i in range(j):
           k=j*(j-1)/2+i
@@ -197,8 +197,8 @@ class matr_asse_gene_c(matr_asse_gene):
                        range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
     # Si le stockage est diagonal
     elif desc[2]==1 :
-      tmpr=Numeric.zeros(desc[1],Numeric.Float)
-      tmpc=Numeric.zeros(desc[1],Numeric.Float)
+      tmpr=numpy.zeros(desc[1])
+      tmpc=numpy.zeros(desc[1])
       for j in range(desc[1]):
           tmpr[j]=matrice[j,j].real
           tmpc[j]=matrice[j,j].imag
index 633033b58d6ef1aa4deefdca22544dbb6b6525e2..e4a6f21e9a7f3ba7fabccf0cbf5ae609a54c2810 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF co_resultat SD  DATE 30/06/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF co_resultat SD  DATE 23/03/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
index b071ca2a390fd76ce99d877c77d97f15382a2a1b..eb9e1cf80e3395954e9e123f0d03516fe6d62847 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF co_vect_asse_gene SD  DATE 30/06/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF co_vect_asse_gene SD  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -22,40 +22,40 @@ import Accas
 from SD import *
 from sd_cham_gene import sd_cham_gene
 
-import Numeric
+import numpy
 
 # -----------------------------------------------------------------------------
 
 class vect_asse_gene(ASSD, sd_cham_gene):
    def EXTR_VECT_GENE_R(self) :
       """ retourne les valeurs du vecteur generalisee
-      dans un format Numerical Array
+      dans un format numpy
          Attributs retourne
-            - self.valeurs : Numeric.array contenant les valeurs """
+            - self.valeurs : numpy.array contenant les valeurs """
       if not self.accessible():
          raise Accas.AsException("Erreur dans vect_asse_gene_r.EXTR_VECT_GENE en PAR_LOT='OUI'")
       ncham=self.get_name()
       ncham=ncham+(8-len(ncham))*' '
-      valeur=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE'))
+      valeur=numpy.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE'))
       return valeur
 
    def RECU_VECT_GENE_R(self,vecteur) :
-      """ envoie les valeurs d'un Numerical Array dans un vecteur generalise
+      """ envoie les valeurs d'un tableau numpy dans un vecteur generalise
       reel definie dans jeveux
          Attributs ne retourne rien """
       if not self.accessible():
          raise Accas.AsException("Erreur dans vect_asse_gene_r.RECU_VECT_GENE en PAR_LOT='OUI'")
 
-      Numeric.asarray(vecteur)
+      numpy.asarray(vecteur)
       ncham=self.get_name()
       ncham=ncham+(8-len(ncham))*' '
-      desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
+      desc=numpy.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
       # On teste si le DESC du vecteur existe
       if (desc==None):
          raise Accas.AsException("L'objet vecteur n'existe pas ou \
          est mal cree par Code Aster")
       # On teste si la taille du vecteur jeveux et python est identique
-      if desc[1]<>Numeric.shape(vecteur)[0] :
+      if desc[1]<>numpy.shape(vecteur)[0] :
          raise Accas.AsException("La taille du vecteur python est incorrecte")
       aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(vecteur),tuple((\
       range(1,len(vecteur)+1))),tuple(vecteur),tuple(vecteur),1)
@@ -63,35 +63,35 @@ class vect_asse_gene(ASSD, sd_cham_gene):
 
    def EXTR_VECT_GENE_C(self) :
       """ retourne les valeurs du vecteur generalisee
-      dans un format Numerical Array
+      dans un format numpy
          Attributs retourne
-            - self.valeurs : Numeric.array contenant les valeurs """
+            - self.valeurs : numpy.array contenant les valeurs """
       if not self.accessible():
          raise Accas.AsException("Erreur dans vect_asse_gene_c.EXTR_VECT_GENE en PAR_LOT='OUI'")
 
       ncham=self.get_name()
       ncham=ncham+(8-len(ncham))*' '
-      valeur=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE'),Numeric.Complex)
+      valeur=numpy.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE'), complex)
 
       return valeur
 
    def RECU_VECT_GENE_C(self,vecteur) :
-      """ envoie les valeurs d'un Numerical Array dans un vecteur generalise
+      """ envoie les valeurs d'un tableau numpy dans un vecteur generalise
       complexe definie dans jeveux
          Attributs ne retourne rien """
       if not self.accessible():
          raise Accas.AsException("Erreur dans vect_asse_gene_c.RECU_VECT_GENE en PAR_LOT='OUI'")
 
-      Numeric.asarray(vecteur)
+      numpy.asarray(vecteur)
       ncham=self.get_name()
       ncham=ncham+(8-len(ncham))*' '
-      desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
+      desc=numpy.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
       # On teste si le DESC de la matrice existe
       if (desc==None):
          raise Accas.AsException("L'objet vecteur n'existe pas ou \
          est mal cree par Code Aster")
       # On teste si la taille de la matrice jeveux et python est identique
-      if desc[1]<>Numeric.shape(vecteur)[0] :
+      if desc[1]<>numpy.shape(vecteur)[0] :
          raise Accas.AsException("La taille du vecteur python est incorrecte")
       tmpr=vecteur.real
       tmpc=vecteur.imag
diff --git a/Aster/Cata/cataSTA10/SD/sd_char_contact.py b/Aster/Cata/cataSTA10/SD/sd_char_contact.py
deleted file mode 100644 (file)
index 1bd2f4d..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-#@ MODIF sd_char_contact SD  DATE 12/05/2009   AUTEUR MAZET S.MAZET 
-# -*- coding: iso-8859-1 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2007  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.
-# ======================================================================
-
-from SD import *
-from SD.sd_champ import sd_champ
-from SD.sd_xfem import sd_modele_xfem, sd_contact_xfem
-
-class sd_char_contact(AsBase):
-    nomj      =SDNom(fin=16)
-
-    FORMCO    = Facultatif(AsVI())
-
-    def exists(self):
-        # retourne True si la SD semble exister.
-        return self.FORMCO.exists
-
-
-    def formulation_xfem(self):
-        if not self.exists() : return False
-        iform = self.FORMCO.get()[0]
-        return iform == 3
-
-    def contact_xfem_actif(self):
-        if not self.formulation_xfem() : return False
-        return self.XNBASC.exists
-
-    BAMACO    = Facultatif(AsVI())
-    BANOCO    = Facultatif(AsVI())
-    CARACF    = Facultatif(AsVR())
-    COMAFO    = Facultatif(AsVR())
-    JEUSUR    = Facultatif(AsVR())
-    CONVCO    = Facultatif(AsVI())
-    DIRNOR    = Facultatif(AsVR())
-    DIRAPP    = Facultatif(AsVR())
-    ECPDON    = Facultatif(AsVI())
-    CARFRO    = Facultatif(AsVR())
-    FROTE     = Facultatif(AsVR())
-    JEUCON    = Facultatif(AsVR())
-    JEUCOQ    = Facultatif(AsVR())
-    JEUPOU    = Facultatif(AsVR())
-    JFO1CO    = Facultatif(AsVK8())
-    JFO2CO    = Facultatif(AsVK8())
-    JFO3CO    = Facultatif(AsVK8())
-    JSUPCO    = Facultatif(AsVR())
-    MAESCL    = Facultatif(AsVI())
-    MAILCO    = Facultatif(AsVI())
-    MAMACO    = Facultatif(AsVI())
-    MANOCO    = Facultatif(AsVI())
-    METHCO    = Facultatif(AsVI())
-    NDIMCO    = Facultatif(AsVI())
-    NOESCL    = Facultatif(AsVR())
-    NOEUCO    = Facultatif(AsVI())
-    NOEUQU    = Facultatif(AsVI())
-    NOMACO    = Facultatif(AsVI())
-    NORLIS    = Facultatif(AsVI())
-    NOZOCO    = Facultatif(AsVI())
-    PBAMACO   = Facultatif(AsVI())
-    PBANOCO   = Facultatif(AsVI())
-    PENAL     = Facultatif(AsVR())
-    PMAMACO   = Facultatif(AsVI())
-    PMANOCO   = Facultatif(AsVI())
-    PNOEUQU   = Facultatif(AsVI())
-    PNOMACO   = Facultatif(AsVI())
-    PRANOCO   = Facultatif(AsVI())
-    PSSNOCO   = Facultatif(AsVI())
-    PSANOFR   = Facultatif(AsVI())
-    PSUMACO   = Facultatif(AsVI())
-    PSUNOCO   = Facultatif(AsVI())
-    PZONECO   = Facultatif(AsVI())
-    RANOCO    = Facultatif(AsVI())
-    SANSNQ    = Facultatif(AsVI())
-    SSNOCO    = Facultatif(AsVI())
-    SANOFR    = Facultatif(AsVI())
-    SYMECO    = Facultatif(AsVI())
-    TABFIN    = Facultatif(AsVR())
-    TANDEF    = Facultatif(AsVR())
-    TANPOU    = Facultatif(AsVR())
-    TOLECO    = Facultatif(AsVR())
-    xfem      = Facultatif(AsVI())
-    XFIMAI    = Facultatif(AsVK8())
-    XNBASC    = Facultatif(AsVK24())
-    XNRELL    = Facultatif(AsVK24())
-    TANINI    = Facultatif(AsVR())
-    NORMCO    = Facultatif(AsVR())
-    TANGCO    = Facultatif(AsVR())  
-    EXCLFR    = Facultatif(AsVR())  
-    MODELX    = Facultatif(AsVK8(lonmax=1,))
-    CNCTE     = Facultatif(AsVI())
-
-    # si contact xfem :
-    xfem      = Facultatif(sd_contact_xfem(SDNom(nomj='')))
-
-
-    # indirection vers les champs de .XNBASC :
-    # Question à Mickael :
-    #   la fonction suivante ne serait-elle pas mieux placée dans la classe sd_contact_xfem ?
-    def check_char_contact_xfem_XNBASC(self, checker):
-        if not self.contact_xfem_actif() : return
-        lnom  = self.XNBASC.get()
-        nbnom = self.XNBASC.lonuti
-        for k in range(nbnom) :
-            nom = lnom[k]
-            if not nom.strip(): continue
-            sd2 = sd_champ(nom)
-            sd2.check(checker)
-
-
-    # indirection vers les champs de .XNRELL :
-    # On ne vérifie rien pour l'instant
-    # Question à Mickael :
-    #   la fonction suivante ne serait-elle pas mieux placée dans la classe sd_contact_xfem ?
-    def check_char_contact_xfem_XNRELL(self, checker):
-        if not self.contact_xfem_actif() : return
-        lnom  = self.XNRELL.get()
-        nbnom = self.XNRELL.lonuti
-        for k in range(nbnom) :
-            nom = lnom[k]
-            oo  = AsObject(SDNom(nomj=nom,debut=0),genr='V', xous='S', type=Parmi('I','R'))
-            oo.check(checker)
-
-
-    # Verification MODELE xfem
-    def check_char_contact_xfem_MODELX(self, checker):
-        if not self.contact_xfem_actif() : return
-        nom = self.MODELX.get()[0]
-        sd2 = sd_modele_xfem(nom)
-        sd2.check(checker)
-
-
index 7e5a1dc5910f9e1eeabe00aa660a2452ef63632d..63e848c332ae9849dc7053a66722bb2633db76fc 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_char_meca SD  DATE 16/09/2008   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_char_meca SD  DATE 22/12/2009   AUTEUR ABBAS M.ABBAS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -22,8 +22,6 @@ from SD import *
 
 from SD.sd_ligrel import sd_ligrel
 from SD.sd_carte import sd_carte
-from SD.sd_char_unilate import sd_char_unilate
-from SD.sd_char_contact import sd_char_contact
 from SD.sd_char_cine import sd_char_cine
 
 
@@ -99,9 +97,6 @@ class sd_char_meca(AsBase):
     CHME = Facultatif(sd_char_chme())
     ELIM = Facultatif(sd_char_cine())
 
-    UNILATE = Facultatif(sd_char_unilate())
-    CONTACT = Facultatif(sd_char_contact())
-
     TRANS01 = Facultatif(AsVR(lonmax=6, ))
     TRANS02 = Facultatif(AsVR(lonmax=6, ))
     LISMA01 = Facultatif(AsVI(lonmax=12, ))
index b283ec7324c0c375bf5fdd28c0467a8d61b0a9a5..df8475890ee6b13ea6138a4f098032477be0b50d 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_compor SD  DATE 30/06/2008   AUTEUR PROIX J-M.PROIX 
+#@ MODIF sd_compor SD  DATE 08/12/2009   AUTEUR PROIX J-M.PROIX 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -52,8 +52,12 @@ class sd_compor(AsBase):
     #------------------------------------
         nboccm=cpri[4]
         nvi   =cpri[2]
-        nbsys=(nvi-9)/3
-        assert nvi==9+3*nbsys , (nvi, nbsys, cpri)
+        if cpri[5] > 0 : 
+            nbsys=(nvi-25)/3
+            assert nvi==25+3*nbsys , (nvi, nbsys, cpri)
+        else :
+            nbsys=(nvi-9)/3
+            assert nvi==9+3*nbsys , (nvi, nbsys, cpri)
         cprk=self.CPRK.get_stripped()
 
         # vérif existence et longueur
@@ -67,7 +71,7 @@ class sd_compor(AsBase):
         assert cpri[2] == nvi ,cpri
         assert cpri[3] == 1   ,cpri
         assert cpri[4] > 0    ,cpri
-        assert cpri[5] == 1   ,cpri
+        assert cpri[5] >= 0   ,cpri
         assert cpri[6] == nvi ,cpri
 
         # vérif CPRK :
@@ -181,7 +185,7 @@ class sd_compor(AsBase):
             sd2=sd_mater(mater1) ; sd2.check(checker)
             assert loifib1 != '' , cprk
             assert algo1d  in ('ANALYTIQUE','DEBORST') , cprk
-            assert deform  in ('PETIT','PETIT_REAC','REAC_GEOM') , cprk
+            assert deform  in ('PETIT','PETIT_REAC','GROT_GDEP') , cprk
             assert nbfib > 0      , cprk
 
 
diff --git a/Aster/Cata/cataSTA10/SD/sd_contact.py b/Aster/Cata/cataSTA10/SD/sd_contact.py
new file mode 100644 (file)
index 0000000..ae9c94a
--- /dev/null
@@ -0,0 +1,294 @@
+#@ MODIF sd_contact SD  DATE 20/04/2010   AUTEUR JAUBERT A.JAUBERT 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2009  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.        
+# ======================================================================
+
+from SD import *
+from SD.sd_ligrel import sd_ligrel
+from SD.sd_champ import sd_champ
+from SD.sd_xfem import sd_modele_xfem
+from SD.sd_xfem import sd_fiss_xfem
+from SD.sd_cham_no   import sd_cham_no
+from SD.sd_char_meca   import sd_char_chme
+from sd_prof_chno import sd_prof_chno
+
+class sd_contact(AsBase):
+    nomj = SDNom(fin=8)
+    
+
+    # Recap longueurs vecteurs (voir CFMMVD.F)    
+    zdime = 12
+    zpari = 25
+    zparr = 5
+    zdirn = 6
+    zcmdf = 6
+    zcmcf = 27
+    zcmxf = 16
+    zexcl = 6
+    ztypn = 1
+    ztypm = 2 
+    zmaes = 6 
+    zmesx = 5        
+
+    MODELE = AsVK8(SDNom(nomj='.CHME.MODEL.NOMO'),lonmax=1, )
+    PARACI = AsVI (SDNom(nomj='.CONTACT.PARACI') ,lonmax=zpari,)
+    PARACR = AsVR (SDNom(nomj='.CONTACT.PARACR') ,lonmax=zparr,)
+    
+
+    def exists(self):
+        # retourne "vrai" si la SD semble exister (et donc qu'elle peut etre v??rifi??e)
+        return self.PARACI.exists
+
+    def type_form(self):
+        para  = self.PARACI.get()
+        iform = para[3]
+        return iform
+
+    def formulation_xfem(self):
+        if not self.exists() : return False
+        iform = self.PARACI.get()[3]
+        return iform == 3
+    NDIMCO = Facultatif(AsVI(SDNom(nomj='.CONTACT.NDIMCO') ))
+    METHCO = Facultatif(AsVI(SDNom(nomj='.CONTACT.METHCO') ))
+    TOLECO = Facultatif(AsVR(SDNom(nomj='.CONTACT.TOLECO') ))
+
+    def dimeC(self):
+      iform = self.type_form()
+      if (iform==1) or (iform==2) or (iform==3) :
+        para   = self.NDIMCO.get()
+        nzoco  = para[1]
+        nsuco  = para[2]
+        nmaco  = para[3]
+        nnoco  = para[4]
+        nmano  = para[5]
+        nnoma  = para[6]
+        ntnoe  = para[8]
+        ntmae  = para[9]
+        ntpc   = para[10] 
+        ntelno = para[11]
+      return nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno
+
+    
+    def check_para(self,checker):
+      iform = self.type_form()
+      if (iform==1) or (iform==2) or (iform==3) :
+        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno  = self.dimeC()
+        lldime = self.NDIMCO.lonmax 
+        llmeth = self.METHCO.lonmax
+        lltole = self.TOLECO.lonmax
+        assert llmeth == nzoco*10 
+        assert lltole == nzoco*2
+        assert lldime == self.zdime
+      if (iform==4) :
+        lldime = self.NDIMCU.lonmax 
+        assert lldime == 2     
+      return
+      
+    JEUFO1 = Facultatif(AsVK8(SDNom(nomj='.CONTACT.JFO1CO') ))
+    JEUFO2 = Facultatif(AsVK8(SDNom(nomj='.CONTACT.JFO2CO') ))
+    DIRAPP = Facultatif(AsVR(SDNom(nomj='.CONTACT.DIRAPP') )) 
+    DIRNOR = Facultatif(AsVR(SDNom(nomj='.CONTACT.DIRNOR') )) 
+    JEUCOQ = Facultatif(AsVR(SDNom(nomj='.CONTACT.JEUCOQ') )) 
+    JEUPOU = Facultatif(AsVR(SDNom(nomj='.CONTACT.JEUPOU') ))
+    
+    PZONE  = Facultatif(AsVI(SDNom(nomj='.CONTACT.PZONECO') ))
+    PSURMA = Facultatif(AsVI(SDNom(nomj='.CONTACT.PSUMACO') ))  
+    PSURNO = Facultatif(AsVI(SDNom(nomj='.CONTACT.PSUNOCO') ))       
+    
+    CONTMA = Facultatif(AsVI(SDNom(nomj='.CONTACT.MAILCO') ))
+    CONTNO = Facultatif(AsVI(SDNom(nomj='.CONTACT.NOEUCO') ))
+    
+    NOZOCO = Facultatif(AsVI(SDNom(nomj='.CONTACT.NOZOCO') ))  
+    MANOCO = Facultatif(AsVI(SDNom(nomj='.CONTACT.MANOCO') ))
+    NOMACO = Facultatif(AsVI(SDNom(nomj='.CONTACT.NOMACO') ))
+    
+    PMANO  = Facultatif(AsVI(SDNom(nomj='.CONTACT.PMANOCO') ))
+    PNOMA  = Facultatif(AsVI(SDNom(nomj='.CONTACT.PNOMACO') ))
+    
+    PSANS  = Facultatif(AsVI(SDNom(nomj='.CONTACT.PSSNOCO') ))
+    SANSN  = Facultatif(AsVI(SDNom(nomj='.CONTACT.SSNOCO') ))
+    
+    TYPEMA = Facultatif(AsVI(SDNom(nomj='.CONTACT.TYPEMA') ))
+    TYPENO = Facultatif(AsVI(SDNom(nomj='.CONTACT.TYPENO') ))
+    MAESCL = Facultatif(AsVI(SDNom(nomj='.CONTACT.MAESCL') )) 
+    
+    TYPE   = Facultatif(AsVK8(SDNom(nomj='.TYPE') ))
+    LIGRE  = Facultatif(sd_ligrel(SDNom(nomj='.CHME.LIGRE')))
+    RELLIN = Facultatif(sd_char_chme(SDNom(nomj='.CHME')))
+            
+    def check_mail(self,checker):    
+      iform = self.type_form()
+      if (iform==2) or (iform==1) :
+        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno = self.dimeC()
+        assert self.JEUFO1.lonmax == nzoco
+        assert self.JEUFO2.lonmax == nzoco
+        assert self.DIRAPP.lonmax == 3*nzoco
+        assert self.DIRNOR.lonmax == self.zdirn*nzoco 
+        assert self.JEUCOQ.lonmax == nmaco
+        assert self.JEUPOU.lonmax == nmaco
+        
+        assert self.PZONE.lonmax  == nzoco+1
+        assert self.PSURMA.lonmax == nsuco+1
+        assert self.PSURNO.lonmax == nsuco+1        
+        assert self.CONTMA.lonuti == nmaco
+        assert self.CONTNO.lonuti == nnoco
+        
+        assert self.NOZOCO.lonmax == nnoco
+        assert self.MANOCO.lonuti == nmano
+        assert self.NOMACO.lonuti == nnoma
+
+        assert self.MANOCO.lonmax == 20*max(nnoco,nmaco)
+        assert self.NOMACO.lonmax == 20*max(nnoco,nmaco) 
+                
+        assert self.PMANO.lonmax  == nnoco+1
+        assert self.PNOMA.lonmax  == nmaco+1
+        
+        assert self.PSANS.lonmax  == nzoco+1
+        assert self.SANSN.lonmax  >= 1
+        
+        assert self.TYPENO.lonmax == self.ztypn*nnoco
+        assert self.TYPEMA.lonmax == self.ztypm*nmaco
+        assert self.MAESCL.lonmax == self.zmaes*ntmae
+        
+      return
+      
+    CARADF = Facultatif(AsVR(SDNom(nomj='.CONTACT.CARADF') ))   
+      
+    def check_form_disc(self,checker):    
+      iform = self.type_form()
+      if (iform==1) :
+        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno = self.dimeC()
+        assert self.CARADF.lonmax == self.zcmdf*nzoco
+        assert ntnoe == ntpc
+      return      
+    
+    CARACF = Facultatif(AsVR(SDNom(nomj='.CONTACT.CARACF') ))  
+    EXCLFR = Facultatif(AsVR(SDNom(nomj='.CONTACT.EXCLFR') )) 
+     
+    PBARS  = Facultatif(AsVI(SDNom(nomj='.CONTACT.PBANOCO') ))
+    BARSNO = Facultatif(AsVI(SDNom(nomj='.CONTACT.BANOCO') ))   
+    
+    PBARM  = Facultatif(AsVI(SDNom(nomj='.CONTACT.PBAMACO') ))
+    BARSMA = Facultatif(AsVI(SDNom(nomj='.CONTACT.BAMACO') ))   
+    
+    PRACC  = Facultatif(AsVI(SDNom(nomj='.CONTACT.PRANOCO') ))
+    RACCNO = Facultatif(AsVI(SDNom(nomj='.CONTACT.RANOCO') ))
+    
+    PFROT  = Facultatif(AsVI(SDNom(nomj='.CONTACT.PSANOFR') ))
+    FROTNO = Facultatif(AsVI(SDNom(nomj='.CONTACT.SANOFR') ))   
+      
+    def check_form_cont(self,checker):
+      iform = self.type_form()
+      if (iform==2) :
+        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno = self.dimeC()
+        assert self.CARACF.lonmax == self.zcmcf*nzoco
+        assert self.EXCLFR.lonmax == self.zexcl*nzoco       
+        
+        assert self.PBARS.lonmax  == nzoco+1
+        assert self.BARSNO.lonmax >= 1      
+        
+        assert self.PBARM.lonmax  == nzoco+1
+        assert self.BARSMA.lonmax >= 1 
+        
+        assert self.PRACC.lonmax  == nzoco+1
+        assert self.RACCNO.lonmax >= 1 
+        
+        assert self.PFROT.lonmax  == nzoco+1
+        assert self.FROTNO.lonmax >= 1   
+
+        assert self.LIGRE.exists              
+         
+      return  
+    
+    MAESCX = Facultatif(AsVI(SDNom(nomj='.CONTACT.MAESCX') ))  
+    CARAXF = Facultatif(AsVR(SDNom(nomj='.CONTACT.CARAXF') )) 
+    MODELX = Facultatif(AsVK8(SDNom(nomj='.CONTACT.MODELX') ))
+    XFIMAI = Facultatif(AsVK8(SDNom(nomj='.CONTACT.XFIMAI') )) 
+    XNBASC = Facultatif(AsVK24(SDNom(nomj='.CONTACT.XNBASC') )) 
+    XNRELL = Facultatif(AsVK24(SDNom(nomj='.CONTACT.XNRELL') ))     
+    CNCTE  = Facultatif(AsVI(SDNom(nomj='.CONTACT.CNCTE') )) 
+    PRCHNO = Facultatif(sd_prof_chno(SDNom(nomj='.PRCHN00000'))) 
+    PRCHN1 = Facultatif(sd_prof_chno(SDNom(nomj='.PRCHN00001')))            
+    LIGRE  = Facultatif(sd_ligrel(SDNom(nomj='.CHME.LIGRE')))
+
+
+    def contact_xfem_actif(self):
+        if not self.formulation_xfem() : return False
+        self.XNBASC.exists
+           
+    def check_form_xfem(self,checker):
+      iform = self.type_form()
+      if (iform==3) :
+        nzoco,nsuco,nmaco,nnoco,nmano,nnoma,ntnoe,ntmae,ntpc,ntelno = self.dimeC()
+        paraci = self.PARACI.get()
+        if (paraci[0]!=0) :
+          assert self.MAESCX.lonuti == self.zmesx*ntmae      
+        assert self.CARAXF.lonmax == self.zcmxf*nzoco
+        assert self.MODELX.lonmax == 1
+        assert self.XFIMAI.lonmax == nzoco
+        assert self.XNRELL.exists
+        assert self.LIGRE.exists
+      return  
+      
+    def check_char_contact_xfem_XNBASC(self, checker):
+        if not self.contact_xfem_actif() : return
+        lnom  = self.XNBASC.get()
+        nbnom = self.XNBASC.lonuti     
+        for k in range(nbnom) :
+          nom = lnom[k]
+          if not nom.strip(): continue
+          sd2 = sd_champ(nom)
+          sd2.check(checker)
+  
+                  
+    def check_char_contact_xfem_XNRELL(self, checker):
+        iform = self.type_form()
+        if (iform==3) :
+          lnom  = self.XNRELL.get()
+          nbnom = self.XNRELL.lonuti
+          nom = lnom[0]
+          if (nom[8:14]!='.LISEQ'):
+            oo  = AsObject(SDNom(nomj=nom,debut=0),genr='V', xous='S', type=Parmi('I','R'))
+            oo.check(checker)
+        
+    # Verification MODELE xfem
+    def check_char_contact_xfem_MODELX(self, checker):
+        if not self.contact_xfem_actif() : return
+        nom = self.MODELX.get()[0]
+        sd2 = sd_modele_xfem(nom)
+        sd2.check(checker)
+      
+    
+    NDIMCU = Facultatif(AsVI(SDNom(nomj='.UNILATE.NDIMCU') ))
+    CMPGCU = Facultatif(AsVK8(SDNom(nomj='.UNILATE.CMPGCU') ))
+    COEFD  = Facultatif(AsVK8(SDNom(nomj='.UNILATE.COEFD') ))
+    COEFG  = Facultatif(AsVK8(SDNom(nomj='.UNILATE.COEFG') ))
+    LISNOE = Facultatif(AsVI(SDNom(nomj='.UNILATE.LISNOE') ))
+    POINOE = Facultatif(AsVI(SDNom(nomj='.UNILATE.POINOE') ))  
+    def check_form_unil(self,checker):
+      iform = self.type_form()
+      if (iform==4) :
+         assert self.CMPGCU.lonmax >= 1
+         assert self.COEFD.lonmax >= 1
+         assert self.COEFG.lonmax >= 1
+         assert self.LISNOE.lonmax >= 1
+         assert self.POINOE.lonmax >= 1                                    
+         
+      return       
+      
diff --git a/Aster/Cata/cataSTA10/SD/sd_corresp_2_mailla.py b/Aster/Cata/cataSTA10/SD/sd_corresp_2_mailla.py
new file mode 100644 (file)
index 0000000..340ca74
--- /dev/null
@@ -0,0 +1,44 @@
+#@ MODIF sd_corresp_2_mailla SD  DATE 02/02/2010   AUTEUR PELLET J.PELLET 
+# -*- coding: iso-8859-1 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2010  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.        
+# ======================================================================
+
+from SD import *
+
+class sd_corresp_2_mailla(AsBase):
+    nomj = SDNom(fin=16)
+    PJXX_K1 = AsVK24(lonmax=5)
+
+    # Remarque : pour retirer la plupart des "facultatifs", il faudrait changer
+    # les noms : PJEF_NB -> PE.EFNB
+    #            ...
+    #            PJNG_I1 -> PN.NGI1
+    # et faire 2 class sd_corresp_2_elem et sd_corresp_2_nuage)
+    PJEF_NB = Facultatif(AsVI())
+    PJEF_NU = Facultatif(AsVI())
+    PJEF_M1 = Facultatif(AsVI())
+    PJEF_CF = Facultatif(AsVR())
+    PJEF_TR = Facultatif(AsVI())
+    PJEF_AM = Facultatif(AsVI())
+    PJEF_CO = Facultatif(AsVR())
+
+    PJNG_I1 = Facultatif(AsVI())
+    PJNG_I2 = Facultatif(AsVI())
+
+
+
index e04756076711fe2de94871582edbb356ef5ec239..922c9a585be8aadb7c4a57652ae3acc305d7623e 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_resultat SD  DATE 10/11/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF sd_resultat SD  DATE 11/05/2010   AUTEUR COURTOIS M.COURTOIS 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -24,7 +24,6 @@ from SD.sd_titre import sd_titre
 from SD.sd_l_table import sd_l_table
 from SD.sd_champ import sd_champ
 from SD.sd_l_charges import sd_l_charges
-from SD.sd_char_contact import sd_char_contact
 from SD.sd_util import *
 
 
@@ -37,8 +36,6 @@ class sd_resultat(sd_titre):
     ORDR = AsVI(SDNom(debut=19), )
     DESC = AsObject(SDNom(debut=19), genr='N', xous='S', type='K', ltyp=16, )
 
-    NOEU = Facultatif(AsVK16(SDNom(debut=19)))  # en attendant la correction de EL 12583
-
     # la déclaration suivante simplifie la fonction check_resultat_i_char
     CHAR = Facultatif(AsVK24(SDNom(debut=19),))
 
index a262080e27b6d68e39e6f49465f12b8c00d80af4..1e803df53a861619bc0186e8f8eab5f4c7ff67dc 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_stoc_morse SD  DATE 13/02/2007   AUTEUR PELLET J.PELLET 
+#@ MODIF sd_stoc_morse SD  DATE 29/03/2010   AUTEUR BOITEAU O.BOITEAU 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -23,7 +23,7 @@ from SD import *
 class sd_stoc_morse(AsBase):
     nomj = SDNom(fin=19)
     SMDE = AsVI(lonmax=6)
-    SMHC = AsVI()
+    SMHC = AsVS()
     SMDI = AsVI()
 
 
index 19a3d1567b3a352d90a167c85489c76d666508cb..a4f290bead492df05e87e9363317a89aaead452f 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_util SD  DATE 10/11/2009   AUTEUR COURTOIS M.COURTOIS 
+#@ MODIF sd_util SD  DATE 19/04/2010   AUTEUR GREFFET N.GREFFET 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -51,21 +51,27 @@ def sdu_compare(ojb, checker, val1, comp, val2, comment=''):
     ok = 0
     if comp == "==" :
        ok = val1 == val2
+       comp1 = "n'est pas égale au"
     elif comp == "!=" :
        ok = val1 != val2
+       comp1 = "est égale au"
     elif comp == ">=" :
        ok = val1 >= val2
+       comp1 = "est inférieure strictement au"
     elif comp == "<=" :
        ok = val1 <= val2
+       comp1 = "est supérieure strictement au"
     elif comp == ">" :
        ok = val1 > val2
+       comp1 = "est inférieure ou égale au"
     elif comp == "<" :
        ok = val1 < val2
+       comp1 = "est supérieure ou égale au"
     else :
        sdu_assert(ojb, checker, 0, 'sdu_compare: opérateur de comparaison interdit: '+comp)
 
     if not ok :
-            checker.err(ojb, "condition non respectée : %s  %s  %s (%s)" % (val1,comp,val2,comment))
+            checker.err(ojb, "condition non respectée pour le test suivant : longueur séquence (%s) %s nombre d'éléments différents dans la séquence (%s) (%s)" % (val1,comp1,val2,comment))
 
 
 #   1.2 Utilitaires pour des séquences :
@@ -80,7 +86,7 @@ def sdu_tous_differents(ojb,checker,sequence=None,comment=''):
     else :
         seq=ojb.get()
 
-    sdu_compare(ojb, checker, len(seq), '==', len(set(seq)), comment='Tous différents: '+comment)
+    sdu_compare(ojb, checker, len(seq), '==', len(set(seq)), comment='Tous les éléments de la séquence devraient être différents, mais ils ne le sont pas'+comment)
 
 
 def sdu_tous_non_blancs(ojb,checker,sequence=None,comment=''):
index 7afd93bbcf3ed28b93f0794b2611235dd9742199..a4af5cdd7b0f9b5720a1d105270b496060d2a8f5 100644 (file)
@@ -1,4 +1,4 @@
-#@ MODIF sd_xfem SD  DATE 24/08/2009   AUTEUR GENIAUT S.GENIAUT 
+#@ MODIF sd_xfem SD  DATE 11/01/2010   AUTEUR COLOMBO D.COLOMBO 
 # -*- coding: iso-8859-1 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
@@ -48,7 +48,7 @@ class sd_fiss_xfem(AsBase):
     FONDMULT        = Facultatif(AsVI())
     CARAFOND        = Facultatif(AsVR(lonmax=12,))
 
-# I.2) objets relatifs à l'enrichissement
+# I.2) objets relatifs a l'enrichissement
 
     GROUP_MA_ENRI   = AsVI()
     GROUP_NO_ENRI   = AsVI()
@@ -61,10 +61,13 @@ class sd_fiss_xfem(AsBase):
     MAILFISS_INDIC = AsVI(SDNom(nomj='.MAILFISS .INDIC'), lonmax=6, )
     LISNOH         = Facultatif(AsVI())
 
-# I.3) objets relatifs à la propagation
+# I.3) objets relatifs a la propagation
 
     PRO_MES_EL  = Facultatif(sd_cham_elem(SDNom(nomj='.PRO.MES_EL')))
     PRO_NORMAL  = Facultatif(sd_cham_elem(SDNom(nomj='.PRO.NORMAL')))
+    PRO_RAYON_TORE  = Facultatif(AsVR(SDNom(nomj='.PRO.RAYON_TORE'),lonmax=1,))
+    PRO_NOEUD_TORE  = Facultatif(AsVL(SDNom(nomj='.PRO.NOEUD_TORE')))
+    PRO_MOD_GRILLE  = Facultatif(AsVK8(SDNom(nomj='.PRO.MOD_GRILLE'),lonmax=1,))
 
 # I.4) objets relatifs au contact
 
@@ -72,14 +75,16 @@ class sd_fiss_xfem(AsBase):
     LISCO  = Facultatif(AsVR(SDNom(nomj='.LISCO')))
     LISEQ  = Facultatif(AsVI(SDNom(nomj='.LISEQ')))
     LISRL  = Facultatif(AsVI(SDNom(nomj='.LISRL')))
+    LISUP  = Facultatif(AsVI(SDNom(nomj='.LISUP')))    
 
 
-# 1.5) vérifications d'existence :
+# 1.5) verifications d'existence :
 
     def check_existence(self,checker) :
         sdu_ensemble((self.FONDFISS, self.FONDMULT))
         sdu_ensemble((self.LISRL, self.LISCO))
         sdu_ensemble((self.PRO_MES_EL.CELD, self.PRO_NORMAL.CELD))
+        sdu_ensemble((self.PRO_RAYON_TORE, self.PRO_NOEUD_TORE))
 
 
 #-------------------------------
@@ -89,7 +94,7 @@ class sd_fiss_xfem(AsBase):
 class sd_modele_xfem(AsBase):
     nomj = SDNom(fin=8)
 
-# II.1) objets relatifs aux sous-éléments
+# II.1) objets relatifs aux sous-elements
 
     TOPOSE_PIN  = sd_cham_elem(SDNom(nomj='.TOPOSE.PIN'))
     TOPOSE_CNS  = sd_cham_elem(SDNom(nomj='.TOPOSE.CNS'))
@@ -111,7 +116,7 @@ class sd_modele_xfem(AsBase):
     TOPOFAC_OE  = sd_cham_elem(SDNom(nomj='.TOPOFAC.OE'))
     TOPOFAC_OM  = sd_cham_elem(SDNom(nomj='.TOPOFAC.OM'))
 
-# II.3) objets concaténés relatifs aux level sets
+# II.3) objets concatenes relatifs aux level sets
 
     LNNO   = sd_cham_no()
     LTNO   = sd_cham_no()
@@ -124,20 +129,3 @@ class sd_modele_xfem(AsBase):
     FISS   = AsVK8()             # noms des fissures
     NFIS   = AsVI(lonmax=1,)     # nombre de fissures
     XMAFIS = sd_carte()          # pour chaque maille : nom de la fissure
-
-
-#----------------------------------
-#       III. sd charge de contact
-#----------------------------------
-
-class sd_contact_xfem(AsBase):
-#-------------------------------
-    nomj = SDNom(fin=16)
-
-    CARACF  = AsVR()
-    ECPDON  = AsVI()
-    METHCO  = AsVI()
-
-    XFIMAI  = AsVK8()
-    XNRELL  = AsVK24()
-    XNBASC  = AsVK24()