From 49c44133a1799d67be45598b1a96d9b664c5eb0c Mon Sep 17 00:00:00 2001 From: Pascale Noyret Date: Thu, 3 Jun 2010 09:16:27 +0000 Subject: [PATCH] Mise en coherence avec 10.1.27 --- Aster/Cata/cataSTA10/SD/co_cham_elem.py | 8 +- Aster/Cata/cataSTA10/SD/co_cham_no.py | 8 +- Aster/Cata/cataSTA10/SD/co_char_meca.py | 2 +- Aster/Cata/cataSTA10/SD/co_contact.py | 26 ++ Aster/Cata/cataSTA10/SD/co_fonction.py | 24 +- Aster/Cata/cataSTA10/SD/co_macr_elem_dyna.py | 34 +- Aster/Cata/cataSTA10/SD/co_matr_asse_gene.py | 76 ++--- Aster/Cata/cataSTA10/SD/co_resultat.py | 2 +- Aster/Cata/cataSTA10/SD/co_vect_asse_gene.py | 32 +- Aster/Cata/cataSTA10/SD/sd_char_contact.py | 146 --------- Aster/Cata/cataSTA10/SD/sd_char_meca.py | 7 +- Aster/Cata/cataSTA10/SD/sd_compor.py | 14 +- Aster/Cata/cataSTA10/SD/sd_contact.py | 294 ++++++++++++++++++ .../Cata/cataSTA10/SD/sd_corresp_2_mailla.py | 44 +++ Aster/Cata/cataSTA10/SD/sd_resultat.py | 5 +- Aster/Cata/cataSTA10/SD/sd_stoc_morse.py | 4 +- Aster/Cata/cataSTA10/SD/sd_util.py | 12 +- Aster/Cata/cataSTA10/SD/sd_xfem.py | 34 +- 18 files changed, 494 insertions(+), 278 deletions(-) create mode 100644 Aster/Cata/cataSTA10/SD/co_contact.py delete mode 100644 Aster/Cata/cataSTA10/SD/sd_char_contact.py create mode 100644 Aster/Cata/cataSTA10/SD/sd_contact.py create mode 100644 Aster/Cata/cataSTA10/SD/sd_corresp_2_mailla.py diff --git a/Aster/Cata/cataSTA10/SD/co_cham_elem.py b/Aster/Cata/cataSTA10/SD/co_cham_elem.py index 2b30e094..ad96f6ef 100644 --- a/Aster/Cata/cataSTA10/SD/co_cham_elem.py +++ b/Aster/Cata/cataSTA10/SD/co_cham_elem.py @@ -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')) diff --git a/Aster/Cata/cataSTA10/SD/co_cham_no.py b/Aster/Cata/cataSTA10/SD/co_cham_no.py index 43071cd9..76496815 100644 --- a/Aster/Cata/cataSTA10/SD/co_cham_no.py +++ b/Aster/Cata/cataSTA10/SD/co_cham_no.py @@ -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')) diff --git a/Aster/Cata/cataSTA10/SD/co_char_meca.py b/Aster/Cata/cataSTA10/SD/co_char_meca.py index fbfc2ee9..6b347689 100644 --- a/Aster/Cata/cataSTA10/SD/co_char_meca.py +++ b/Aster/Cata/cataSTA10/SD/co_char_meca.py @@ -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 index 00000000..a5f4f495 --- /dev/null +++ b/Aster/Cata/cataSTA10/SD/co_contact.py @@ -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 diff --git a/Aster/Cata/cataSTA10/SD/co_fonction.py b/Aster/Cata/cataSTA10/SD/co_fonction.py index 256a3a0c..5f6f8ebe 100644 --- a/Aster/Cata/cataSTA10/SD/co_fonction.py +++ b/Aster/Cata/cataSTA10/SD/co_fonction.py @@ -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)] diff --git a/Aster/Cata/cataSTA10/SD/co_macr_elem_dyna.py b/Aster/Cata/cataSTA10/SD/co_macr_elem_dyna.py index 01fc194e..80b3dc05 100644 --- a/Aster/Cata/cataSTA10/SD/co_macr_elem_dyna.py +++ b/Aster/Cata/cataSTA10/SD/co_macr_elem_dyna.py @@ -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 diff --git a/Aster/Cata/cataSTA10/SD/co_matr_asse_gene.py b/Aster/Cata/cataSTA10/SD/co_matr_asse_gene.py index 70f611b1..459859ab 100644 --- a/Aster/Cata/cataSTA10/SD/co_matr_asse_gene.py +++ b/Aster/Cata/cataSTA10/SD/co_matr_asse_gene.py @@ -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 diff --git a/Aster/Cata/cataSTA10/SD/co_resultat.py b/Aster/Cata/cataSTA10/SD/co_resultat.py index 633033b5..e4a6f21e 100644 --- a/Aster/Cata/cataSTA10/SD/co_resultat.py +++ b/Aster/Cata/cataSTA10/SD/co_resultat.py @@ -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 # ====================================================================== diff --git a/Aster/Cata/cataSTA10/SD/co_vect_asse_gene.py b/Aster/Cata/cataSTA10/SD/co_vect_asse_gene.py index b071ca2a..eb9e1cf8 100644 --- a/Aster/Cata/cataSTA10/SD/co_vect_asse_gene.py +++ b/Aster/Cata/cataSTA10/SD/co_vect_asse_gene.py @@ -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 index 1bd2f4d7..00000000 --- a/Aster/Cata/cataSTA10/SD/sd_char_contact.py +++ /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) - - diff --git a/Aster/Cata/cataSTA10/SD/sd_char_meca.py b/Aster/Cata/cataSTA10/SD/sd_char_meca.py index 7e5a1dc5..63e848c3 100644 --- a/Aster/Cata/cataSTA10/SD/sd_char_meca.py +++ b/Aster/Cata/cataSTA10/SD/sd_char_meca.py @@ -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, )) diff --git a/Aster/Cata/cataSTA10/SD/sd_compor.py b/Aster/Cata/cataSTA10/SD/sd_compor.py index b283ec73..df847589 100644 --- a/Aster/Cata/cataSTA10/SD/sd_compor.py +++ b/Aster/Cata/cataSTA10/SD/sd_compor.py @@ -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 index 00000000..ae9c94a9 --- /dev/null +++ b/Aster/Cata/cataSTA10/SD/sd_contact.py @@ -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 index 00000000..340ca74f --- /dev/null +++ b/Aster/Cata/cataSTA10/SD/sd_corresp_2_mailla.py @@ -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()) + + + diff --git a/Aster/Cata/cataSTA10/SD/sd_resultat.py b/Aster/Cata/cataSTA10/SD/sd_resultat.py index e0475607..922c9a58 100644 --- a/Aster/Cata/cataSTA10/SD/sd_resultat.py +++ b/Aster/Cata/cataSTA10/SD/sd_resultat.py @@ -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),)) diff --git a/Aster/Cata/cataSTA10/SD/sd_stoc_morse.py b/Aster/Cata/cataSTA10/SD/sd_stoc_morse.py index a262080e..1e803df5 100644 --- a/Aster/Cata/cataSTA10/SD/sd_stoc_morse.py +++ b/Aster/Cata/cataSTA10/SD/sd_stoc_morse.py @@ -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() diff --git a/Aster/Cata/cataSTA10/SD/sd_util.py b/Aster/Cata/cataSTA10/SD/sd_util.py index 19a3d156..a4f290be 100644 --- a/Aster/Cata/cataSTA10/SD/sd_util.py +++ b/Aster/Cata/cataSTA10/SD/sd_util.py @@ -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=''): diff --git a/Aster/Cata/cataSTA10/SD/sd_xfem.py b/Aster/Cata/cataSTA10/SD/sd_xfem.py index 7afd93bb..a4af5cdd 100644 --- a/Aster/Cata/cataSTA10/SD/sd_xfem.py +++ b/Aster/Cata/cataSTA10/SD/sd_xfem.py @@ -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() -- 2.39.2